Skip to content

RingHopper-style SMI handler exploitation (NCC Group Insyde SMM)

Insyde sınıfı firmware'lerde SMI-handler bug'larını bulup exploit etmeye yönelik bir metodoloji: untrusted Save State register'ları ve communication buffer pointer'ları validation olmadan dereference edilir, bu da SMRAM'e confused-deputy write'lar verir.

Mechanism

Her SMI-handler input'u attacker-controlled'dır

OS bir software SMI raise ettiğinde, CPU SMM'e girer ve bir dispatcher bir handler'a route eder. O handler argümanlarını iki untrusted kaynaktan okur:

  • Save State register'ları (RDI, RSI, RCX, ...): OS'in SMI'yı tetiklediğinde GPR'larında bulunan değerler. OS bunları serbestçe seçer.
  • O register'lar tarafından referans verilen, SMRAM dışında bulunması gereken paylaşılan communication / command buffer'ları.

NCC Group'un "Stepping Insyde System Management Mode" çalışması, bu input'ların validation öncesinde dereference edildiği beş tekrarlayan Insyde bug pattern'ini sıraladı: unvalidated pointer dereference (FbtsGetWholeBiosRomMap), nested pointer'larda flash-op TOCTOU (SecureFlashFunction), output'u check edilmemiş bir RCX'e yazan dispatcher (KernelT51EcIdel* ile IhisiProtExecuteCommandByPriority), bir RCX adresine doğrudan write-what-where (ReadDefaultSettingsToFactoryCopy) ve bir BIOS Guard update handler'ında attacker-controlled header size'lar üzerinden OOB read. Beşinde de kırılan invariant: "buffer ve her nested pointer için, dereference etmeden önce validate et."

Bunlar CVE-2023-22612/22613/22614/22615/22616 (Insyde) ile eşleşir.

Walkthrough

Public NCC Group writeup'ından damıtılmış defensive metodoloji:

Hunting workflow (per the public research):
1. Extract SMM drivers from firmware (e.g. with UEFITool / efiXplorer).
2. Locate SMI handler registration and the Save State / CommBuffer reads
   (RDI/RSI/RCX dereferences).
3. Check whether each pointer is validated with SmmIsBufferOutsideSmmValid()
   *before* use, and whether nested pointers are re-validated after copy.
4. A handler that writes to an RCX-controlled address, or copies using an
   attacker-controlled size, is a candidate write-what-where into SMRAM.

Beklenen sonuç: admin seviyesindeki bir attacker'ın SMRAM'e yazacak şekilde sürebileceği confused-deputy handler'ların tespiti. Somut offset'ler firmware-specific'tir; burada bunları conceptual olarak ele alın.

Detection

  • Save State / comm buffer pointer'larını validation olmadan dereference eden handler'ları işaretleyen static firmware audit (efiXplorer/CHIPSEC).
  • SMRAM integrity measurement / firmware attestation.

Mitigation

References