BIOS top-swap / boot block protection not set (chipsec common.bios_ts)¶
BIOS Interface Lock ve Top-Swap bit'leri unlock bırakıldığında, ring-0 software Top-Swap (TS) bit'ini flip edip CPU'nun ilk instruction'larını attacker-controlled bir boot block'tan fetch etmesini sağlayabilir; bu da boot'un en erken aşamasını hijack eder.
Mechanism¶
Why it works — Top-Swap redirects the reset vector, and nothing locks it
Intel platformlarında Top-Swap, firmware'in boot block'u (4 GB address space'in en tepesine map'lenen, reset vector'ü içeren kod) bir power failure boyunca güvenli şekilde update etmesini sağlayan bir chipset feature'ıdır. Chipset'in Backed-Up Control register'ındaki (BUC.TS) Top-Swap (TS) bit'i set olduğunda, chipset top boot-block bölgesini alternatif (backup) bir block ile swap'ler; böylece CPU reset-vector kodunu normal konum yerine swap'lenen konumdan fetch eder.
Bu recovery için tasarlanmıştır, ama kılık değiştirmiş bir security primitive'idir: BUC.TS'i kontrol eden, reset vector'ün hangi block'tan geleceğini de kontrol eder. Onu koruyan invariant BIOS Interface Lock-Down'dır — GCS.BILD (BIOS Interface Lock-Down) set olmalı ki Top-Swap configuration reset'e kadar read-only olsun, ve BC.TSS (Top Swap Status) state'i yansıtsın/lock'lasın. Eğer BILD clear bırakılırsa, ring-0 kod BUC.TS'i istediği gibi toggle edebilir, reset vector'ü swap bölgesinde hazırladığı bir boot block'a yönlendirebilir (genellikle korumalı boot block SPI write-protect range'i tarafından kapsanmaz) ve bir sonraki reset'te platform, güvenilir bir boot block'a bağlı olan Boot Guard / Secure Boot ölçümlerinden önce attacker kodunu boot eder.
CHIPSEC'in common.bios_ts module'ü tam olarak bu bit'leri denetler: GCS[BILD], BC[TSS] ve BUC[TS]'i okuyarak "BIOS Interface Lock'unu, Top Swap Mode dahil, kontrol eder" ve BIOS interface'inin lock down edilip edilmediğini raporlar. Unlock bir configuration, bu atom'un tanımladığı misconfiguration'dır.
Walkthrough¶
Dedicated CHIPSEC module'ünü çalıştır:
Module üç field okur ve lock state'ini raporlar:
[*] BIOS Interface Lock-Down (BILD) : 0 # GCS bit 0
[*] Top Swap Status (TSS) : 0 # BIOS_CNTL / BC bit
[*] Top Swap (TS) : 0 # BUC bit 0
[-] FAILED: BIOS Interface is not locked (including Top Swap Mode)
(Tam label metni CHIPSEC versiyonuna göre değişir; load-bearing olan fact'ler üç bit ismi ve PASS/FAIL verdict'idir.)
- PASSED —
GCS.BILDset'tir, dolayısıyla Top-Swap ve BIOS interface reset'e kadar lock'lıdır; ring-0BUC.TS'i flip edemez. - FAILED —
BILDclear'dır;BUC.TSOS'tan writable'dır, dolayısıyla reset vector bir backup boot block'a yeniden yönlendirilebilir.
Kavramsal abuse path (yalnızca defensive anlama amaçlı):
1. Stage a malicious boot block in the alternate (swap) region of SPI flash
(often outside the SMM-protected write range).
2. With BILD clear, set BUC.TS = 1 from ring 0.
3. Trigger a reset. The chipset serves the reset vector from the swapped block.
4. Attacker code runs at the very start of boot, before measured/verified boot
stages that assume the boot block is authentic.
Defensive use only
Bu, denetlenebilir bir misconfiguration'ı belgeler. Amaç bit'leri tespit edip lock'lamaktır, production sistemlerde boot redirection'ı silahlandırmak değil.
Detection¶
- CHIPSEC:
chipsec_main -m common.bios_ts— FAILED bir sonuç, BIOS Interface Lock-Down / Top-Swap'in lock'lı olmadığı anlamına gelir. - Bunu
common.bios_wp(BIOS_CNTLBLE/SMM_BWP),common.spi_descvecommon.spi_lockile eşle ki swap bölgesinin gerçekten write-protect edildiğini doğrulayasın — top-swap abuse'u genellikle backup block'un writable olmasına bağlıdır. - Her firmware update'ten sonra yeniden denetle; OEM'ler bazen yeni BIOS revision'larında lock'u regress ettirir.
Mitigation¶
Set BILD so Top-Swap config is read-only until reset
- Firmware, boot'un geç bir aşamasında
GCS.BILD'i (BIOS Interface Lock-Down) set etmelidir kiBUC.TSve Top-Swap configuration bir sonraki reset'e kadar immutable olsun. - SPI flash'te hem primary hem backup boot block'u write-protect et (protected range'ler +
BIOS_CNTLSMM_BWP/BLE) ki swap'lenmiş bir block stage edilemesin. - Boot block'u Intel Boot Guard measured/verified boot'a sabitle ki swap'lenmiş bir block bile reject edilsin.
- Shipping configuration bunları clear bırakıyorsa, bu lock'ları etkinleştiren OEM BIOS update'lerini uygula.
See also: SPI flash BIOS write-protection misconfig, S3 boot-script tampering, Boot Guard TOCTOU vulnerability.