Bòt ou fè konfyans Schrödinger a. Intel Boot Gad

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Nou pwopoze desann nan nivo ki ba ankò epi pale sou sekirite nan platfòm òdinatè firmwèr x86-konpatib. Fwa sa a, engredyan prensipal la nan etid la se Intel Boot Guard (pa dwe konfonn ak Intel BIOS Guard!) - yon teknoloji BIOS fè konfyans kenkayri ke yon machann sistèm òdinatè ka pèmanan limen oswa fèmen nan etap pwodiksyon an. Oke, nou deja konnen resèt rechèch la: mens koupe aplikasyon an nan teknoloji sa a pa jeni ranvèse, dekri achitekti li yo, ranpli li ak detay san papye, sezon li ak vektè atak gou ak melanje li. Ann ajoute dife ak yon istwa sou fason yon ensèk klonaj nan pwodiksyon plizyè machann pandan plizyè ane pèmèt yon atakè potansyèl yo sèvi ak teknoloji sa a pou kreye yon routki kache ki pa ka retire (menm pa yon pwogramè) nan sistèm nan.

By wout la, atik la baze sou rapò "On Guard for Rootkits: Intel BootGuard" ki soti nan konferans lan. ZeroNights 2016 ak 29yèm reyinyon DefCon Larisi (tou de prezantasyon yo isit la).

Firmware pou yon platfòm òdinatè ak achitekti Intel 64

Pou kòmanse, ann reponn kesyon an: ki sa ki firmwèr yon platfòm òdinatè modèn ak achitekti Intel 64 la? Natirèlman, UEFI BIOS. Men repons sa a pa pral egzat. Ann pran yon gade nan figi a, ki montre vèsyon an Desktop (laptop) nan achitekti sa a.

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Lyen an se baz la:

  • Processeur (CPU, Central Processing Unit), ki, anplis debaz prensipal yo, gen yon nwayo grafik entegre (pa nan tout modèl) ak yon kontwolè memwa (IMC, Integrated Memory Controller);
  • Chipset (PCH, Platform Controller Hub), ki gen plizyè contrôleur pou kominike avèk aparèy periferik ak jere subsystems. Pami yo se notwa Intel Management Engine (ME), ki gen tou yon firmwèr (Intel ME firmwèr).

Laptops, anplis de sa ki anwo a, mande pou yon kontwolè entegre (ACPI EC, Kontwòl Avanse ak Entèfas Entèfas Entèfas Kontwolè), ki responsab pou operasyon an nan subsistèm pouvwa a, touchpad, klavye, kle Fn (klere ekran, volim son, klavye). ekleraj, elatriye).) ak plis ankò. Epi li tou gen pwòp firmwèr li.

Se konsa, konbinezon an nan firmwèr ki pi wo a se firmwèr platfòm òdinatè a (firmware sistèm), ki estoke sou yon memwa flash SPI komen. Pou itilizatè memwa sa a pa konfonn kote yon moun kouche, sa ki nan memwa sa a divize an rejyon sa yo (jan yo montre nan figi a):

  • UEFI BIOS;
  • ACPI EC firmwèr (yon rejyon separe te parèt ak mikrochitekti Skylake processeur a (2015), men nan-sovaj nou poko wè egzanp sou itilizasyon li yo, kidonk firmwèr kontwolè a entegre se toujou yon pati nan UEFI BIOS la);
  • Intel ME firmwèr;
  • konfigirasyon (adrès MAC, elatriye) nan adaptè rezo GbE (Gigabit Ethernet) entegre;
  • deskriptè flash - rejyon prensipal la nan memwa flash, ki gen konsèy sou lòt rejyon yo, osi byen ke otorizasyon jwenn aksè nan yo.

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Diferansyasyon nan aksè nan rejyon yo (an akò ak otorizasyon yo espesifye) se okipe pa mèt otobis SPI a - kontwolè a SPI bati nan chipset la, nan ki memwa sa a jwenn aksè. Si otorizasyon yo mete nan valè yo rekòmande (pou rezon sekirite) pa Intel, Lè sa a, chak itilizatè nan flash SPI a gen aksè konplè (li / ekri) sèlman nan rejyon yo. Rès yo se swa lekti sèlman oswa inaksesib. Reyalite li te ye: sou anpil sistèm, CPU a gen aksè konplè a UEFI BIOS ak GbE, aksè li sèlman nan deskriptè flash, epi pa gen aksè nan rejyon Intel ME ditou. Poukisa anpil ak pa tout? Sa ki rekòmande se opsyonèl. Nou pral di w plis pita nan atik la.

Mekanis pou pwoteje firmwèr yon platfòm òdinatè kont modifikasyon

Li evidan, firmwèr la nan yon platfòm òdinatè ta dwe pwoteje kont konpwomi posib, ki ta pèmèt yon atakè potansyèl jwenn yon pye nan li (siviv OS / re-enstalasyon), egzekite kòd yo nan mòd ki pi privilejye, elatriye. Ak delimitasyon aksè nan rejyon SPI memwa flash, nan kou, se pa ase. Se poutèt sa, divès kalite mekanis espesifik nan chak anviwònman ekzekisyon yo itilize pou pwoteje firmwèr la kont modifikasyon.

Se konsa, Intel ME firmwèr siyen pou kontwòl entegrite ak otantisite, epi li tcheke pa kontwolè ME a chak fwa li chaje nan memwa ME UMA a. Pwosesis verifikasyon sa a te deja diskite pa nou nan youn nan atikdedye a subsistèm Intel ME.

