Amintaccen takalmin Schrödinger. Intel Boot Guard

Amintaccen takalmin Schrödinger. Intel Boot Guard
Muna ba da shawara don sake komawa zuwa ƙananan matakin kuma muyi magana game da tsaro na firmware x86 masu dacewa da dandamali na kwamfuta. A wannan lokacin, babban abin da ke cikin binciken shine Intel Boot Guard (kada a ruɗe tare da Intel BIOS Guard!) - fasahar taya na BIOS da ke da goyon bayan hardware wanda mai siyar da tsarin kwamfuta zai iya kunna ko kashe har abada a matakin samarwa. Da kyau, mun riga mun san girke-girke na bincike: yanke aiwatar da wannan fasaha ta hanyar injiniyan juzu'i, kwatanta gine-gine, cika shi da cikakkun bayanai marasa izini, kakar shi tare da vectors don dandana da haɗuwa. Bari mu ƙara wuta tare da labari game da yadda kwaro mai cloned a cikin samar da dillalai da yawa tsawon shekaru yana ba da damar mai yuwuwar yin amfani da wannan fasaha don ƙirƙirar tushen tushen ɓoye wanda ba za a iya cirewa ba (har ma da mai tsara shirye-shirye) a cikin tsarin.

Af, labarin ya dogara ne akan rahotannin "On Guard for Rootkits: Intel BootGuard" daga taron. ZeroNights 2016 da taro na 29 DefCon Russia (duka gabatarwa a nan).

Firmware don dandamalin kwamfuta tare da gine-ginen Intel 64

Da farko, bari mu amsa tambayar: menene firmware na dandalin kwamfuta na zamani tare da gine-ginen Intel 64? Hakika, UEFI BIOS. Amma wannan amsar ba za ta kasance daidai ba. Bari mu dubi wannan adadi, wanda ke nuna nau'in tebur (kwamfutar tafi-da-gidanka) na wannan gine-gine.

Amintaccen takalmin Schrödinger. Intel Boot Guard
Tushen shine mahaɗin:

  • Mai sarrafawa (CPU, Ƙungiyar Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwaƙwalwa ) na Ƙaddamarwa na Ƙaƙwalwa na Ƙaƙwalwa na Ƙaƙwalwa na Ƙaƙwalwa (ba a cikin kowane nau'i ba) da kuma mai sarrafa ƙwaƙwalwar ajiya (IMC, Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwaƙwalwa ) ;
  • Chipset (PCH, Platform Controller Hub), yana ƙunshe da masu sarrafawa daban-daban don mu'amala tare da na'urori na gefe da sarrafa tsarin ƙasa. Daga cikin su akwai sanannen Injin Gudanarwa na Intel (ME), wanda kuma yana da firmware (Intel ME firmware).

Kwamfutar tafi-da-gidanka, ban da abubuwan da ke sama, suna buƙatar haɗaɗɗen mai sarrafawa (ACPI EC, Advanced Control and Power Interface Embedded Controller), wanda ke da alhakin aiwatar da tsarin wutar lantarki, faifan taɓawa, maɓalli, maɓallan Fn (hasken allo, ƙarar sauti, maballin keyboard). hasken baya, da sauransu)) da ƙari. Kuma yana da nasa firmware.

Don haka, haɗin firmware ɗin da ke sama shine firmware na dandamalin kwamfuta (System firmware), wanda aka adana akan ma'aunin filasha na SPI gama gari. Don kada masu amfani da wannan ƙwaƙwalwar ajiya su ruɗe inda wani ke kwance, an raba abubuwan da ke cikin wannan ƙwaƙwalwar zuwa yankuna masu zuwa (kamar yadda aka nuna a cikin adadi):

  • UEFI BIOS;
  • ACPI EC firmware (wani yanki daban ya bayyana tare da Skylake processor microarchitecture (2015), amma a cikin daji har yanzu ba mu ga misalan amfani da shi ba, don haka firmware mai sarrafawa har yanzu yana cikin UEFI BIOS);
  • Intel ME firmware;
  • daidaitawa (adireshin MAC, da sauransu) na adaftar cibiyar sadarwa na GbE (Gigabit Ethernet);
  • filayen walƙiya - babban yankin ƙwaƙwalwar walƙiya, wanda ya ƙunshi alamomi zuwa wasu yankuna, da kuma izini don samun damar su.

Amintaccen takalmin Schrödinger. Intel Boot Guard
Bambance-bambancen damar zuwa yankuna (daidai da ƙayyadaddun izini) ana sarrafa su ta mai sarrafa bas na SPI - mai sarrafa SPI wanda aka gina a cikin chipset, ta inda ake samun damar wannan ƙwaƙwalwar ajiya. Idan an saita izini zuwa ƙimar da aka ba da shawarar (saboda tsaro) ta Intel, to kowane mai amfani da filasha SPI yana da cikakken damar (karanta/rubutu) kawai zuwa yankin su. Sauran ko dai karantawa ne ko kuma ba za a iya samu ba. Sanin gaskiya: akan tsarin da yawa, CPU yana da cikakkiyar dama ga UEFI BIOS da GbE, karanta damar karantawa kawai ga masu siffantawa, kuma babu damar shiga yankin Intel ME kwata-kwata. Me yasa da yawa kuma ba duka ba? Abin da aka ba da shawarar zaɓi ne. Za mu ba ku ƙarin bayani a cikin labarin.

