Skip to content

SMRAM not locked (D_LCK / SMRAMC)

Firmware SMRAMC register'ındaki D_LCK bit'ini hiç set etmezse, compatibility SMRAM (CSEG) decode'u ring 0'dan yeniden açılabilir; bu da CPU SMM'de değilken OS'un SMM belleğini okuyup yazmasına imkân verir.

Mechanism

Kilitsiz bir decode kontrolü SMM belleğini açığa çıkarır

Compatibility SMRAM (CSEG) decode ve erişimi SMRAMC register'ı üzerinden yapılandırılır. İlgili iki bit:

  • D_OPEN: set edildiğinde, SMRAM SMM dışında bile decode edilir/erişilebilir.
  • D_LCK: set edildiğinde, SMRAMC yapılandırmasını kilitlerD_OPEN artık değiştirilemez ve SMRAM korumalı kalır.

BIOS'un, decode dondurulmuş şekilde kapalı kalsın diye D_LCK'yi erken set etmesi beklenir. Etmezse, ring-0 software D_OPEN'ı kendisi set edip ardından CPU normal mode'dayken SMRAM bölgesini okuyup yazabilir — SMM secret'larını doğrudan okuyarak ya da bir SMM rootkit yerleştirerek. Bozulan invariant: "SMRAM yalnızca SMM'de yürütülürken erişilebilirdir." Bu yapılandırma sorunu 2006 tarihli Security Issues Related to Pentium System Management Mode makalesine dayanır. CHIPSEC'in common.smm modülü SMRAMC'yi okur ve D_LCK'nin set edildiğini kontrol eder.

Walkthrough

# CHIPSEC checks SMRAMC[D_LCK].
sudo python chipsec_main.py -m common.smm

Yorumlama:

[+] D_LCK is set, SMRAM is locked              -> PASS
[-] D_LCK is not set; SMRAM can be accessed
    even when the CPU is not in SMM            -> FAIL

FAIL veren bir platformda kavramsal istismar (savunma amaçlı):

1. From ring 0, set SMRAMC[D_OPEN] (D_LCK was never set, so this is allowed).
2. SMRAM (CSEG) now decodes in normal mode -> read SMM code/data or write it.

Kilitsiz bir platformda beklenen sonuç: OS'tan keyfi SMRAM okuma/yazma; kilitli bir platformda D_OPEN değiştirilemezdir ve erişim reddedilir.

Detection

  • D_LCK'nin set edilmediğini raporlayan CHIPSEC common.smm.
  • SMRAMC lock durumunu kapsayan firmware attestation'ı.

Mitigation

  • Firmware, boot'un erken aşamasında SMRAMC[D_LCK]'yi set etmelidir; satıcı güncellemelerini uygulayın.
  • Bu yalnızca legacy CSEG'i kilitler; modern TSEG SMRAM ek olarak SMRR ve DMA protection ile korunur — tamamlayıcı kontroller için bkz. SMRR misconfiguration ve SMRAM cache-poisoning.

References