mirror of
https://github.com/chipsec/chipsec
synced 2026-06-08 13:31:00 +00:00
7
Vulnerabilities and CHIPSEC Modules
johnloucaides edited this page 2017-04-11 14:55:49 -07:00
When checking for known vulnerabilities, CHIPSEC test modules return standard values that can be interpreted as follows:
| Result | Meaning |
|---|---|
| PASSED | We have detected the mitigation to a known vulnerability |
| FAILED | We have detected a known vulnerability |
| WARNING | We have detected something that could be a vulnerability but manual analysis is required to confirm. (Inconclusive) |
| SKIPPED | N/A because either we did not port the test to this platform or because it does not apply to the system at all |
| ERROR | Something went wrong in the execution of CHIPSEC |
Known vulnerabilities can be mapped to CHIPSEC modules as follows:
| Attack Surface / Vector | Vulnerability Description | CHIPSEC Module | Example |
|---|---|---|---|
| Firmware protections in ROM | |||
| SMI event configuration is not locked | common.bios_smi | ||
| SPI flash descriptor is not protected | common.spi_desc | ||
| SPI controller security override is enabled | common.spi_fdopss | ||
| SPI flash controller is not locked | common.spi_lock | ||
| Device-specific SPI flash protection is not used | chipsec_util spi write (manual analysis) | ||
| SMM BIOS write protection is not correctly used | common.bios_wp | ||
| Flash protected ranges do not protect bios region | common.bios_wp | ||
| BIOS interface is not locked | common.bios_ts | ||
| SMI configuration is not locked (SMI race condition) | common.smi_lock | ||
| Runtime protection of SMRAM | |||
| Compatability SMRAM is not locked | common.smm | ||
| SMM cache attack | common.smrr | ||
| Memory remapping vulnerability in SMM protection | remap | ||
| DMA protections of SMRAM are not in use | smm_dma | ||
| Graphics aperture redirection of SMRAM | chipsec_util memconfig remap | ||
| Memory sinkhole vulnerability | tools.cpu.sinkhole | ||
| Secure boot | Incorrect protection of secure boot configuration | ||
| Root certificate | common.bios_wp, common.secureboot.variables | ||
| Key exchange keys and whitelist/blacklist | common.secureboot.variables | ||
| Controls in setup variable (CSM enable/disable, image verification policies, secure boot enable/disable, clear/restore keys) | chipsec_util uefi var-find Setup | ||
| TE header confusion | tools.secureboot.te | ||
| UEFI NVRAM is not write protected | common.bios_wp | ||
| Insecure handling of secure boot disable | chipsec_util uefi var-list | ||
| Persistent firmware configuration | |||
| Secure boot configuration is stored in unprotected variable | common.secureboot.variables, chipsec_util uefi var-list | ||
| Variable permissions are not set according to specification | common.uefi.access_uefispec | ||
| Sensitive data (like passwords) are stored in uefi variables | chipsec_util uefi var-list (manual analysis) | ||
| Firmware doesn't sanitize pointers/addresses stored in variables | chipsec_util uefi var-list (manual analysis) | ||
| Firmware hangs on invalid variable content | chipsec_util uefi var-write, chipsec_util uefi var-delete (manual analysis) | ||
| Hardware configuration stored in unprotected variables | chipsec_util uefi var-list (manual analysis) | ||
| Re-creating variables with less restrictive permissions | chipsec_util uefi var-write (manual analysis) | ||
| Variable NVRAM overflow | chipsec_util uefi var-write (manual analysis) | ||
| Critical configuration is stored in unprotected CMOS | chipsec_util cmos, common.rtclock | ||
| Platform hardware configuration | |||
| Boot block top-swap mode is not locked | common.bios_ts | ||
| Architectural features not locked | common.ia32cfg | ||
| Memory mamp is not locked | memconfig | ||
| IOMMU usage | chipsec_util iommu | ||
| Memory remapping is not locked | remap | ||
| Runtime firmware (eg. SMI handlers) | |||
| SMI handlers use pointers/addresses from OS without validation | tools.smm.smm_ptr | ||
| Legacy SMI handlers call legacy BIOS outside SMRAM | |||
| INT15 in legacy SMI handlers | |||
| UEFI SMI handlers call UEFI services outside SMRAM | |||
| Malicious CommBuffer pointer and contents | |||
| Race condition during SMI handler | |||
| Authenticated variables SMI handler is not implemented | chipsec_util uefi var-write | ||
| SmmRuntime vulnerability | tools.uefi.blacklist | ||
| Boot time firmware | |||
| Software vulnerabilities when parsing, decompressing, and loading data from ROM | |||
| Software vulnerabilities in implementation of digital signature verification | |||
| Pointers stored in UEFI variables and used during boot | chipsec_util uefi var-write | ||
| Loading unsigned PCI option ROMs | chipsec_util pci xrom | ||
| Boot hangs due to error condition (eg. ASSERT) | |||
| Power state transitions (eg. resume from sleep) | |||
| Insufficient protection of S3 boot script table | common.uefi.s3bootscript, tools.uefi.s3script_modify | ||
| Dispatch opcodes in S3 boot script call functions in unprotected memory | common.uefi.s3bootscript, tools.uefi.s3script_modify | ||
| S3 boot script interpreter stored in unprotected memory | |||
| Pointer to S3 boot script table in unprotected UEFI variable | common.uefi.s3bootscript, tools.uefi.s3script_modify | ||
| Critical setting not recorded in S3 boot script table | chipsec_util uefi s3bootscript (manual analysis) | ||
| OS waking vector in ACPI tables can be modified | chipsec_util acpi dump (manual analysis) | ||
| Using pointers on S3 resume stored in unprotected UEFI variables | chipsec_util uefi var-write | ||
| Firmware update | |||
| Software vulnerabilities when parsing firmware updates | |||
| Unauthenticated firmware updates | |||
| Runtime firmware update that can be interrupted | |||
| Signature not checked on capsule update executable | |||
| Network interfaces | |||
| Software vulnerabilities when handling messages over network interfaces | |||
| Booting unauthenticated firmware over unprotected network interfaces | |||
| Misc | |||
| BIOS keyboard buffer is not cleared during boot | common.bios_kbrd_buffer | ||
| DMA attack from devices during firmware execution |