Hanyoyi don kare firmware na dandalin kwamfuta daga gyarawa

Babu shakka, ya kamata a kiyaye firmware na dandamalin kwamfuta daga yuwuwar yin sulhu, wanda zai ba da damar mai yuwuwar maharin samun gindin zama a ciki (sake sabuntawar OS / sake shigar da shi), aiwatar da lambar su a cikin mafi yawan gata, da sauransu. Kuma iyakance damar zuwa yankunan ƙwaƙwalwar filasha ta SPI, ba shakka, bai isa ba. Don haka, ana amfani da hanyoyi daban-daban na musamman ga kowane yanayin aiwatarwa don kare firmware daga gyare-gyare.

Don haka, an sanya hannu kan firmware na Intel ME don daidaito da sarrafa sahihanci, kuma mai sarrafa ME yana duba shi a duk lokacin da aka loda shi cikin ƙwaƙwalwar ME UMA. An riga an tattauna wannan tsarin tabbatarwa da mu a cikin ɗayan labaraisadaukarwa ga tsarin Intel ME.

Kuma ACPI EC firmware, a matsayin mai mulkin, ana duba shi kawai don mutunci. Koyaya, saboda gaskiyar cewa an haɗa wannan binary a cikin UEFI BIOS, kusan koyaushe yana ƙarƙashin tsarin kariya iri ɗaya da UEFI BIOS ke amfani da shi. Bari mu yi magana game da su.

Ana iya raba waɗannan hanyoyin zuwa kashi biyu.

Rubuta kariya zuwa UEFI BIOS yankin

  1. Kariyar jiki na abubuwan da ke cikin ƙwaƙwalwar filasha ta SPI tare da tsalle-tsalle mai kariya;
  2. Kariya na tsinkayar yankin UEFI BIOS a cikin sararin adireshin CPU ta amfani da rajistar PRx na chipset;
  3. Kashe ƙoƙarin rubutawa zuwa yankin UEFI BIOS ta hanyar ƙirƙira da sarrafa katsewar SMI daidai ta hanyar saita ragowar BIOS_WE / BLE da SMM_BWP a cikin rajistar chipset;
  4. Babban sigar wannan kariyar shine Intel BIOS Guard (PFAT).

Baya ga waɗannan hanyoyin, masu siyarwa za su iya haɓakawa da aiwatar da matakan tsaro na kansu (misali, sanya hannu kan capsules tare da sabunta UEFI BIOS).

Yana da mahimmanci a lura cewa a kan takamaiman tsari (dangane da mai siyarwa), ba duk hanyoyin kariya na sama ba za a iya amfani da su ba, ba za a iya amfani da su kwata-kwata ba, ko kuma ana iya aiwatar da su ta hanya mai rauni. Kuna iya karanta ƙarin game da waɗannan hanyoyin da halin da ake ciki tare da aiwatar da su a ciki wannan labarin. Ga masu sha'awar, muna ba da shawarar ku karanta duk jerin labaran kan tsaro na UEFI BIOS daga CodeRush.

Tabbatar da Tabbatar da UEFI BIOS

Lokacin da muke magana game da amintattun fasahar taya, abu na farko da ke zuwa hankali shine Secure Boot. Koyaya, a tsarin gine-gine, an tsara shi don tantance abubuwan da ke waje zuwa UEFI BIOS (dirabai, masu ɗaukar kaya, da sauransu), kuma ba firmware ɗin kanta ba.

Saboda haka, Intel a cikin SoCs tare da Bay Trail microarchitecture (2012) sun aiwatar da kayan aikin da ba za a iya canzawa ba Secure Boot (Verified Boot), wanda ba shi da alaƙa da fasahar Secure Boot da aka ambata. Daga baya (2013), an inganta wannan tsarin kuma, a ƙarƙashin sunan Intel Boot Guard, an sake shi don kwamfutoci tare da microarchitecture na Haswell.

Kafin bayyana Intel Boot Guard, bari mu kalli lokacin gudu a cikin gine-ginen Intel 64, wanda, a hade, shine tushen dogaro ga wannan amintaccen fasahar taya.

Intel CPU

Cap yana nuna cewa processor shine babban yanayin aiwatarwa a cikin gine-ginen Intel 64. Me yasa kuma shine tushen amana? Sai ya zama mallakin abubuwa masu zuwa ne ya sa haka:

  • Microcode ROM ba mai canzawa bane, ƙwaƙwalwar ajiyar da ba za a iya sake rubutawa ba don adana microcode. An yi imani da cewa microcode shine aiwatar da tsarin koyarwar processor akan mafi sauƙi umarnin. Yana faruwa a cikin microcode kuma kwari. Don haka a cikin BIOS zaka iya samun binaries tare da sabuntawar microcode (an sanya su a lokacin taya, saboda ba za a iya sake rubuta ROM ba). Abubuwan da ke cikin waɗannan binaries an ɓoye su, wanda ke dagula bincike sosai (saboda haka, takamaiman abun ciki na microcode an san shi kawai ga waɗanda suka haɓaka shi), kuma sun sanya hannu don sarrafa amincin da amincin;
  • Maɓallin AES don ƙaddamar da abubuwan da ke cikin sabuntawar microcode;
  • zanta na maɓalli na jama'a na RSA wanda ke tabbatar da sa hannun sabuntawar microcode;
  • RSA jama'a hash, wanda ke duba sa hannun Intel-developed ACM (Ingantaccen Code Module) code modules, wanda CPU iya gudu kafin BIOS fara (hello microcode) ko a lokacin da aiki, lokacin da wasu al'amura suka faru.