Ak firmwèr ACPI EC, kòm yon règ, tcheke sèlman pou entegrite. Sepandan, akòz lefèt ke binè sa a enkli nan UEFI BIOS la, li prèske toujou sijè a menm mekanis pwoteksyon ke UEFI BIOS la itilize. Ann pale de yo.

Mekanis sa yo ka divize an de kategori.

Ekri pwoteksyon nan rejyon UEFI BIOS

  1. Pwoteksyon fizik nan sa ki nan memwa flash SPI a ak yon kavalye ki pwoteje ekri;
  2. Pwoteksyon pwojeksyon rejyon UEFI BIOS nan espas adrès CPU a lè l sèvi avèk rejis PRx chipset la;
  3. Bloke tantativ pou ekri nan rejyon UEFI BIOS pa jenere ak trete entèwonp SMI ki koresponn lan pa mete BIOS_WE / BLE ak SMM_BWP bits nan rejis chipset yo;
  4. Yon vèsyon ki pi avanse nan pwoteksyon sa a se Intel BIOS Guard (PFAT).

Anplis mekanis sa yo, machann yo ka devlope ak aplike pwòp mezi sekirite yo (pa egzanp, siyen kapsil ak mizajou UEFI BIOS).

Li enpòtan pou sonje ke sou yon sistèm espesifik (ki depann sou vandè a), se pa tout mekanis pwoteksyon ki anwo yo ka aplike, yo ka pa aplike ditou, oswa yo ka aplike nan yon fason vilnerab. Ou ka li plis sou mekanis sa yo ak sitiyasyon an ak aplikasyon yo nan atik sa a. Pou moun ki enterese, nou rekòmande ke ou li tout seri atik sou sekirite UEFI BIOS soti nan CodeRush.

Verifikasyon Otantifikasyon UEFI BIOS

Lè nou pale sou teknoloji bòt ou fè konfyans, premye bagay ki vin nan tèt ou se Secure Boot. Sepandan, achitekti, li fèt pou otantifye konpozan ekstèn nan BIOS UEFI (chofè, chajè, elatriye), epi li pa firmwèr nan tèt li.

Se poutèt sa, Intel nan SoCs ak mikwochitekti Bay Trail la (2012) te aplike yon pyès ki nan konpitè ki pa ka chanje Secure Boot (Verified Boot), ki pa gen anyen fè ak teknoloji Secure Boot mansyone pi wo a. Pita (2013), mekanis sa a te amelyore epi, anba non Intel Boot Guard, te lage pou Desktop ak mikrochitekti Haswell.

Anvan nou dekri Intel Boot Guard, ann gade tan nan achitekti Intel 64 la, ki an konbinezon, se rasin konfyans pou teknoloji bòt ou fè konfyans sa a.

Intel CPU

Cap sijere ke processeur a se anviwònman an egzekisyon prensipal nan achitekti Intel 64. Poukisa li tou rasin nan konfyans? Li sanble ke se posesyon eleman sa yo ki fè li konsa:

  • Microcode ROM se yon memwa ki pa temèt, ki pa enskriptab pou estoke mikrokod. Yo kwè ke mikrokod se aplikasyon an nan sistèm enstriksyon processeur la sou enstriksyon ki pi senp yo. Rive nan mikrokod tou pinèz. Se konsa, nan BIOS la ou ka jwenn binè ak mizajou mikrokod (yo sipèpoze nan moman bòt la, paske ROM a pa ka ranplase). Se kontni an nan binè sa yo chiffres, ki konplike anpil analiz (Se poutèt sa, kontni an espesifik nan mikrokod la konnen sèlman nan moun ki devlope li), ak siyen kontwole entegrite a ak otantisite;
  • Kle AES pou dechifre sa ki nan mizajou mikrokod yo;
  • yon hash nan kle piblik RSA ki verifye siyati mizajou mikrokod yo;
  • Hash kle piblik RSA, ki tcheke siyati modil kòd ACM (Authenticated Code Module) ki te devlope Intel, ki CPU a ka kouri anvan BIOS la kòmanse (bonjou mikrokod) oswa pandan operasyon li, lè kèk evènman rive.

Intel ME

Sou-sistèm sa a nan blog nou an te konsakre nan de atik. Sonje byen, anviwònman ègzèkutabl sa a baze sou mikrokontwolè ki bati nan chipset la epi li pi kache ak privilejye nan sistèm nan.

Malgre enfiltrasyon an, Intel ME se rasin konfyans tou, paske li genyen:

  • ME ROM - memwa ki pa temèt, ki pa enskriptab (pa gen okenn metòd aktyalizasyon yo bay), ki gen kòd kòmanse a, osi byen ke SHA256 hash la nan kle piblik RSA a, ki tcheke siyati a nan firmwèr Intel ME a;
  • AES kle pou estoke enfòmasyon sekrè;
  • aksè a yon seri fusibles (FPFs, Field Programable Fuses) entegre nan chipset la pou depo pèmanan kèk enfòmasyon, ki gen ladan enfòmasyon ki espesifye pa vandè sistèm òdinatè a.

Intel Boot Guard 1.x

