Používání whitelistů ke zlepšení zabezpečení firmwaru

Firmware se stal populárnějším ve světě výzkumu počítačové bezpečnosti. Útoky pracující na úrovni firmwaru mohou být obtížné odhalit a mají potenciál přetrvávat i ve scénářích obnovy holých kovů. Tento typ hacku byl dobře zdokumentován vyšetřováním exploitů HackingTeam a Vault7.

naštěstí existují metody detekce a obrany proti takovým útokům. Útoky založené na firmwaru se obvykle pokoušejí přidat nebo upravit moduly firmwaru systému uložené v NVRAM. Nástroje poskytované projektem open source CHIPSEC lze použít ke generování a ověřování hashů těchto modulů, takže uživatelé mohou detekovat neoprávněné změny.

CHIPSECCHISPEC, představil v Březnu 2014, je rámec pro analýzu platformu zabezpečení na úrovni hardware, zařízení, systém, firmware, nízké úrovni mechanismů ochrany, a konfiguraci jednotlivých komponent platformy. Obsahuje řadu modulů, zahrnující jednoduché testy pro hardware ochrana a správné konfigurace, testy, chyby ve firmwaru a platformy komponenty, posuzování bezpečnosti a fuzzing nástroje pro různé platformy zařízení a rozhraní a nástroje pro získávání kritických firmware a zařízení artefakty.

whitelist modul (nástroje.uefi.whitelist) používá CHIPSEC k extrahování seznamu spustitelných souborů EFI z binárního firmwaru a vytváří seznam “očekávaných” spustitelných souborů a odpovídajících hashů (.JSON soubor), které mají být použity později pro srovnání. Dokumentace je k dispozici jako součást zdrojového kódu modulu na GitHubu a v příručce CHIPSEC.

proces předpokládá, že začínáš od “známé dobré firmware image”, nejlépe výrobní verzi firmwaru poskytované výrobcem, a že jste použili CHIPSEC skenování pro známé problémy dříve, než náhodně whitelisting něco ošklivého. Tento příklad používá firmware UEFI s otevřeným zdrojovým kódem pro turbodmychadlo MinnowBoard (vydání 0.97) pro lepší viditelnost procesu.

následující příkazový řádek CHIPSEC vytvoří whitelist s názvem efilist.json založený na “známém dobrém obrazu” (platform_fw.bin):

python chipsec_main.py -i -n -m tools.uefi.whitelist -a generate,efilist.json,platform_fw.bin

CHIPSEC v Ubuntu Linux

Použití tohoto procesu na x64 “uvolnění” a “debug” obrazy MinnowBoard Pakambaly velké 0.97 firmware vyrábí tyto whitelisty:

  • MNW2MAX1.X64. 0097.D01. 1709211100.bin (firmware UEFI x64, režim ladění) – X64D97_whitelist.json
  • MNW2MAX1.X64. 0097.R01. 1709211052.bin (firmware UEFI x64, režim vydání) – X64R97_whitelist.json

(cvičení pro čtenáře: ke stažení obrazy firmwaru, spusťte CHIPSEC, jestli váš whitelist zápasů)

je důležité si uvědomit, že výsledný JSON soubor whitelist není jen hash binární soubor obsahuje hodnoty hash firmware image je spustitelný moduly. CHIPSEC má schopnost skenovat a katalogizovat jednotlivé komponenty firmwaru, které lze použít k whitelist nebo blacklist konkrétní spustitelné soubory.

Vysílání Whitelisty

Pokud jste výrobce systému, můžete publikovat tyto whitelisty pro ověření zákazníka. Nejlepší je však podepisovat soubory pro účely ověření. Aby se zajistilo, že whitelist získané koncový uživatel je oficiální whitelist, může být podepsána s GPG pomocí samostatná budova podpis:

gpg –detach-sign <file>

Navíc, uživatelé by měli ověřovat certifikáty pro známý název domény pro systém výrobce při dodání přes HTTPS. Je také vhodné, aby IT organizace podepisovaly interně generované Whitelisty, aby se zabránilo neoprávněnému použití seznamů při auditech.

kontrola whitelistů

pokud je k dispozici samostatný podpis, lze GPG použít k ověření souboru whitelistů:

gpg –verify <file>

po ověření pravosti whitelistu musí uživatel pořídit obrázek firmwaru platformy pomocí CHIPSEC. Tento příkazový řádek použil příkaz “dump” ke generování user_fw.bin:

python chipsec_util.py spi dump user_fw.bin

nyní lze CHIPSEC použít k ověření obrazu firmwaru platformy proti přidruženému whitelistu. Tento příklad by ověřil obraz x64 “release” pro turbodmychadlo Minnowboard 0.97:

python chipsec_main.py -i -n -m tools.uefi.whitelist -a check,X64REL_whitelist.json,user_fw.bin

v tomto okamžiku CHIPSEC vrátí stav” prošel “nebo” varování”. Pokud test vrátí “prošel”, všechny hashe byly nalezeny v whitelist a odpovídají očekávaným hodnotám. V případě, že test vrátí “varování”, bylo pak něco jiného. Všimněte si, že “VAROVÁNÍ” proti nemusí okamžitě znamenat bezpečnostní hrozbu (ex: uživatel může aktualizovat výrobce nejnovější firmware), ale to vyžaduje vyšetřování, aby se ujistěte se, že změněný firmware image není kvůli pokusu o útok.

Omezení

Pomocí nástrojů, jako je CHIPSEC to může zlepšit bezpečnost, ale žádný systém nemůže být absolutně bezpečné, a tyto postupy nemohou bránit proti všem možným útokům. Při interpretaci výsledků whitelist je třeba zvážit řadu omezení:

  • mohou existovat přizpůsobené nebo proprietární metody balení obrázků, kterým CHIPSEC nerozumí. To by mohlo vést k tomu, že některé moduly budou vyloučeny, takže během srovnání whitelistů mohou chybět odpovídající změny.
  • Software běžící na již ohroženém systému může být oklamán. Pokud je systém již ohrožen, CHIPSEC a podobný software nemusí produkovat spolehlivé ukazatele.

shrnutí

schopnost CHIPSEC generovat Whitelisty poskytuje metodu pro ověření dodavatelského řetězce firmwaru. Výrobci mohou využít tyto nástroje, které pomáhají uživatelům ověřit, oficiální vydání firmwaru, a správci IT mohou vytvářet whitelisty pro interní audity na základě důvěryhodných obrázky.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.