Intel ME

An sadaukar da wannan tsarin subsystem a cikin blog ɗinmu biyu labarai. Ka tuna cewa wannan yanayin aiwatarwa yana dogara ne akan microcontroller da aka gina a cikin chipset kuma shine mafi ɓoye da gata a cikin tsarin.

Duk da stealth, Intel ME kuma shine tushen dogara, saboda yana da:

  • ME ROM - ƙwaƙwalwar da ba ta canzawa, ba za a iya sake rubutawa ba (babu hanyar sabuntawa da aka bayar), wanda ya ƙunshi lambar farawa, da kuma SHA256 hash na maɓallin jama'a na RSA, wanda ke duba sa hannun Intel ME firmware;
  • Maɓallin AES don adana bayanan sirri;
  • samun damar yin amfani da saitin fuses (FPFs, Filin Programmable Fuses) hadedde cikin kwakwalwan kwamfuta don ajiyar wasu bayanai na dindindin, gami da bayanin da mai siyar da tsarin kwamfuta ya ƙayyade.

Intel Boot Guard 1.x

Karamin disclaimer. Lambobin sigar fasahar Intel Boot Guard waɗanda muke amfani da su a cikin wannan labarin suna sabani kuma ƙila ba su da wata alaƙa da lambar da aka yi amfani da ita a cikin takaddun Intel na ciki. Bugu da kari, bayanan game da aiwatar da wannan fasaha da aka bayar a nan an samu su ne yayin injiniyan juzu'i, kuma suna iya ƙunsar kuskure idan aka kwatanta da ƙayyadaddun bayanai na Intel Boot Guard, wanda da wuya a taɓa bugawa.

