Skip to content

SMI handlers / SMI configuration not locked (chipsec common.bios_smi)

Chipset'in SMI-enable yapılandırması kilitsiz bırakılırsa, ring-0 software Global SMI Enable'ı temizleyerek tüm SMI'ları devre dışı bırakabilir — SMM_BWP ile uygulanan BIOS write protection gibi SMM-tabanlı korumaları etkisiz kılar.

Mechanism

SMM yalnızca kilitsiz bir SMI config'in kapatamayacağını savunabilir

Birçok platform koruması, SMI'ların güvenilir SMM handler'larına ateşlenmesine dayanır — en önemlisi, flash enable bit'ine yapılan bir yazmanın bir SMI (BLE) tetiklediği ve SMM'in policy'yi uyguladığı (SMM_BWP/EISS) BIOS write-protection şemasıdır. Chipset şunları açığa çıkarır:

  • SMI_EN içindeki GBL_SMI_EN — chipset SMI kaynakları için global enable.
  • SMI_LOCK (örn. GEN_PMCON_1/General PM Config'in bit 4'ü) — bir kez set edildiğinde, GBL_SMI_EN (ve TCO SMI config) artık değiştirilemez.

Firmware SMI_LOCK'u hiç set etmezse, ring-0 kod SMI_EN[GBL_SMI_EN]'i temizleyerek tüm chipset SMI'larını devre dışı bırakabilir. SMI-güdümlü BIOS write-protection uygulaması o zaman hiç çalışmaz, dolayısıyla flash yazmaları korumasız ilerler. Bozulan invariant: "OS, SMM korumalarını uygulayan SMI'ları kapatamaz." CHIPSEC'in common.bios_smi'si (namıdiğer SMI lock), TCO SMI'yi, Global SMI Enable'ı ve SMI lock durumunu doğrular.

Walkthrough

# Check that SMI events config (Global SMI Enable / SMI Lock / TCO) is locked.
sudo python chipsec_main.py -m common.bios_smi

Yorumlama:

[+] SMI events global configuration is locked (SMI Lock)   -> PASS
[-] SMI Lock is not set                                    -> FAIL

Bir FAIL, ring-0 software'in GBL_SMI_EN'i temizleyebileceği anlamına gelir. Kilitsiz bir BIOS_CNTL (BLE uygulanmıyor) ile birleştiğinde, bu saldırganın hiç SMI ateşlenmeden BIOSWE'yi flip'leyip SPI flash'a yazmasına imkân verir — bkz. SPI flash BIOS write-protection misconfig.

Detection

  • SMI Lock'un set edilmediğini raporlayan CHIPSEC common.bios_smi.
  • Chipset lock durumunu içeren firmware attestation'ı.

Mitigation

  • Firmware, boot'un erken aşamasında SMI_LOCK'u set etmeli (ve TCO SMI'yi kilitlemeli); bunu yapan satıcı güncellemelerini uygulayın.
  • BLE/SMM_BWP uygulamasıyla ve SPI flash lockdown ile eşleştirin, böylece bir kontrol zayıf olsa bile korumalar bypass edilemez.

References