Ti responsabilite. Nimewo vèsyon teknoloji Intel Boot Guard ke nou itilize nan atik sa a se abitrè epi yo ka pa gen anyen fè ak nimero yo itilize nan dokiman Intel entèn yo. Anplis de sa, enfòmasyon sou aplikasyon an nan teknoloji sa a yo bay la a te jwenn pandan jeni ranvèse, epi li ka gen inexactitudes konpare ak spesifikasyon pou Intel Boot Guard, ki pa gen anpil chans pou yo janm pibliye.

Se konsa, Intel Boot Guard (BG) se yon teknoloji otantifikasyon UEFI BIOS ki sipòte pyès ki nan konpitè. Jije pa ti deskripsyon li nan liv la [Platform Embedded Security Technology Revealed, Chapter Boot with Entegrity, or Not Boot], li travay kòm yon chèn bòt ou fè konfyans. Ak premye lyen nan li se kòd la bòt (mikwokod) andedan CPU a, ki se deklanche pa evènman an RESET (pa dwe konfonn ak vektè RESET nan BIOS la!). CPU a jwenn yon modil kòd (Intel BG demaraj ACM) devlope ak siyen pa Intel sou memwa flash SPI a, chaje li nan kachèt li yo, verifye li (li te deja note pi wo a ke CPU a gen yon hash kle piblik ki verifye siyati ACM la. ) epi li kòmanse.

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad

Modil kòd sa a responsab pou verifye yon ti pati kòmanse nan UEFI BIOS - Initial Boot Block (IBB), ki, nan vire, gen fonksyonalite a pou verifye pati prensipal la nan UEFI BIOS la. Kidonk, Intel BG pèmèt ou verifye otantisite BIOS la anvan demaraj eksplwatasyon an (ki ka fèt anba sipèvizyon teknoloji Secure Boot).

Teknoloji Intel BG bay de mòd operasyon (e youn pa entèfere ak lòt la, sa vle di tou de mòd yo ka aktive sou sistèm nan, epi tou de ka enfim).

Bòt mezire

Nan mòd Bòt Mezire (MB), chak eleman bòt (kòmanse ak ROM bòt CPU a) "mezire" pwochen an lè l sèvi avèk kapasite Modil platfòm Trusted (TPM). Pou moun ki pa konnen, kite m eksplike.

TPM gen PCRs (Platform Configuration Registers), ki anrejistre rezilta operasyon hachaj la dapre fòmil la:

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad

Moun sa yo. valè PCR aktyèl la depann de yon sèl anvan an, epi rejis sa yo reset sèlman lè sistèm nan RESET.

Kidonk, nan mòd MB, nan kèk pwen nan tan, PCR yo reflete yon idantifyan inik (nan kapasite operasyon hash la) nan kòd la oswa done ki te "mezire". Valè PCR yo ka itilize nan chifreman kèk operasyon done (TPM_Seal). Apre sa, dekripte yo (TPM_Unseal) pral posib sèlman si valè PCR yo pa chanje kòm rezilta chajman (sa vle di, pa gen yon sèl "mezire" eleman ki te modifye).

Verifye bòt

Bagay ki pi pè pou moun ki renmen modifye BIOS UEFI se mòd Verified Boot (VB), kote chak eleman bòt kriptografik verifye entegrite ak otantisite pwochen an. Epi nan ka ta gen yon erè verifikasyon, (youn nan bagay sa yo) rive:

  • fèmen pa timeout soti nan 1 minit a 30 minit (pou itilizatè a gen tan konprann poukisa òdinatè li pa bòt, epi, si sa posib, ta eseye retabli BIOS la);
  • fèmen imedya (pou itilizatè a pa gen tan konprann epi, anplis, fè);
  • kontinyasyon nan travay ak yon figi dwat (ka a lè pa gen tan pou sekirite, paske gen bagay ki pi enpòtan yo fè).

Chwa a nan aksyon depann sou konfigirasyon Intel BG espesifye (savwa, sou sa yo rele politik ranfòsman), ki se pèmanan anrejistre pa vandè a platfòm òdinatè nan yon depo ki fèt espesyalman - chipset fuses (FPFs). Nou pral rete sou pwen sa a nan plis detay pita.

Anplis de konfigirasyon an, vandè a jenere de kle RSA 2048 epi li kreye de estrikti done (yo montre nan figi a):

  1. Manifeste kle rasin vandè a (KEYM, OEM Root Key Manifest), ki mete SVN (Security Version Number) nan manifest sa a, hash SHA256 nan kle piblik pwochen manifest la, kle piblik RSA (sa vle di pati piblik la nan manifès la). kle rasin vandè) pou verifye siyati manifest sa a ak siyati li menm;
  2. Manif IBB (IBBM, Initial Boot Block Manifest), ki mete SVN manifest sa a, hash SHA256 IBB a, kle piblik pou verifye siyati manifest sa a, ak siyati li menm.

Hash SHA256 nan kle rasin OEM la ekri pou tout tan nan chipset fuse (FPFs), menm jan ak konfigirasyon Intel BG la. Si konfigirasyon Intel BG bay pou enklizyon teknoloji sa a, Lè sa a, depi koulye a sou sistèm sa a sèlman pwopriyetè a nan pati prive a nan OEM Rasin kle a ka mete ajou BIOS la (sa vle di kapab rekalkile manifeste sa yo), i.e. machann.

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad

Lè ou gade nan foto a, dout imedyatman leve sou nesesite pou yon chèn verifikasyon long konsa - ou ta ka itilize yon sèl manifest. Poukisa konplike?