Don haka, Intel Boot Guard (BG) fasaha ce ta UEFI BIOS mai goyan bayan hardware. Yin la'akari da ƙaramin bayaninsa a cikin littafin [Platform Embedded Security Technology Revealed, Chapter Boot with Integrity, or Not Boot], yana aiki azaman amintaccen sarkar taya. Kuma hanyar haɗin farko da ke cikinta ita ce lambar boot (microcode) a cikin CPU, wanda taron RESET ya haifar da shi (kar a ruɗe shi da RESET vector a cikin BIOS!). CPU ta nemo module code (Intel BG startup ACM) wanda Intel ya kirkira kuma ya sanya hannu akan ma'aunin filasha na SPI, ya loda shi a cikin cache, ya tabbatar da shi (an riga an lura a sama cewa CPU yana da hash na jama'a wanda ke tabbatar da sa hannun ACM ) da farawa.

Amintaccen takalmin Schrödinger. Intel Boot Guard

Wannan tsarin lambar yana da alhakin tabbatar da ƙaramin ɓangaren farawa na UEFI BIOS - Initial Boot Block (IBB), wanda, bi da bi, ya ƙunshi ayyuka don tabbatar da babban ɓangaren UEFI BIOS. Don haka, Intel BG yana ba ku damar tabbatar da sahihancin BIOS kafin kunna OS (wanda za'a iya aiwatar da shi ƙarƙashin kulawar fasahar Secure Boot).

Fasahar Intel BG tana samar da nau'ikan aiki guda biyu (kuma ɗayan baya tsoma baki tare da ɗayan, watau duka hanyoyin biyu ana iya kunna su akan tsarin, kuma duka biyun suna iya kashe su).

Auna Boot

A Yanayin Auna Boot (MB), kowane bangaren taya (farawa da CPU boot ROM) "yana auna" na gaba ta amfani da damar TPM (Trusted Platform Module). Ga wanda bai sani ba, bari in yi bayani.

TPM yana da PCRs (Platform Configuration Registers), waɗanda ke yin rikodin sakamakon aikin hashing bisa ga dabara:

Amintaccen takalmin Schrödinger. Intel Boot Guard

Wadancan. ƙimar PCR na yanzu ya dogara da na baya, kuma ana sake saita waɗannan rajistar kawai lokacin da tsarin ya SAKE SAKE.

Don haka, a cikin yanayin MB, a wani lokaci a cikin lokaci, PCRs suna nuna na musamman (a cikin iyawar aikin hash) mai gano lambar ko bayanan da aka “auna”. Ana iya amfani da ƙimar PCR a cikin ɓoyewar wasu bayanan (TPM_Seal) aiki. Bayan haka, ƙaddamar da su (TPM_Unseal) zai yiwu ne kawai idan ƙimar PCR ba ta canza ba a sakamakon lodawa (watau, ba a canza sashin "aunawa" ɗaya ba).

Tabbataccen Boot

Abu mafi ban tsoro ga waɗanda ke son gyara UEFI BIOS shine yanayin Verified Boot (VB), wanda kowane ɓangaren taya yana tabbatar da gaskiya da amincin na gaba. Kuma idan an sami kuskuren tantancewa, (ɗayan waɗannan) yana faruwa:

  • kashewa ta lokaci daga minti 1 zuwa minti 30 (don mai amfani ya sami lokaci don fahimtar dalilin da yasa kwamfutarsa ​​ba ta yin taya, kuma, idan ya yiwu, zai yi ƙoƙarin mayar da BIOS);
  • kashewa nan da nan (don mai amfani ba shi da lokacin fahimta kuma, ƙari, yin);
  • ci gaba da aiki tare da madaidaiciyar fuska (al'amarin lokacin da babu lokacin tsaro, saboda akwai abubuwa masu mahimmanci da za a yi).

Zaɓin aikin ya dogara da ƙayyadaddun ƙayyadaddun tsarin Intel BG (wato, akan abin da ake kira manufofin tilastawa), wanda mai siyar da dandamalin kwamfuta ke yin rikodin dindindin a cikin ƙayyadaddun ajiya na musamman - fuses chipset (FPFs). Za mu dakata kan wannan batu dalla-dalla nan gaba.

Baya ga daidaitawa, mai siyarwa yana haifar da maɓallan RSA 2048 guda biyu kuma ya ƙirƙiri tsarin bayanai guda biyu (wanda aka nuna a cikin adadi):

  1. Maɓallin maɓallin mai siyarwa (KEYM, OEM Tushen Maɓallin Maɓalli), wanda ke sanya SVN (Lambar Sigar Tsaro) na wannan bayyanuwar, SHA256 hash na maɓallin jama'a na bayanan na gaba, maɓallin jama'a na RSA (watau ɓangaren jama'a na maɓallin tushen mai siyarwa) don tabbatar da sa hannun wannan bayyani da sa hannun kanta;
  2. IBB Manifest (IBBM, Initial Boot Block Manifest), wanda ya sanya SVN na wannan bayanin, SHA256 hash na IBB, maɓallin jama'a don tabbatar da sa hannun wannan takarda, da kuma sa hannu kanta.

SHA256 hash na OEM Tushen Key an rubuta shi har abada zuwa fuses chipset (FPFs), kamar tsarin Intel BG. Idan tsarin Intel BG ya tanadar don haɗa wannan fasaha, to daga yanzu a kan wannan tsarin sai mai sirri na OEM Tushen Key zai iya sabunta BIOS (watau iya sake ƙididdige waɗannan bayanan), watau. mai sayarwa.

Amintaccen takalmin Schrödinger. Intel Boot Guard

Lokacin da kuka kalli hoton, nan da nan shakku ya taso game da buƙatar irin wannan doguwar sarkar tabbatarwa - da kun yi amfani da bayyanannen guda ɗaya. Me yasa yake da wahala?

A zahiri, Intel don haka yana ba wa mai siyarwa damar amfani da maɓallan IBB daban-daban don layin samfura daban-daban kuma ɗaya a matsayin tushen. Idan ɓangaren keɓaɓɓen maɓallin IBB (wanda ke nuna alamar bayyanar ta biyu) ta yoyo, lamarin zai shafi layin samfur guda ɗaya kawai kuma har sai mai siyar ya haifar da sabon nau'i kuma yana ba da damar sake lissafin bayyanar a cikin sabuntawar BIOS na gaba.

Amma idan tushen tushen ya lalace (wanda aka sanya hannu a farkon bayyanar), ba zai yiwu a maye gurbinsa ba, ba a ba da hanyar sokewa ba. Zaton ɓangaren jama'a na wannan maɓalli an tsara shi cikin FPFs sau ɗaya kuma har abada.

Intel Boot Guard Kanfigareshan

Yanzu bari mu dubi tsarin Intel BG da tsarin halittarsa. Idan ka kalli madaidaicin shafin a cikin GUI na Kayan Aikin Hoto na Flash daga Kayan Aikin Kayan Aikin Intel (STK), za ku lura cewa tsarin Intel BG ya haɗa da zanta na ɓangaren jama'a na tushen maɓallin mai siyarwa, ma'aurata biyu masu ɓoye. dabi'u, da sauransu. Bayanan Bayani na Intel BG

Amintaccen takalmin Schrödinger. Intel Boot Guard

Tsarin wannan bayanin martaba:

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;
};

Gabaɗaya, saitin Intel BG abu ne mai sassauƙa sosai. Yi la'akari, alal misali, tutar Force_Boot_Guard_ACM. Lokacin da aka share shi, idan ba a sami samfurin ACM na farawa na BG akan filasha SPI ba, babu amintaccen taya da zai faru. Zai zama mara amana.

Mun riga mun rubuta a sama cewa ana iya daidaita manufofin tilastawa don yanayin VB ta yadda idan tabbatarwa ta gaza, kuma, zazzagewar da ba amintacce ba zata faru.

Ka bar abubuwa kamar haka ga masu siyarwa...

GUI na mai amfani yana ba da bayanan bayanan "shirye-shiryen da aka yi" masu zuwa:

Kamfanin
Yanayi
Description

0
Babu_FVME
An kashe fasahar Intel BG

1
VE
An kunna yanayin VB, rufewa ta lokacin ƙarewa

2
Farashin VME
an kunna duka hanyoyin biyu (VB da MB), rufewa ta lokacin ƙarewa

3
VM
duka hanyoyin suna kunna, ba tare da kashe tsarin ba

4
FVE
An kunna yanayin VB, rufewa nan da nan

5
Farashin FVME
an kunna hanyoyin biyu, rufewa nan da nan

Kamar yadda aka riga aka ambata, tsarin Intel BG dole ne a rubuta shi sau ɗaya kuma gaba ɗaya ta hanyar mai siyar da tsarin cikin fuses chipset (FPFs) - ƙaramin (bisa ga bayanan da ba a tantance ba, kawai 256 bytes) ajiyar bayanan hardware a cikin chipset, wanda za'a iya tsara shi a waje. na kayan aikin Intel (don haka shi ya sa Filin Shirye-shiryen fuses).

Yana da kyau don adana sanyi saboda:

  • yana da wurin ajiyar bayanai na lokaci-lokaci guda ɗaya (kawai inda aka rubuta saitin Intel BG);
  • Intel ME ne kawai ke iya karantawa da tsara shi.

Don haka, don saita saiti don fasahar Intel BG akan takamaiman tsarin, mai siyarwa yana yin haka yayin samarwa:

  1. Yin amfani da kayan aikin Hotuna na Flash (daga Intel STK), yana ƙirƙirar hoton firmware tare da tsarin Intel BG da aka ba a matsayin masu canji a cikin yankin Intel ME (wanda ake kira madubi na wucin gadi don FPFs);
  2. Amfani da Flash Programming Tool (daga Intel STK), rubuta wannan hoton zuwa SPI flash memory na tsarin kuma yana rufe abin da ake kira. Yanayin masana'antu (a cikin wannan yanayin, ana aika umarnin da ya dace zuwa Intel ME).

Sakamakon waɗannan ayyukan, Intel ME zai ƙaddamar da ƙayyadaddun ƙimar FPFs daga madubi don FPFs a cikin yankin ME, saita izini a cikin ma'anar filasha ta SPI zuwa ƙimar da Intel ya ba da shawarar (wanda aka bayyana a farkon labarin) kuma aiwatar da SAKE SAKE STAR tsarin.

Intel Boot Guard Analysis Analysis

Domin yin nazarin aiwatar da wannan fasaha akan takamaiman misali, mun bincika waɗannan tsare-tsare don alamun fasahar Intel BG:

tsarin
Примечание

Gigabyte GA-H170-D3H
Skylake, akwai tallafi

Gigabyte GA-Q170-D3H
Skylake, akwai tallafi

Gigabyte GA-B150-HD3
Skylake, akwai tallafi

MSI H170A Gaming Pro
Skylake, babu tallafi

Lenovo ThinkPad 460
Skylake, akwai tallafi, an kunna fasaha

Lenovo Yoga 2 Pro
Haswell, babu tallafi

Lenovo U330p
Haswell, babu tallafi

"Tallafawa" yana nufin kasancewar Intel BG farawa ACM module, abubuwan da aka ambata a sama da lambar da ta dace a cikin BIOS, watau. aiwatarwa don bincike.

A matsayin misali, bari mu ɗauki wanda aka zazzage daga ofis. Hoton wurin mai siyarwa na ƙwaƙwalwar filasha ta SPI don Gigabyte GA-H170-D3H (sigar F4).

Intel CPU boot ROM

Da farko, bari mu yi magana game da ayyukan processor idan fasahar Intel BG ta kunna.

Ba zai yiwu a nemo samfuran microcode da aka ɓoye ba, don haka, yadda ake aiwatar da ayyukan da aka bayyana a ƙasa (a cikin microcode ko a cikin kayan masarufi) tambaya ce ta buɗe. Duk da haka, gaskiyar cewa na'urorin sarrafa Intel na zamani "suna iya" yin waɗannan ayyukan gaskiya ne.

Bayan fita daga jihar RESET, mai sarrafawa (a cikin adireshin adireshinsa an riga an tsara abin da ke cikin ƙwaƙwalwar filashin) ya nemo FIT (Firmware Interface Table). Gano shi yana da sauƙi, an rubuta mai nuna shi a adireshin FFFF FFC0h.

Amintaccen takalmin Schrödinger. Intel Boot Guard
A cikin wannan misali, wannan adireshin ya ƙunshi ƙimar FFD6 9500h. Juya zuwa wannan adireshin, mai sarrafa na'ura yana ganin tebur na FIT, wanda abin da ke ciki ya kasu kashi biyu. Shigar farko ita ce kan tsarin wannan tsari:

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;
};

Amintaccen takalmin Schrödinger. Intel Boot Guard
Don wasu dalilai da ba a sani ba, ba koyaushe ake ƙididdige adadin kuɗin ba a cikin waɗannan allunan (an bar filin ba komai).

Sauran abubuwan da suka rage suna nuni zuwa ga binaries daban-daban waɗanda ke buƙatar tantancewa / aiwatar da su kafin a aiwatar da BIOS, watau. kafin mu canza zuwa gada RESET vector (FFFF FFF0h). Tsarin kowane irin shigarwar shine kamar haka:

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

Amintaccen takalmin Schrödinger. Intel Boot Guard
Filin EntryType yana nuna nau'in toshe wannan alamar shiga. Mun san iri da yawa:

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

Yanzu a bayyane yake cewa ɗayan shigarwar yana nuna wurin da Intel BG farawa ACM binary. Tsarin kai na wannan binary shine na yau da kullun don nau'ikan lambobin da Intel suka haɓaka (ACMs, sabuntawar microcode, sassan lambar Intel ME, ...).

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];
};

