Nicolas Iooss 1aff1f565e Add configuration of Intel 440FX PCI and Memory Controller registers
When testing chipsec in a QEMU virtual machine (x86-64 CPU with default
machine), it fails:

    $ ./chipsec_main.py
    ...
    [-] ERROR: Chipset requires a supported PCH to be loaded. Unknown PCH: VID = 0xFFFF, DID = 0xFFFF, RID = 0xFF
    [!] WARNING: *******************************************************************
    [!] WARNING: * Unknown platform!
    [!] WARNING: * Platform dependent functionality will likely be incorrect
    [!] WARNING: * Error Message: "Unknown PCH: VID = 0xFFFF, DID = 0xFFFF, RID = 0xFF"
    [!] WARNING: *******************************************************************
    [-] ERROR: To run anyways please use -i command-line option

Enumerating the PCI devices gives:

    $ ./chipsec_util.py -i pci enumerate
    ...
    [CHIPSEC] Enumerating available PCIe devices...
    BDF     | VID:DID   | Vendor                       | Device
    -------------------------------------------------------------------------
    00:00.0 | 8086:1237 | Intel Corporation            | 440FX - 82441FX PMC [Natoma]
    00:01.0 | 8086:7000 | Intel Corporation            | 82371SB PIIX3 ISA [Natoma/Triton II]
    00:01.1 | 8086:7010 | Intel Corporation            | 82371SB PIIX3 IDE [Natoma/Triton II]
    00:01.3 | 8086:7113 | Intel Corporation            | 82371AB/EB/MB PIIX4 ACPI
    00:02.0 | 1234:1111 |                              |
    00:03.0 | 1AF4:1000 | Red Hat, Inc.                | Virtio network device

This virtual machine simulates a i440FX PMC (and does not provide a PCH).
This is also described in QEMU machines list:

    $ qemu-system-x86_64 -M help
    ...
    pc                   Standard PC (i440FX + PIIX, 1996)

Add a configuration file in chipsec to support such a system. With it,
chipsec starts successfully:

    $ ./chipsec_main.py
    [CHIPSEC] API mode: using CHIPSEC kernel module API
    [!]       Unknown PCH: VID = 0xFFFF, DID = 0xFFFF, RID = 0xFF; Using Default.
    [!]            Results from this system may be incorrect.
    [CHIPSEC] OS      : Linux 5.7.0-kali1-amd64 #1 SMP Debian 5.7.6-1kali2 (2020-07-01) x86_64
    [CHIPSEC] Python  : 3.8.4 (64-bit)
    [CHIPSEC] Helper  : LinuxHelper (None)
    [CHIPSEC] Platform: Intel 440FX PMC
    [CHIPSEC]      VID: 8086
    [CHIPSEC]      DID: 1237
    [CHIPSEC]      RID: 02
    [CHIPSEC] PCH     : Default PCH
    [CHIPSEC]      VID: FFFF
    [CHIPSEC]      DID: FFFF
    [CHIPSEC]      RID: FF
    ...

Moreover, when booting a VM with `qemu-system-x86_64 -M pc,smm=on` it is
possible to successfully read the SMRAMC register:

    $ ./chipsec_util.py reg read PCI0.0.0_SMRAMC
    ...
    [CHIPSEC] Executing command 'reg' with args ['read', 'PCI0.0.0_SMRAMC']

    [CHIPSEC] PCI0.0.0_SMRAMC=0xA
    [*] PCI0.0.0_SMRAMC = 0x0A << System Management RAM Control (b:d.f 00:00.0 + 0x72)
        [00] C_BASE_SEG       = 2 << SMRAM Base Segment = 010b
        [03] G_SMRAME         = 1 << SMRAM Enabled
        [04] D_LCK            = 0 << SMRAM Locked
        [05] D_CLS            = 0 << SMRAM Closed
        [06] D_OPEN           = 0 << SMRAM Open

Signed-off-by: Nicolas Iooss <nicolas.iooss_git@polytechnique.org>
2022-09-26 08:40:57 -07:00
2022-05-17 15:19:30 -07:00
2022-08-26 18:12:42 -07:00
2022-05-18 13:14:24 -07:00
2022-08-26 18:12:42 -07:00
2016-06-30 15:34:21 -07:00
2014-03-06 13:57:11 -08:00
2022-07-25 17:05:40 -07:00
2022-02-09 16:38:01 -08:00

CHIPSEC: Platform Security Assessment Framework

Build Status

CHIPSEC is a framework for analyzing the security of PC platforms including hardware, system firmware (BIOS/UEFI), and platform components. It includes a security test suite, tools for accessing various low level interfaces, and forensic capabilities. It can be run on Windows, Linux, Mac OS X and UEFI shell. Instructions for installing and using CHIPSEC can be found in the manual.

NOTE: This software is for security testing purposes. Use at your own risk. Read WARNING.txt before using.

First version of CHIPSEC was released in March 2014: Announcement at CanSecWest 2014

Recent presentation on how to use CHIPSEC to find vulnerabilities in firmware, hypervisors and hardware configuration, explore low level system assets and even detect firmware implants: Exploring Your System Deeper

Release Convention

  • CHIPSEC uses a major.minor.patch release version number
  • Changes to the arguments or calling conventions will be held for a minor version update

Projects That Include CHIPSEC

Contact Us

For any questions or suggestions please contact us at: chipsec@intel.com

Mailing list:

Twitter:

For AMD related questions or suggestions please contact Gabriel Kerneis at: Gabriel.Kerneis@ssi.gouv.fr

S
Description
Automated archival mirror of github.com/chipsec/chipsec
Readme GPL-2.0 130 MiB
Languages
Python 90.6%
C 7.6%
Assembly 1.6%
Batchfile 0.1%