An reyalite, Intel konsa bay vandè a opòtinite pou yo sèvi ak diferan kle IBB pou liy pwodwi diferan ak youn kòm rasin lan. Si pati prive kle IBB a (ki siyen dezyèm manifest la) koule, ensidan an pral afekte sèlman yon liy pwodwi epi sèlman jiskaske vandè a jenere yon nouvo pè epi li pèmèt manifest yo rekalkile nan pwochen aktyalizasyon BIOS la.

Men, si kle rasin lan konpwomèt (ak ki premye manifest la siyen), li pa pral posib pou ranplase li, pwosedi revokasyon an pa bay. se hash la nan pati piblik la nan kle sa a pwograme nan FPFs yon fwa pou tout.

Konfigirasyon Intel Boot Guard

Koulye a, kite a pran yon gade pi pre nan konfigirasyon an Intel BG ak pwosesis la nan kreyasyon li yo. Si w gade onglet ki koresponn lan nan entèfas zouti Flash Imaj ki soti nan Intel System Tool Kit (STK), w ap remake ke konfigirasyon Intel BG a gen ladann yon hash nan pati piblik kle rasin vandè a, yon koup nan fènwa. valè, ak sou sa. Intel BG pwofil.

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad

Estrikti pwofil sa a:

typedef struct BG_PROFILE
{
	unsigned long Force_Boot_Guard_ACM : 1;
	unsigned long Verified_Boot : 1;
	unsigned long Measured_Boot : 1;
	unsigned long Protect_BIOS_Environment : 1;
	unsigned long Enforcement_Policy : 2; // 00b – do nothing
                                              // 01b – shutdown with timeout
                                              // 11b – immediate shutdown
	unsigned long : 26;
};

An jeneral, konfigirasyon Intel BG a se yon antite trè fleksib. Konsidere, pa egzanp, drapo Force_Boot_Guard_ACM. Lè li otorize, si modil BG demaraj ACM sou flash SPI a pa jwenn, pa gen okenn bòt ou fè konfyans. Li pral enfidèl.

Nou te deja ekri pi wo a ke règleman an ranfòsman pou mòd VB la ka konfigirasyon pou ke si verifikasyon echwe, ankò, yon download ki pa fè konfyans pral rive.

Kite bagay sa yo nan men machann yo...

GUI nan sèvis piblik la bay pwofil "pare-fè" sa yo:

Nimewo
Mode
Deskripsyon

0
Non_FVME
Teknoloji Intel BG andikape

1
VE
Mòd VB pèmèt, fèmen pa timeout

2
VME
tou de mòd yo aktive (VB ak MB), fèmen pa timeout

3
VM
tou de mòd yo aktive, san yo pa fèmen sistèm lan

4
FVE
VB mòd pèmèt, fèmen imedya

5
FVME
tou de mòd pèmèt, fèmen imedya

Kòm deja mansyone, machann sistèm lan dwe ekri konfigirasyon Intel BG yon fwa pou tout nan fuse chipset (FPFs) - yon ti (dapre enfòmasyon ki pa verifye, sèlman 256 octets) depo enfòmasyon pyès ki nan konpitè andedan chipset la, ki ka pwograme deyò. nan enstalasyon pwodiksyon Intel yo (se poutèt sa Jaden pwogramasyon fusibles).

Li bon pou estoke konfigirasyon paske:

  • gen yon zòn depo done pwogramasyon yon sèl fwa (jis kote konfigirasyon Intel BG ekri);
  • se sèlman Intel ME ki ka li ak pwograme li.

Se konsa, yo nan lòd yo mete konfigirasyon an pou teknoloji Intel BG sou yon sistèm espesifik, vandè a fè bagay sa yo pandan pwodiksyon an:

  1. Sèvi ak Flash Image Tool (ki soti nan Intel STK), kreye yon imaj firmwèr ak yon konfigirasyon Intel BG bay kòm varyab andedan rejyon Intel ME (sa yo rele glas tanporè pou FPFs);
  2. Sèvi ak zouti nan pwogramasyon Flash (ki soti nan Intel STK), ekri imaj sa a nan memwa a flash SPI nan sistèm nan epi fèmen sa yo rele an. mòd fabrikasyon (nan ka sa a, yo voye kòmandman ki koresponn lan bay Intel ME).

Kòm yon rezilta nan operasyon sa yo, Intel ME pral angaje nan FPF yo bay valè yo nan glas la pou FPF nan rejyon ME a, mete otorizasyon yo nan deskriptè flash SPI yo nan valè yo rekòmande pa Intel (ki dekri nan kòmansman an nan atik) epi fè yon RESET sistèm.

Intel Boot Guard Aplikasyon analiz

Yo nan lòd yo analize aplikasyon an nan teknoloji sa a sou yon egzanp espesifik, nou tcheke sistèm sa yo pou tras nan teknoloji Intel BG:

Sistèm
Note

Gigaocte GA-H170-D3H
Skylake, gen sipò

Gigaocte GA-Q170-D3H
Skylake, gen sipò

Gigaocte GA-B150-HD3
Skylake, gen sipò

MSI H170A Gaming Pro
Skylake, pa gen sipò

Lenovo ThinkPad 460
Skylake, sipò ki disponib, teknoloji pèmèt

Lenovo Yoga 2 Pro
Haswell, pa gen sipò

Lenovo U330p
Haswell, pa gen sipò