Amintaccen takalmin Schrödinger. Intel Boot Guard
Mai sarrafawa yana loda wannan binary a cikin cache ɗinsa, ya tabbatar kuma ya ƙaddamar da shi.

Intel BG farawa ACM

Sakamakon nazarin aikin wannan ACM, ya bayyana cewa yana yin haka:

  • yana karɓar daga Intel ME tsarin Intel BG da aka rubuta zuwa fuses chipset (FPFs);
  • ya sami KEYM da IBBM ya bayyana, ya tabbatar da su.

Don nemo waɗannan bayyanuwa, ACM kuma yana amfani da tebur na FIT, wanda ke da nau'ikan shigarwar guda biyu don nuna waɗannan sifofi (duba FIT_ENTRY_TYPES a sama).

Bari mu yi la'akari sosai a kan ma'anar. A cikin tsarin bayyanar farko, muna ganin ɗimbin ɗimbin yawa, zanta na maɓallin jama'a daga bayyanuwar ta biyu, da maɓallin Tushen OEM na jama'a da aka sanya hannu a matsayin tsarin gida:

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];
};

Amintaccen takalmin Schrödinger. Intel Boot Guard
Don tabbatar da maɓallin jama'a na Maɓallin Tushen OEM, mun tuna cewa ana amfani da SHA256 hash daga fuses, wanda a wannan lokacin an riga an karɓi shi daga Intel ME.

