Мастер автобуси SPI, контролери SPI, ки дар чипсет сохта шудааст, ки тавассути он ба ин хотира дастрасӣ дорад, барои маҳдуд кардани дастрасӣ ба минтақаҳо масъул аст (мувофиқи иҷозатҳои муайяншуда). Агар иҷозатҳо ба арзишҳои тавсияшудаи Intel (бо сабабҳои амниятӣ) муқаррар карда шаванд, он гоҳ ҳар як корбари Flash SPI танҳо ба минтақаи худ дастрасии пурра (хондан/навиштан) дорад. Ва боқимондаҳо танҳо барои хондан ё дастнорасанд. Як далели маълум: дар бисёр системаҳо, CPU дастрасии пурра ба UEFI BIOS ва GbE дорад, дастрасии хондан танҳо ба дескрипторҳои флешдор ва умуман дастрасӣ ба минтақаи Intel ME нест. Чаро дар бисёриҳо, на дар ҳама? Он чизе, ки тавсия дода мешавад, талаб карда намешавад. Мо ба шумо баъдтар дар мақола муфассалтар нақл мекунем.
Механизмҳои муҳофизати нармафзори платформаи компютерӣ аз тағирот
Аён аст, ки нармафзори платформаи компютерӣ бояд аз созиши эҳтимолӣ ҳифз карда шавад, ки ба ҳамлагари эҳтимолӣ имкон медиҳад, ки дар он ҷой пайдо кунад (навсозӣ/аз нав насб кардани ОС зинда монад), коди худро дар реҷаҳои имтиёзнок иҷро кунад ва ғайра. Ва маҳдуд кардани дастрасӣ ба минтақаҳои хотираи флеши SPI, албатта, кофӣ нест. Аз ин рӯ, барои муҳофизат кардани нармафзор аз тағирот, механизмҳои гуногуни ба ҳар як муҳити корӣ хос истифода мешаванд.
Ҳамин тариқ, нармафзори Intel ME барои назорати якпорчагӣ ва аслият имзо карда мешавад ва аз ҷониби контролери ME ҳар дафъае, ки он ба хотираи ME UMA бор карда мешавад, тафтиш карда мешавад. Ин раванди санҷиш аллакай аз ҷониби мо дар яке аз онҳо муҳокима карда шудааст мақолаҳо, ба зерсистемаи Intel ME бахшида шудааст.
Ва нармафзори ACPI EC, чун қоида, танҳо барои якпорчагӣ тафтиш карда мешавад. Бо вуҷуди ин, аз сабаби он, ки ин дуӣ ба UEFI BIOS дохил карда шудааст, он қариб ҳамеша ба ҳамон механизмҳои муҳофизатӣ, ки UEFI BIOS истифода мебарад, вобаста аст. Биёед дар бораи онҳо сӯҳбат кунем.
Бадтарин чизе барои онҳое, ки мехоҳанд тағир додани UEFI BIOS-ро дӯст доранд, ин режими Verified Boot (VB) мебошад, ки дар он ҳар як ҷузъи пурборкунанда якпорчагӣ ва ҳаққонияти навбатиро ба таври криптографӣ тафтиш мекунад. Ва дар сурати хатогии тафтиш, (яке аз) рӯй медиҳад:
хомӯш кардани вақт аз 1 дақиқа то 30 дақиқа (то он ки корбар вақт дошта бошад, то бифаҳмад, ки чаро компютери ӯ бор намекунад ва агар имконпазир бошад, BIOS-ро барқарор кунад);
қатъи фаврӣ (то он ки корбар барои фаҳмидани чизе вақт надошта бошад, камтар кор кунад);
идома додани кор бо ифодаи ором (дар он ҳолат, вақте ки барои бехатарӣ вақт нест, зеро корҳои муҳимтаре ҳастанд).
Дар асл, Intel ҳамин тавр ба фурӯшанда имкон медиҳад, ки калидҳои гуногуни IBB барои сатрҳои гуногуни маҳсулоти худ ва якеро ҳамчун калиди реша истифода баранд. Агар қисми хусусии калиди IBB (бо он манифести дуюм имзо карда мешавад) ихроҷ шавад, ҳодиса танҳо ба як хати маҳсулот таъсир мерасонад ва танҳо то он даме, ки фурӯшанда ҷуфти нав тавлид кунад ва манифестҳои аз нав ҳисобшударо дар навсозии навбатии BIOS дохил кунад.
Аммо агар калиди реша (бо он манифести аввал имзо шудааст) осеб дида бошад, иваз кардани он имконнопазир аст; тартиби бозхонди он пешбинӣ нашудааст. хэши қисми ҷамъиятии ин калид як бор ва барои ҳама ба FPF барномарезӣ карда мешавад.
Конфигуратсияи Intel Boot Guard
Акнун биёед ба конфигуратсияи Intel BG ва раванди эҷоди он муфассалтар назар андозем. Агар шумо ба ҷадвали мувофиқ дар GUI утилитаи Flash Image Tool аз маҷмӯаи Intel System Tool (STK) нигаред, шумо хоҳед дид, ки конфигуратсияи Intel BG як хэши қисми оммавии калиди решаи фурӯшандаро дар бар мегирад, якчанд арзишҳои норавшан ва ғайра. Профили Intel BG.
Сохтори ин профил:
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;
};
Умуман, конфигуратсияи Intel BG як сохтори хеле чандир аст. Масалан, парчами Force_Boot_Guard_ACM-ро баррасӣ кунед. Вақте ки он хориҷ карда мешавад, агар модули ACM-и BG дар флеши SPI ёфт нашавад, ҳеҷ гуна пурборкунии боэътимод рӯй намедиҳад. Вай беэътимод хоҳад буд.
Мо аллакай дар боло навишта будем, ки сиёсати иҷроиш барои ҳолати VB метавонад танзим карда шавад, то ки агар хатои санҷиш вуҷуд дошта бошад, зеркашии беэътимод рух медиҳад.
Ҳоло маълум аст, ки яке аз вурудот ба ҷойгиршавии стартапи Intel BG ACM дуӣ ишора мекунад. Сохтори сарлавҳаи ин дуӣ барои модулҳои коди аз ҷониби Intel таҳияшуда хос аст (ACMs, навсозии микрокодҳо, қисмҳои коди 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];
};
Протсессор ин бинариро ба кэши худ бор мекунад, онро тафтиш мекунад ва онро иҷро мекунад.
Ҳамин тавр, ҳатто пеш аз он ки UEFI BIOS ба кор шурӯъ кунад, протсессор ACM-ро оғоз мекунад, ки аслияти мундариҷаи бахшҳоро бо рамзи марҳилаи SEC ва PEI тафтиш мекунад. Баъдан, протсессор аз ACM мебарояд, вектори RESET-ро пайгирӣ мекунад ва ба иҷрои BIOS оғоз мекунад.
Қисмати тасдиқшудаи PEI бояд як модул дошта бошад, ки боқимондаи BIOS (рамзи DXE) -ро тафтиш кунад. Ин модул аллакай аз ҷониби IBV (Independent BIOS Vendor) ё худи фурӯшандаи система таҳия карда мешавад. Зеро Танҳо системаҳои Lenovo ва Gigabyte дар ихтиёри мо буданд ва дастгирии Intel BG доштанд; биёед ба рамзи истихроҷшуда аз ин системаҳо назар андозем.
Модули UEFI BIOS LenovoVerifiedBootPei
Дар мавриди Lenovo, он модули LenovoVerifiedBootPei буд {B9F2AC77-54C7-4075-B42E-C36325A9468D}, ки аз ҷониби Lenovo таҳия шудааст.
Вазифаи он ҷустуҷӯ кардан (аз ҷониби GUID) ҷадвали хэш барои DXE ва санҷиши 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 DXE_DESCRIPTOR
{
unsigned char BlockHash[32]; // SHA256
unsigned long Offset;
unsigned long Size;
};
Модули UEFI BIOS BootGuardPei
Дар мавриди Gigabyte, он модули BootGuardPei {B41956E1-7CA2-42DB-9562-168389F0F066} буд, ки аз ҷониби AMI таҳия шудааст, аз ин рӯ, дар ҳама гуна AMI BIOS бо дастгирии Intel BG мавҷуд аст.
Алгоритми амалиётии он то андозае фарқ мекунад, аммо он ба як чиз бармегардад:
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;
}
Ҳангоми таҳлили нармафзори TXE маълум шуд, ки пас аз RESET, TXE протсессорро то он даме, ки мундариҷаи асосии фазои суроғаро барои CPU омода накунад (FIT, ACM, вектори RESET ...) дар ин ҳолат нигоҳ медорад. Ғайр аз он, TXE ин маълумотро дар SRAM-и худ ҷойгир мекунад ва пас аз он муваққатан ба протсессор дастрасии он ҷо медиҳад ва онро аз RESET "озод мекунад".
1. Ба Windows OS бор кунед (умум, амалҳои дар зер тавсифшуда метавонанд дар зери Linux низ анҷом дода шаванд, агар шумо аналоги Intel STK-ро барои OS-и дилхоҳ таҳия кунед). Бо истифода аз утилитаи MEinfo, боварӣ ҳосил кунед, ки муҳофизаткунандаҳо дар ин система барномарезӣ нашудаанд.
2. Мундариҷаи хотираи флешро бо воситаи Flash Programming Tool хонед.
3. Тасвири хондашударо бо истифода аз ягон абзори таҳрири UEFI BIOS кушоед, тағиротҳои заруриро ворид кунед (масалан, руткит ворид кунед), сохторҳои мавҷудаи KEYM ва IBBM-ро дар минтақаи ME эҷод/таҳрир кунед.
Тасвир қисми оммавии калиди RSA-ро таъкид мекунад, ки хэши он дар паҳлӯҳои чипсет дар якҷоягӣ бо конфигуратсияи боқимондаи Intel BG барномарезӣ карда мешавад.
4. Бо истифода аз Flash Image, як тасвири нармафзори нав созед (бо гузоштани конфигуратсияи Intel BG).
5. Бо истифода аз Flash Programming Tool ба хотираи флеш тасвири нав нависед ва бо истифода аз MEinfo тасдиқ кунед, ки минтақаи ME ҳоло конфигуратсияи Intel BG-ро дар бар мегирад.
агар шумо нармафзори аслиро ба ин система баргардонед, масалан, бо истифода аз барномасоз, он ҳатто фаъол намешавад (оқибати сиёсати иҷроиш дар сурати хатогии санҷиш);
барои аз чунин UEFI BIOS халос шудан, ба шумо лозим аст, ки чипсетро бо FPF-ҳои барномарезишуда бо "тоза" иваз кунед (яъне, агар шумо ба истгоҳи кафшери инфрасурх дастрасӣ дошта бошед, чипсетро бо нархи мошин иваз кунед ё танҳо иваз кардани motherboard ).