"Sipò" vle di prezans nan modil Intel BG demaraj ACM, manifeste yo mansyone pi wo a ak kòd ki koresponn lan nan BIOS la, i.e. aplikasyon pou analiz.

Kòm yon egzanp, an n pran youn nan telechaje nan biwo a. imaj sit machann nan memwa flash SPI pou Gigabyte GA-H170-D3H (vèsyon F4).

Intel CPU bòt ROM

Premye a tout, ann pale sou aksyon yo nan processeur a si teknoloji Intel BG pèmèt.

Li pa t posib pou jwenn echantiyon mikwokòd ki dekripte a, se poutèt sa, ki jan aksyon ki dekri anba a yo aplike (nan mikrokod oswa nan pyès ki nan konpitè) se yon kesyon ouvè. Men, lefèt ke modèn Intel processeurs "ka" fè aksyon sa yo se yon reyalite.

Apre yo fin soti nan eta RESET la, processeur a (nan espas adrès kote sa ki nan memwa flash la deja trase) jwenn FIT (Firmware Interface Table). Jwenn li se fasil, konsèy la ekri nan adrès FFFF FFC0h.

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Nan egzanp sa a, adrès sa a gen valè FFD6 9500h. Lè w ale nan adrès sa a, processeur a wè tab FIT la, sa ki divize an dosye. Premye antre a se tit estrikti sa a:

typedef struct FIT_HEADER
{
	char           Tag[8];     // ‘_FIT_   ’
	unsigned long  NumEntries; // including FIT header entry
	unsigned short Version;    // 1.0
	unsigned char  EntryType;  // 0
	unsigned char  Checksum;
};

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Pou kèk rezon enkoni, total chèk la pa toujou kalkile nan tablo sa yo (se jaden an rete nil).

Antre ki rete yo montre divès kalite binè ki bezwen analize / egzekite anvan yo egzekite BIOS la, sa vle di. anvan ou chanje nan vektè RESET eritaj la (FFFF FFF0h). Estrikti chak antre sa yo se jan sa a:

typedef struct FIT_ENTRY
{
	unsigned long  BaseAddress;
	unsigned long  : 32;
	unsigned long  Size;
	unsigned short Version;     // 1.0
	unsigned char  EntryType;
	unsigned char  Checksum;
};

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Jaden EntryType la endike ki kalite blòk antre sa a lonje dwèt sou. Nou konnen plizyè kalite:

enum FIT_ENTRY_TYPES
{
	FIT_HEADER = 0,
	MICROCODE_UPDATE,
	BG_ACM,
	BIOS_INIT = 7,
	TPM_POLICY,
	BIOS_POLICY,
	TXT_POLICY,
	BG_KEYM,
	BG_IBBM
};

Koulye a, li evidan ke youn nan antre yo montre ki kote Intel BG demaraj ACM binè a. Estrikti header nan binè sa a se tipik pou modil kòd ki devlope pa Intel (ACMs, mizajou mikrokod, Intel ME seksyon kòd, ...).

typedef struct BG_ACM_HEADER
{
	unsigned short ModuleType;     // 2
	unsigned short ModuleSubType;  // 3
	unsigned long  HeaderLength;   // in dwords
	unsigned long  : 32;
	unsigned long  : 32;
	unsigned long  ModuleVendor;   // 8086h
	unsigned long  Date;           // in BCD format
	unsigned long  TotalSize;      // in dwords
	unsigned long  unknown1[6];
	unsigned long  EntryPoint;
	unsigned long  unknown2[16];
	unsigned long  RsaKeySize;     // in dwords
	unsigned long  ScratchSize;    // in dwords
	unsigned char  RsaPubMod[256];
	unsigned long  RsaPubExp;
	unsigned char  RsaSig[256];
};

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Processeur a chaje binè sa a nan kachèt li yo, verifye ak lanse.

Intel BG demaraj ACM

Kòm rezilta analiz travay ACM sa a, li te vin klè ke li fè bagay sa yo:

  • resevwa nan men Intel ME konfigirasyon Intel BG ekri nan chipset fuse (FPFs);
  • jwenn KEYM ak IBBM manifeste, verifye yo.

Pou jwenn manifest sa yo, ACM itilize tou tab FIT la, ki gen de kalite antre pou montre estrikti sa yo (gade FIT_ENTRY_TYPES pi wo a).

Ann pran yon gade pi pre nan manifès yo. Nan estrikti premye manifest la, nou wè plizyè konstan fènwa, yon hash kle piblik ki soti nan dezyèm manifest la, ak yon kle rasin OEM piblik ki siyen kòm yon estrikti enbrike:

typedef struct KEY_MANIFEST
{
	char           Tag[8];          // ‘__KEYM__’
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 0
	unsigned char  : 8;             // 1
	unsigned short : 16;            // 0Bh
	unsigned short : 16;            // 20h == hash size?
	unsigned char  IbbmKeyHash[32]; // SHA256 of an IBBM public key
	BG_RSA_ENTRY   OemRootKey;
};

typedef struct BG_RSA_ENTRY
{
	unsigned char  : 8;             // 10h
	unsigned short : 16;            // 1
	unsigned char  : 8;             // 10h
	unsigned short RsaPubKeySize;   // 800h
	unsigned long  RsaPubExp;
	unsigned char  RsaPubKey[256];
	unsigned short : 16;            // 14
	unsigned char  : 8;             // 10h
	unsigned short RsaSigSize;      // 800h
	unsigned short : 16;            // 0Bh
	unsigned char  RsaSig[256];
};

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Pou verifye kle piblik la OEM Root Key, nou sonje ke SHA256 hash ki soti nan fuze yo itilize, ki nan moman sa a te deja resevwa nan men Intel ME.