Mu ci gaba zuwa ma'ana ta biyu. Ya ƙunshi tsari guda uku:

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

Na farko yana ƙunshe da ƴaƴan ɗorewa:

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
};

Na biyu yana dauke da SHA256 hash na IBB da adadin masu siffanta abin da ke cikin IBB (wato abin da aka lissafta zakin daga):

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;
};

Masu siffantawa IBB suna bin wannan tsarin, daya bayan daya. Abubuwan da ke cikin su suna da tsari mai zuwa:

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

Abu ne mai sauƙi: kowane mai siffantawa ya ƙunshi adireshi / girman gunkin IBB. Don haka, haɗe-haɗen tubalan da waɗannan masu siffantawa suka yi nuni da su (kamar yadda su kansu masu siffantawa suke) IBB ne. Kuma, a matsayinka na mai mulki, IBB shine haɗuwa da duk nau'ikan nau'ikan SEC da PEI.

Bayyani na biyu ya ƙare da tsarin da ke ɗauke da maɓallin jama'a na IBB (wanda aka tabbatar da hash na SHA256 daga farkon bayanin) da sa hannun wannan bayyani:

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

Amintaccen takalmin Schrödinger. Intel Boot Guard
Don haka, tun kafin fara aiwatar da UEFI BIOS, mai sarrafawa zai ƙaddamar da ACM, wanda zai tabbatar da sahihancin abubuwan da ke cikin sassan tare da lambar SEC da PEI. Bayan haka, mai sarrafa na'ura ya fita daga ACM, yana motsawa tare da RESET vector, kuma ya fara aiwatar da BIOS.

Sashen da aka tabbatar da PEI dole ne ya ƙunshi tsarin da zai duba sauran BIOS (lambar DXE). IBV (Independent BIOS Vendor) ko mai siyar da tsarin ya riga ya haɓaka wannan ƙirar. Domin Tsarin Lenovo da Gigabyte kawai sun kasance a hannunmu kuma suna samun tallafin Intel BG, bari mu yi la'akari da lambar da aka fitar daga waɗannan tsarin.

UEFI BIOS module LenovoVerifiedBootPei

Game da Lenovo, ya zama ƙirar LenovoVerifiedBootPei {B9F2AC77-54C7-4075-B42E-C36325A9468D}, wanda Lenovo ya haɓaka.

Ayyukansa shine duba (ta GUID) tebur zanta don DXE kuma tabbatar da DXE.

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 module BootGuardPei

Game da Gigabyte, ya zama samfurin BootGuardPei {B41956E1-7CA2-42DB-9562-168389F0F066}, wanda AMI ya haɓaka, don haka yana cikin kowane AMI BIOS tare da tallafin Intel BG.

Algorithm na aiki ya ɗan bambanta, duk da haka, yana gangarowa zuwa iri ɗaya:

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;
}

Teburin zanta {389CC6F2-1EA8-467B-AB8A-78E769AE2A15} yana da tsari mai zuwa:

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

Bari mu ɗan yi magana game da wani aiwatar da Intel Boot Guard, wanda aka samo a cikin sabon tsarin da ya danganci Intel SoC tare da microarchitecture na Apollo Lake - ASRock J4205-IT.

Kodayake wannan sigar za a yi amfani da ita ne kawai a cikin SoCs (sabbin tsarin tare da microarchitecture na Kaby Lake suna ci gaba da amfani da Intel Boot Guard 1.x), yana da matukar sha'awar bincika sabon zaɓin gine-gine don dandamali dangane da Intel SoCs, wanda ya ga abin gani. canje-canje, misali:

  • Yankunan BIOS da Intel ME (ko kuma Intel TXE, a cewar Intel SoC terminology) yanzu yanki ɗaya ne na IFWI;
  • ko da yake an kunna Intel BG akan dandamali, ba a sami tsarin kamar su FIT, KEYM, IBBM a cikin ma’adanar filasha ba;
  • baya ga TXE da ISH cores (x86), an ƙara cibiya ta uku (sake ARC, ta hanya) zuwa chipset - PMC (Mai Kula da Gudanar da Wuta), wanda ke da alaƙa da tabbatar da aiki na tsarin wutar lantarki da saka idanu akan aiki.

