Använda vitlistor för att förbättra Firmware säkerhet

Firmware har blivit mer populärt i världen av datasäkerhetsforskning. Attacker som fungerar på firmwarenivå kan vara svåra att upptäcka och har potential att fortsätta även i återställningsscenarier med bara metall. Denna typ av hack har dokumenterats väl genom undersökningar av HackingTeam och Vault7 exploits.

lyckligtvis finns det metoder för att upptäcka och försvara sig mot sådana attacker. Firmwarebaserade attacker försöker vanligtvis lägga till eller ändra systemmodulmoduler lagrade i NVRAM. Verktyg som tillhandahålls av Open source CHIPSEC projektet kan användas för att generera och verifiera hashar av dessa moduler, så att användarna kan upptäcka obehöriga ändringar.

CHIPSEC CHISPEC, som infördes i mars 2014, är ett ramverk för att analysera plattformsnivå säkerhet av hårdvara, enheter, System firmware, låg nivå skyddsmekanismer, och konfigurationen av olika plattformskomponenter. Den innehåller en uppsättning moduler, inklusive enkla tester för hårdvaruskydd och korrekt konfiguration, tester för sårbarheter i firmware och plattformskomponenter, säkerhetsbedömning och fuzzing verktyg för olika plattformsenheter och gränssnitt, och verktyg förvärva kritiska firmware och enhet artefakter.

vitlistmodulen (verktyg.uefi.whitelist) använder CHIPSEC för att extrahera en lista över EFI-körbara filer från en binär firmwarebild och bygger en lista över “förväntade” körbara filer och motsvarande hashar (.JSON-fil) som ska användas senare för jämförelse. Dokumentation finns som en del av modulen källkod på github, och i CHIPSEC manual.

processen förutsätter att du börjar från en “känd bra firmwarebild”, helst en produktionsversion av firmware som tillhandahålls av tillverkaren, och att du har använt CHIPSEC för att söka efter kända problem innan du av misstag vitlistar något otäckt. Detta exempel använder UEFI-firmware med öppen källkod för MinnowBoard-piggvar (release 0.97), för bättre synlighet i processen.

följande CHIPSEC-kommandorad skapar en vitlista med namnet efilist.json baserat på en “känd bra bild” (platform_fw.bin):

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

CHIPSEC i Ubuntu Linux

tillämpa denna process till x64″ release “och” debug ” bilder av MinnowBoard piggvar 0.97 firmware ger följande vitlistor:

  • MNW2MAX1.X64. 0097.D01. 1709211100.bin (UEFI x64 firmware, felsökningsläge) – X64D97_whitelist.json
  • MNW2MAX1.X64. 0097.R01. 1709211052.bin (UEFI x64 firmware, släppläge) – X64R97_whitelist.json

(övning för läsaren: ladda ner firmwarebilderna, kör CHIPSEC, se om din vitlista matchar)

det är viktigt att notera att den resulterande JSON-vitlistfilen inte är en rättvis hash av binärfilen, den innehåller hashar av firmwarebildens körbara moduler. CHIPSEC har förmågan att skanna och katalogisera enskilda firmwarekomponenter, som kan användas för att vitlista eller svartlista specifika körbara filer.

inlägg vitlistor

om du var en systemtillverkare, du kan publicera dessa vitlistor för kundverifiering. Det är dock bäst att signera filer för verifieringsändamål. För att säkerställa att vitlistan som erhållits av en slutanvändare är den officiella vitlistan kan den signeras med GPG med en fristående signatur:

gpg –detach-sign <file>

dessutom bör användare autentisera certifikat för ett välkänt domännamn för systemtillverkaren när de levereras via HTTPS. Det är också tillrådligt för IT-organisationer att underteckna internt genererade vitlistor för att förhindra att obehöriga listor används i revisioner.

kontrollera vitlistor

om en fristående signatur är tillgänglig kan GPG användas för att verifiera vitlistfilen:

gpg –verify <file>

när vitlistans äkthet har verifierats måste användaren ta en bild av plattformens firmware med CHIPSEC. Denna kommandorad använde kommandot ‘dump’ för att generera user_fw.bin:

python chipsec_util.py spi dump user_fw.bin

nu kan CHIPSEC användas för att verifiera plattformens firmwarebild mot den tillhörande vitlistan. Detta exempel skulle verifiera mot x64″ release “- bilden för Minnowboard piggvar 0.97:

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

vid denna tidpunkt kommer CHIPSEC att returnera en” godkänd “eller” varning ” – status. Om testet returnerar “passerat” hittades alla hashar i vitlistan och de matchar förväntade värden. Om testet returnerar” varning”, var då något är annorlunda. Observera att en” varning ” mot inte omedelbart indikerar ett säkerhetshot (ex: användaren kan ha uppdaterat till tillverkarens senaste firmware), men det kräver undersökning för att se till att den ändrade firmwarebilden inte beror på ett försök till attack.

begränsningar

med hjälp av verktyg som CHIPSEC kan detta förbättra säkerheten men inget system kan vara helt säkert, och dessa procedurer kan inte försvara sig mot alla möjliga attacker. Det finns ett antal begränsningar att tänka på vid tolkning av vitlistresultat:

  • det kan finnas anpassade eller proprietära bildförpackningsmetoder som CHIPSEC inte förstår. Detta kan leda till att vissa moduler utesluts, så motsvarande ändringar kan missas under en vitlista jämförelse.
  • programvara som körs på ett redan komprometterat system kan luras. Om ett system redan äventyras kanske CHIPSEC och liknande programvara inte ger tillförlitliga indikatorer.

sammanfattning

möjligheten för CHIPSEC att generera vitlistor ger en metod för att validera försörjningskedjan för firmware. Tillverkare kan utnyttja dessa verktyg för att hjälpa användare att verifiera officiella firmware-utgåvor, och IT-administratörer kan generera vitlistor för interna revisioner baserade på betrodda bilder.

Lämna ett svar

Din e-postadress kommer inte publiceras.