Ann ale nan dezyèm manifès la. Li konsiste de twa estrikti:

typedef struct IBB_MANIFEST
{
	ACBP Acbp;         // Boot policies
	IBBS Ibbs;         // IBB description
	IBB_DESCRIPTORS[];
	PMSG Pmsg;         // IBBM signature
};

Premye a gen kèk konstan:

typedef struct ACBP
{
	char           Tag[8];          // ‘__ACBP__’
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 1
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 0
	unsigned short : 16;            // x & F0h = 0
	unsigned short : 16;            // 0 < x <= 400h
};

Dezyèm lan gen hash SHA256 nan IBB a ak kantite deskriptè ki dekri sa ki nan IBB a (sa vle di ki sa yo kalkile hash la):

typedef struct IBBS
{
	char           Tag[8];            // ‘__IBBS__’
	unsigned char  : 8;               // 10h
	unsigned char  : 8;               // 0
	unsigned char  : 8;               // 0
	unsigned char  : 8;               // x <= 0Fh
	unsigned long  : 32;              // x & FFFFFFF8h = 0
	unsigned long  Unknown[20];
	unsigned short : 16;              // 0Bh
	unsigned short : 16;              // 20h == hash size ?
	unsigned char  IbbHash[32];       // SHA256 of an IBB
	unsigned char  NumIbbDescriptors;
};

Deskriptè IBB yo swiv estrikti sa a, youn apre lòt. Kontni yo gen fòma sa a:

typedef struct IBB_DESCRIPTOR
{
	unsigned long  : 32;
	unsigned long  BaseAddress;
	unsigned long  Size;
};

Li senp: chak deskriptè gen adrès/gwosè yon moso IBB. Kidonk, konkatenasyon blòk yo montre pa deskriptè sa yo (nan lòd deskriptè yo menm) se IBB. Epi, kòm yon règ, IBB se yon konbinezon de tout modil nan faz SEC ak PEI.

Dezyèm manifest la fini ak yon estrikti ki gen kle piblik IBB (verifye pa hash SHA256 nan premye manifest la) ak siyati manifest sa a:

typedef struct PMSG
{
	char           Tag[8];            // ‘__PMSG__’
	unsigned char  : 8;               // 10h
	BG_RSA_ENTRY   IbbKey;
};

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Se konsa, menm anvan yo kòmanse ekzekisyon UEFI BIOS, processeur a pral lanse ACM, ki pral verifye otantisite nan sa ki nan seksyon yo ak kòd faz SEC ak PEI. Apre sa, processeur a soti ACM a, deplase sou vektè RESET la, epi li kòmanse egzekite BIOS la.

PEI verifye patisyon an dwe genyen yon modil ki pral tcheke rès BIOS la (kòd DXE). Modil sa a deja devlope pa IBV (Independent BIOS Vendor) oswa machann sistèm nan tèt li. Paske Se sèlman Lenovo ak sistèm Gigabyte ki te a dispozisyon nou epi ki gen sipò Intel BG, ann konsidere kòd ki sòti nan sistèm sa yo.

UEFI BIOS modil LenovoVerifiedBootPei

Nan ka Lenovo, li te tounen soti nan LenovoVerifiedBootPei {B9F2AC77-54C7-4075-B42E-C36325A9468D} modil, devlope pa Lenovo.

Travay li se gade (pa GUID) yon tablo hash pou DXE a epi verifye DXE a.

if (EFI_PEI_SERVICES->GetBootMode() != BOOT_ON_S3_RESUME)
{
	if (!FindHashTable())
		return EFI_NOT_FOUND;
	if (!VerifyDxe())
		return EFI_SECURITY_VIOLATION;
}

Хеш таблица {389CC6F2-1EA8-467B-AB8A-78E769AE2A15} имеет следующий формат:

typedef struct HASH_TABLE
{
	char          Tag[8];            // ‘$HASHTBL’
	unsigned long NumDxeDescriptors;
	DXE_DESCRIPTORS[];
};

typedef struct DXE_DESCRIPTOR
{
	unsigned char BlockHash[32];     // SHA256
	unsigned long Offset;
	unsigned long Size;
};

UEFI BIOS modil BootGuardPei

Nan ka Gigabyte, li te tounen soti nan BootGuardPei {B41956E1-7CA2-42DB-9562-168389F0F066} modil, devlope pa AMI, ak Se poutèt sa prezan nan nenpòt BIOS AMI ak sipò Intel BG.

Algorithm operasyon li yo yon ti jan diferan, sepandan, li se menm bagay la tou:

int bootMode = EFI_PEI_SERVICES->GetBootMode();

if (bootMode != BOOT_ON_S3_RESUME &&
    bootMode != BOOT_ON_FLASH_UPDATE &&
    bootMode != BOOT_IN_RECOVERY_MODE)
{
	HOB* h = CreateHob();
	if (!FindHashTable())
		return EFI_NOT_FOUND;
	WriteHob(&h, VerifyDxe());
	return h;
}

Tablo hash {389CC6F2-1EA8-467B-AB8A-78E769AE2A15} li parèt gen fòma sa a:

typedef HASH_TABLE DXE_DESCRIPTORS[];

typedef struct DXE_DESCRIPTOR
{
	unsigned char BlockHash[32];     // SHA256
	unsigned long BaseAddress;
	unsigned long Size;
};

Intel Boot Guard 2.x

Ann pale yon ti tan sou yon lòt aplikasyon Intel Boot Guard, ki te jwenn nan yon nouvo sistèm ki baze sou Intel SoC ak microarchitecture Apollo Lake - ASRock J4205-IT.

Malgre ke vèsyon sa a pral itilize sèlman nan SoCs (nouvo sistèm ak mikrochitekti processeur Kaby Lake kontinye sèvi ak Intel Boot Guard 1.x), li se yon gwo enterè nan eksplore yon nouvo opsyon achitekti pou platfòm ki baze sou Intel SoCs, ki te wè byen mèb. chanjman, pa egzanp:

  • BIOS ak Intel ME rejyon yo (oswa pito Intel TXE, dapre tèminoloji Intel SoC) se kounye a yon sèl rejyon IFWI;
  • byenke Intel BG te pèmèt sou platfòm la, estrikti tankou FIT, KEYM, IBBM pa te jwenn nan memwa flash;
  • nplis de TXE ak ISH nwayo (x86), yon nwayo twazyèm (ankò ARC, nan chemen an) te ajoute nan chipset la - PMC (Power Management Controller), ki asosye ak asire operasyon an nan subsystem pouvwa a ak siveyans pèfòmans.

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Kontni nouvo rejyon IFWI la se yon seri modil sa yo:

Patipri
non
Deskripsyon

0000 2000h
SMIP
kèk konfigirasyon platfòm, ki siyen pa vandè a

0000 6000h
RBEP
Intel TXE seksyon kòd firmwèr, x86, ki siyen pa Intel

0001 0000h
PMCP
seksyon kòd firmwèr Intel PMC, ARC, ki siyen pa Intel

0002 0000h
FTPR
Intel TXE seksyon kòd firmwèr, x86, ki siyen pa Intel

0007B000h
UCOD
Mizajou mikrokod CPU Intel te siyen

0008 0000h
IBBP
UEFI BIOS, faz SEC/PEI, x86, machann siyen

0021 8000h
ISHC
seksyon kòd nan firmwèr Intel ISH la, x86, ki siyen pa vandè a

0025 8000h
NFTP
Intel TXE seksyon kòd firmwèr, x86, ki siyen pa Intel

0036 1000h
IUNP
se enkoni

0038 1000h
OBBP
UEFI BIOS, faz DXE, x86, san siyen

Pandan analiz la nan firmwèr TXE, li te vin evidan ke apre RESET, TXE kenbe processeur a nan eta sa a jiskaske li prepare kontni debaz yo nan espas adrès la pou CPU a (FIT, ACM, vektè RESET ...). Anplis, TXE mete done sa yo nan SRAM li yo, apre sa li tanporèman bay processeur a aksè la epi "degaje" li nan RESET.

Sou gad nan routki

Oke, kounye a ann ale nan "cho a". Yon fwa nou te dekouvri ke sou anpil sistèm, deskriptè flash SPI yo gen otorizasyon pou jwenn aksè nan rejyon memwa flash SPI pou tout itilizatè memwa sa a ka tou de ekri ak li nenpòt rejyon. Moun sa yo. okenn fason.

Apre w fin tcheke ak sèvis piblik MEinfo (ki soti nan Intel STK), nou te wè ke mòd nan fabrikasyon sou sistèm sa yo pa te fèmen, Se poutèt sa, fuse chipset yo (FPFs) yo te kite nan yon eta endetèmine. Wi, Intel BG pa ni aktive ni enfim nan ka sa yo.

Nou ap pale de sistèm sa yo (konsènan Intel BG ak sa ki pral dekri pita nan atik la, nou pral pale sou sistèm ak mikrochitekti Haswell processeur ak pi wo):

  • tout pwodwi Gigabyte;
  • tout pwodwi MSI;
  • 21 modèl laptop Lenovo ak 4 modèl sèvè Lenovo.

Natirèlman, nou te rapòte jwenn nan vandè sa yo, osi byen ke nan Intel.

Repons adekwat swiv sèlman soti nan Lenovoki moun ki rekonèt pwoblèm nan ak lage yon patch.

jigokte Li sanble ke yo te aksepte enfòmasyon sou vilnerabilite a, men yo pa t fè kòmantè nan okenn fason.

Kominikasyon ak Msi konplètman bloke nan demann nou an voye kle piblik PGP nou an (yo nan lòd yo voye yo yon konsèy sekirite chiffres). Yo te deklare ke yo "se yon manifakti pyès ki nan konpitè epi yo pa fabrike kle PGP."

Men, plis nan pwen an. Depi fusibles yo rete nan yon eta ki pa defini, itilizatè a (oswa atakè) ka pwograme yo tèt li (pi difisil la se jwenn Intel STK). Sa a mande etap sa yo.