Amintaccen takalmin Schrödinger. Intel Boot Guard
Abubuwan da ke cikin sabon yankin IFWI saitin abubuwa ne masu zuwa:

Kashewa
Имя
Description

0000 2000h
SMIP
wasu tsarin dandamali, wanda mai siyarwa ya sa hannu

0000 6000h
RBEP
Sashen lambar firmware na Intel TXE, x86, wanda Intel ya sa hannu

0001 0000h
PMCP
Sashen lambar firmware Intel PMC, ARC, wanda Intel ya sa hannu

0002 0000h
Farashin FTPR
Sashen lambar firmware na Intel TXE, x86, wanda Intel ya sa hannu

0007B000h
UCOD
Sabunta microcode na CPU wanda Intel ya sanya hannu

0008 0000h
IBBP
UEFI BIOS, matakan SEC/PEI, x86, mai siyarwa ya sanya hannu

0021 8000h
ISHC
sashin lamba na Intel ISH firmware, x86, wanda mai siyar ya sa hannu

0025 8000h
NFTP
Sashen lambar firmware na Intel TXE, x86, wanda Intel ya sa hannu

0036 1000h
IUNP
ba a sani ba

0038 1000h
OBBP
UEFI BIOS, lokaci na DXE, x86, ba a sanya hannu ba

A lokacin nazarin firmware na TXE, ya zama a bayyane cewa bayan RESET, TXE yana riƙe da processor a cikin wannan yanayin har sai ya shirya ainihin abubuwan da ke cikin sararin adireshin don CPU (FIT, ACM, RESET vector ...). Bugu da ƙari, TXE yana sanya waɗannan bayanan a cikin SRAM ɗin sa, bayan haka yana ba da damar na'urar na ɗan lokaci a can kuma ya "saki" daga RESET.

A kan tsaro na rootkits

To, yanzu bari mu matsa zuwa "zafi". Mun taɓa gano cewa akan tsarin da yawa, masu siffanta filasha na SPI suna da izini don shiga yankuna na ƙwaƙwalwar filasha ta SPI ta yadda duk masu amfani da wannan ƙwaƙwalwar za su iya rubutu da karanta kowane yanki. Wadancan. babu hanya.

Bayan dubawa tare da mai amfani na MEinfo (daga Intel STK), mun ga cewa yanayin masana'antu akan waɗannan tsarin ba a rufe ba, don haka, fuses chipset (FPFs) an bar su cikin yanayi mara iyaka. Ee, Intel BG ba a kunna ko kashe shi a irin waɗannan lokuta.

Muna magana ne game da wadannan tsarin (game da Intel BG da abin da za a bayyana daga baya a cikin labarin, za mu magana game da tsarin da Haswell processor microarchitecture da kuma mafi girma):

  • duk samfuran Gigabyte;
  • duk samfuran MSI;
  • Samfuran kwamfutar tafi-da-gidanka na Lenovo 21 da samfuran uwar garken Lenovo 4.

Tabbas, mun ba da rahoton binciken ga waɗannan dillalan, da kuma Intel.

Isasshen amsa ya biyo baya kawai daga Lenovowanda yasan matsalar kuma saki faci.

Gigabyte Da alama sun yarda da bayanin game da raunin, amma ba su yi magana ta kowace hanya ba.

Sadarwa tare da MSI gaba daya ya tsaya cak bisa bukatar mu na aika maballin PGP na jama'a (domin aika musu da bayanan tsaro da ke ɓoye). Sun bayyana cewa "su ƙera kayan masarufi ne kuma ba sa kera maɓallan PGP."

Amma fiye da batun. Tun da an bar fuses a cikin yanayin da ba a bayyana ba, mai amfani (ko maharin) na iya tsara su da kansa (mafi wahala shine sami Intel STK). Wannan yana buƙatar matakai masu zuwa.

1. Boot cikin Windows OS (gaba ɗaya, matakan da aka bayyana a ƙasa kuma ana iya yin su daga ƙarƙashin Linux, idan kun haɓaka analog na Intel STK don OS ɗin da ake so). Amfani da MEinfo utility, tabbatar da cewa fuses akan wannan tsarin ba a tsara su ba.

Amintaccen takalmin Schrödinger. Intel Boot Guard
2. Karanta abubuwan da ke cikin ƙwaƙwalwar walƙiya ta amfani da Kayan Shirye-shiryen Flash.

Amintaccen takalmin Schrödinger. Intel Boot Guard
3. Bude hoton da aka karanta ta amfani da kowane kayan aikin gyaran gyare-gyare na UEFI BIOS, yi canje-canjen da suka dace (aiwatar da rootkit, alal misali), ƙirƙira / gyara tsarin KEYM da IBBM da ke cikin yankin ME.

Amintaccen takalmin Schrödinger. Intel Boot Guard
Amintaccen takalmin Schrödinger. Intel Boot Guard
An haskaka ɓangaren jama'a na maɓallin RSA a cikin hoton, wanda za'a tsara hash ɗinsa a cikin fuses chipset tare da sauran tsarin Intel BG.

4. Yin amfani da kayan aikin Hoton Flash, gina sabon hoton firmware (ta saita saitin Intel BG).