1. Bòt nan Windows OS (an jeneral, etap sa yo ki dekri anba a ka fè tou nan Linux, si ou devlope yon analogue nan Intel STK pou eksplwatasyon an vle). Sèvi ak sèvis piblik MEinfo a, asire w ke fusible yo sou sistèm sa a pa pwograme.

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
2. Li sa ki nan memwa flash lè l sèvi avèk Flash Programming Tool.

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
3. Louvri imaj li a lè l sèvi avèk nenpòt zouti koreksyon UEFI BIOS, fè chanjman ki nesesè yo (aplike yon routki, pou egzanp), kreye / modifye estrikti ki egziste deja KEYM ak IBBM nan rejyon ME.

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Pati piblik la nan kle RSA a make nan foto a, yo pral hash nan ki pral pwograme nan fuse chipset yo ansanm ak rès la nan konfigirasyon Intel BG la.

4. Sèvi ak Flash Imaj Zouti a, bati yon nouvo imaj firmwèr (pa mete konfigirasyon Intel BG).

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
5. Ekri yon nouvo imaj pou flash lè l sèvi avèk Flash Programming Tool, verifye avèk MEinfo ke rejyon ME a genyen kounye a konfigirasyon Intel BG la.

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
6. Sèvi ak Flash Programming Tool pou fèmen mòd fabrikasyon an.

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
7. Sistèm nan pral rdemare, apre sa, lè l sèvi avèk MEinfo, ou ka verifye ke FPF yo kounye a pwograme.

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Aksyon sa yo pou tout tan pèmèt Intel BG sou sistèm sa a. Li pral enposib defèt aksyon an, ki vle di:

  • sèlman pwopriyetè a nan pati prive kle rasin lan (sa vle di moun ki pèmèt Intel BG) yo pral kapab mete ajou UEFI BIOS la sou sistèm sa a;
  • si ou retounen firmwèr orijinal la nan sistèm sa a, pou egzanp, lè l sèvi avèk yon pwogramè, li pa pral menm limen (yon konsekans politik ranfòsman nan evènman an nan yon erè verifikasyon);
  • pou debarase m de yon BIOS UEFI konsa, ou bezwen ranplase chipset la ak FPF pwograme ak yon "pwòp" (sa vle di resoude chipset la si ou gen aksè a yon estasyon soude enfrawouj nan pri a nan yon machin, oswa jis ranplase mèr la). ).

Pou konprann ki sa yon routki ka fè, ou bezwen evalye sa ki fè li posib pou egzekite kòd ou a nan yon anviwònman UEFI BIOS. Di, nan mòd ki pi privilejye nan processeur a - SMM. Yon routki sa yo ka gen pwopriyete sa yo:

  • dwe egzekite an paralèl ak eksplwatasyon an (ou ka konfigirasyon pwosesis pa jenere yon entèwonp SMI, ki pral deklanche pa yon revèy);
  • gen tout avantaj ki genyen nan mòd SMM (aksè konplè a sa ki nan RAM ak resous pyès ki nan konpitè, sekrè nan eksplwatasyon an);
  • Kòd routki a ka chiffrer ak dechifre lè te lanse nan mòd SMM. Nenpòt done ki disponib sèlman nan mòd SMM ka itilize kòm yon kle chifreman. Pou egzanp, yon hash ki soti nan yon seri adrès nan SMRAM. Pou jwenn kle sa a, w ap bezwen monte nan SMM la. Ak sa a ka fè nan de fason. Jwenn RCE a nan kòd SMM la epi eksplwate li, oswa ajoute pwòp modil SMM ou a nan BIOS la, sa ki enposib, depi nou pèmèt Boot Guard.

Kidonk, vilnerabilite sa a pèmèt yon atakè:

  • kreye yon routki kache, inamovible nan objektif enkoni nan sistèm nan;
  • egzekite kòd ou a sou youn nan nwayo chipset andedan Intel SoC a, sètadi, sou Intel ISH la (pran yon gade pi pre nan foto a).

Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Bòt ou fè konfyans Schrödinger a. Intel Boot Gad
Malgre ke kapasite yo nan Intel ISH subsystem la poko te eksplore, li sanble yo dwe yon vektè atak enteresan kont Intel ME.

Jwenn

  1. Etid la te bay yon deskripsyon teknik sou fason teknoloji Intel Boot Guard fonksyone. Mwens yon koup nan sekrè nan sekirite Intel a atravè modèl fènwa.
  2. Yon senaryo atak prezante ki pèmèt kreye yon routki inamovible nan sistèm nan.
  3. Nou te wè ke processeurs Intel modèn yo kapab egzekite yon anpil nan kòd propriétaires menm anvan BIOS la kòmanse.
  4. Platfòm ak achitekti Intel 64 yo ap vin pi piti ak mwens apwopriye pou kouri lojisyèl gratis: verifikasyon kenkayri, yon nimewo ogmante nan teknoloji propriétaires ak subsistèm (twa nwayo nan chipset SoC la: x86 ME, x86 ISH ak ARC PMC).

Diminisyon

Machann ki espre kite mòd fabrikasyon louvri ta dwe definitivman fèmen li. Jiskaprezan, yo sèlman fèmen je yo e nouvo sistèm Kaby Lake yo montre sa.

Itilizatè yo ka enfim Intel BG sou sistèm yo (ki afekte nan vilnerabilite ki dekri a) lè yo kouri zouti nan pwogramasyon Flash ak opsyon nan -closemnf. Premyèman, ou ta dwe asire w (sèvi ak MEinfo) ke konfigirasyon Intel BG nan rejyon ME bay pou egzakteman etenn teknoloji sa a apre pwogramasyon nan FPFs.

Sous: www.habr.com

Add nouvo kòmantè