Amintaccen takalmin Schrödinger. Intel Boot Guard
5. Rubuta sabon hoto don yin walƙiya ta amfani da Kayan Shirye-shiryen Flash, tabbatar da amfani da MEinfo cewa yankin ME yanzu ya ƙunshi tsarin Intel BG.

Amintaccen takalmin Schrödinger. Intel Boot Guard
6. Yi amfani da Kayan Shirye-shiryen Flash don rufe yanayin masana'anta.

Amintaccen takalmin Schrödinger. Intel Boot Guard
7. Tsarin zai sake kunnawa, bayan haka, ta amfani da MEinfo, zaku iya tabbatar da cewa FPFs an tsara su yanzu.

Amintaccen takalmin Schrödinger. Intel Boot Guard
Wadannan ayyuka Ajiyayyen kunna Intel BG akan wannan tsarin. Ba zai yuwu a soke aikin ba, wanda ke nufin:

  • kawai mai sashin sirri na tushen maɓallin (watau wanda ya kunna Intel BG) zai iya sabunta UEFI BIOS akan wannan tsarin;
  • idan kun mayar da asalin firmware zuwa wannan tsarin, alal misali, ta amfani da na'ura mai tsarawa, ba zai kunna ko kunnawa ba (sakamakon manufofin tilastawa idan akwai kuskuren tabbatarwa);
  • don kawar da irin wannan UEFI BIOS, kuna buƙatar maye gurbin chipset tare da shirye-shiryen FPFs tare da "tsabta" ɗaya (watau sake siyar da chipset idan kuna da damar zuwa tashar sayar da infrared akan farashin mota, ko kuma kawai maye gurbin motherboard. ).

Don fahimtar abin da irin wannan rootkit zai iya yi, kuna buƙatar kimanta abin da ke ba da damar aiwatar da lambar ku a cikin yanayin UEFI BIOS. Ka ce, a cikin mafi kyawun yanayin mai sarrafawa - SMM. Irin wannan rootkit na iya samun kaddarorin masu zuwa:

  • za a kashe shi a layi daya tare da OS (zaku iya saita aiki ta hanyar samar da katsewar SMI, wanda mai ƙidayar lokaci zai jawo shi);
  • suna da duk fa'idodin kasancewa cikin yanayin SMM (cikakken damar yin amfani da abubuwan da ke cikin RAM da albarkatun kayan masarufi, sirrin OS);
  • Za a iya rufaffen lambar rootkit kuma za a iya ɓoyewa lokacin da aka ƙaddamar da shi a yanayin SMM. Duk bayanan da ake samu kawai a yanayin SMM ana iya amfani da su azaman maɓallin ɓoyewa. Misali, zanta daga saitin adireshi a cikin SMRAM. Don samun wannan maɓallin, kuna buƙatar hawa cikin SMM. Kuma ana iya yin hakan ta hanyoyi biyu. Nemo RCE a cikin lambar SMM kuma ku yi amfani da shi, ko ƙara naku tsarin SMM zuwa BIOS, wanda ba shi yiwuwa, tunda mun kunna Boot Guard.

Don haka, wannan lahani yana bawa maharin damar:

  • ƙirƙirar ɓoye, tushen tushen tushen da ba a iya cirewa ba wanda ba a san shi ba a cikin tsarin;
  • aiwatar da lambar ku akan ɗaya daga cikin kwas ɗin kwakwalwan kwamfuta na cikin Intel SoC, wato, akan Intel ISH (duba hoton da kyau).

Amintaccen takalmin Schrödinger. Intel Boot Guard
Amintaccen takalmin Schrödinger. Intel Boot Guard
Ko da yake har yanzu ba a bincika ƙarfin tsarin tsarin Intel ISH ba, da alama ya zama babban harin kai hari ga Intel ME.

binciken

  1. Binciken ya ba da bayanin fasaha na yadda fasahar Intel Boot Guard ke aiki. Rage wasu sirrin sirri guda biyu a cikin amincin Intel ta hanyar ƙirar duhu.
  2. An gabatar da yanayin harin da ke ba da damar ƙirƙirar tushen tushen da ba za a iya cirewa ba a cikin tsarin.
  3. Mun ga cewa na'urorin sarrafa Intel na zamani suna iya aiwatar da lambar mallakar mallaka da yawa tun kafin BIOS ya fara.
  4. Platforms tare da gine-ginen Intel 64 suna zama ƙasa da ƙasa da dacewa don gudanar da software kyauta: tabbatar da hardware, karuwar yawan fasahar mallakar mallaka da tsarin ƙasa (nau'i uku a cikin Chipset na SoC: x86 ME, x86 ISH da ARC PMC).

Ragewa

Dillalai waɗanda da gangan suka bar yanayin masana'anta a buɗe tabbas yakamata su rufe shi. Ya zuwa yanzu, suna rufe idanunsu kawai kuma sabon tsarin Kaby Lake ya nuna wannan.

Masu amfani za su iya kashe Intel BG akan tsarin su (wanda raunin da aka kwatanta ya shafa) ta hanyar gudanar da Kayan Shirye-shiryen Flash tare da zaɓi -closemnf. Da farko, ya kamata ka tabbata (ta amfani da MEinfo) cewa daidaitawar Intel BG a cikin yankin ME yana samar da daidai kashe wannan fasaha bayan shiryawa a cikin FPFs.

source: www.habr.com

Add a comment