Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
Бид дахин доод түвшинд очиж, x86-тэй нийцтэй компьютерийн платформуудын програм хангамжийн аюулгүй байдлын талаар ярихыг санал болгож байна. Энэ удаад судалгааны гол бүрэлдэхүүн хэсэг нь Intel Boot Guard (Intel BIOS Guard-тай андуурч болохгүй!) бөгөөд компьютерийн системийн борлуулагч үйлдвэрлэлийн үе шатанд бүрмөсөн идэвхжүүлэх эсвэл идэвхгүй болгох боломжтой техник хангамжаар дэмжигдсэн найдвартай BIOS ачаалах технологи юм. Судалгааны жор нь бидэнд аль хэдийн танил болсон: урвуу инженерчлэлийг ашиглан энэ технологийн хэрэгжилтийг нимгэн зүсэж, түүний архитектурыг дүрсэлж, баримтгүй нарийн ширийн зүйлсээр дүүргэж, довтолгооны вектороор амталж, амталж, холино. Хэд хэдэн үйлдвэрлэгчдийн үйлдвэрлэлд олон жилийн турш клончлогдсон алдаа нь халдагчид энэ технологийг ашиглан системд далд rootkit үүсгэх боломжийг олгодог бөгөөд үүнийг устгах боломжгүй (програмисттай байсан ч гэсэн) түүхийг нэмж үзье.

Дашрамд хэлэхэд, уг нийтлэлийг бага хурлын "Rootkits-ийн хамгаалалт: Intel BootGuard" тайланд үндэслэсэн болно. ZeroNights 2016 болон 29 дэх хурал DefCon Орос (хоёулаа танилцуулга энд).

Intel 64 архитектуртай компьютерийн платформд зориулсан програм хангамж

Эхлээд асуултанд хариулъя: Intel 64 архитектуртай орчин үеийн компьютерийн платформын програм хангамж юу вэ? Мэдээжийн хэрэг, UEFI BIOS. Гэхдээ ийм хариулт үнэн зөв биш байх болно. Энэ архитектурын ширээний (зөөврийн компьютер) хувилбарыг харуулсан зургийг харцгаая.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
Үүний үндэс нь холбоос юм:

  • Процессор (CPU, Төв процессор), үндсэн цөмүүдээс гадна суурилуулсан график цөм (бүх загварт байдаггүй) болон санах ойн хянагч (IMC, нэгдсэн санах ойн хянагч);
  • Чипсет (PCH, Platform Controller Hub), захын төхөөрөмжүүдтэй харилцах, дэд системүүдийг удирдахад зориулагдсан төрөл бүрийн хянагчуудыг агуулсан. Тэдгээрийн дотроос алдартай Intel Management Engine (ME) нь програм хангамжтай (Intel ME firmware) юм.

Зөөврийн компьютерт дээр дурдсан зүйлсээс гадна тэжээлийн дэд систем, мэдрэгчтэй самбар, гар, Fn товчлуурын (дэлгэцийн тод байдал, дууны хэмжээ) ажиллагааг хариуцдаг суурилуулсан хянагч (ACPI EC, Advanced Control and Power Interface Embedded Controller) шаардлагатай. , гарын арын гэрэлтүүлэг гэх мэт ) болон бусад зүйлс. Мөн өөрийн гэсэн програм хангамжтай.

Тиймээс, дээрх програм хангамжийн нийлбэр нь нийтлэг SPI флаш санах ойд хадгалагддаг компьютерийн платформ (системийн програм хангамж) юм. Энэхүү санах ойн хэрэглэгчид хаана байгаа талаар эргэлзэхгүй байхын тулд санах ойн агуулгыг дараах бүсүүдэд хуваана (зураг дээр харуулсны дагуу):

  • UEFI BIOS;
  • ACPI EC програм хангамж (Skylake процессорын микроархитектуртай тусдаа бүс гарч ирсэн (2015), гэхдээ зэрлэг байгальд бид үүнийг ашиглах жишээг хараахан хараагүй байгаа тул суурилуулсан хянагчийн програм хангамжийг UEFI BIOS-д оруулсан хэвээр байна) ;
  • Intel ME програм хангамж;
  • суурилуулсан GbE (Gigabit Ethernet) сүлжээний адаптерийн тохиргоо (MAC хаяг гэх мэт);
  • Флэш тодорхойлогч нь флаш санах ойн үндсэн хэсэг бөгөөд бусад бүс нутгуудын заагч болон тэдгээрт хандах зөвшөөрлийг агуулсан байдаг.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
SPI автобусны мастер нь чипсетэд суурилуулсан SPI хянагч бөгөөд энэ санах ойд нэвтрэх боломжтой бөгөөд бүс нутгуудын хандалтыг хязгаарлах үүрэгтэй (заасан зөвшөөрлийн дагуу). Хэрэв зөвшөөрлийг Intel-ийн санал болгож буй (аюулгүй байдлын үүднээс) утгуудаар тохируулсан бол SPI флаш хэрэглэгч бүр зөвхөн өөрийн бүс нутагт бүрэн хандах (унших/бичих) эрхтэй. Бусад нь зөвхөн унших боломжтой эсвэл хандах боломжгүй. Мэдэгдэж байгаа баримт: олон систем дээр CPU нь UEFI BIOS болон GbE-д бүрэн хандах боломжтой, зөвхөн флэш тодорхойлогч руу унших боломжтой, Intel ME бүс рүү огт ханддаггүй. Яагаад бүгдэд нь биш, олонх нь дээр вэ? Санал болгож буй зүйл нь шаардлагагүй. Бид өгүүллийн дараа илүү дэлгэрэнгүй ярих болно.

Компьютерийн платформын програмыг өөрчлөхөөс хамгаалах механизмууд

Мэдээжийн хэрэг, компьютерийн платформын програм хангамжийг болзошгүй эвдрэлээс хамгаалсан байх ёстой бөгөөд энэ нь болзошгүй халдагчид үүн дээр байр сууриа олж авах (OS-ийн шинэчлэлт / дахин суулгалтыг даван туулах), кодыг хамгийн давуу эрхтэй горимд ажиллуулах гэх мэт боломжийг олгоно. Мөн SPI флаш санах ойн бүсэд хандах хандалтыг хязгаарлах нь мэдээжийн хэрэг хангалтгүй юм. Тиймээс програм хангамжийг өөрчлөлтөөс хамгаалахын тулд үйлдлийн орчин бүрд хамаарах янз бүрийн механизмуудыг ашигладаг.

Тиймээс Intel ME програм хангамж нь бүрэн бүтэн байдал, жинхэнэ байдлыг хянахын тулд гарын үсэг зурсан бөгөөд ME UMA санах ойд ачаалах бүрт ME хянагч шалгадаг. Энэхүү баталгаажуулалтын үйл явцыг бид аль нэгэнд нь хэлэлцсэн нийтлэл, Intel ME дэд системд зориулагдсан.

Мөн ACPI EC програм хангамжийг дүрмээр бол зөвхөн бүрэн бүтэн байдлыг шалгадаг. Гэсэн хэдий ч, энэ хоёртын файл нь UEFI BIOS-д багтдаг тул бараг үргэлж UEFI BIOS-ийн ашигладаг ижил хамгаалалтын механизмд хамрагддаг. Тэдний тухай ярилцъя.

Эдгээр механизмуудыг хоёр төрөлд хувааж болно.

UEFI BIOS бүсэд бичих хамгаалалт

  1. SPI флаш санах ойн агуулгыг бичихээс хамгаалах холбогчоор физик хамгаалалт;
  2. PRx чипсет регистрийг ашиглан CPU хаягийн орон зайд UEFI BIOS бүсийн проекцийг хамгаалах;
  3. Чипсетийн бүртгэлд BIOS_WE/BLE болон SMM_BWP битүүдийг тохируулах замаар харгалзах SMI тасалдлыг үүсгэж, боловсруулах замаар UEFI BIOS бүсэд бичих оролдлогыг блоклох;
  4. Энэхүү хамгаалалтын илүү дэвшилтэт хувилбар бол Intel BIOS Guard (PFAT) юм.

Эдгээр механизмуудаас гадна үйлдвэрлэгчид өөрсдийн аюулгүй байдлын арга хэмжээг боловсруулж, хэрэгжүүлэх боломжтой (жишээлбэл, UEFI BIOS-ийн шинэчлэлт бүхий капсулд гарын үсэг зурах).

Тодорхой системд (борлуулагчаас хамаарч) дээрх хамгаалалтын механизмуудыг бүгдийг нь хэрэглэхгүй, огт хэрэглэхгүй, эсвэл эмзэг байдлаар хэрэгжиж болно гэдгийг анхаарах нь чухал. Та эдгээр механизм, тэдгээрийн хэрэгжилтийн нөхцөл байдлын талаар илүү ихийг уншиж болно энэ нийтлэл. Сонирхсон хүмүүст UEFI BIOS-ийн аюулгүй байдлын талаархи бүх цуврал нийтлэлийг уншихыг зөвлөж байна CodeRush.

UEFI BIOS баталгаажуулалт

Итгэмжлэгдсэн ачаалах технологийн тухай ярихад хамгийн түрүүнд "Secure Boot" гэж бодогддог. Гэсэн хэдий ч архитектурын хувьд энэ нь програм хангамж биш харин UEFI BIOS-ийн гаднах бүрэлдэхүүн хэсгүүдийн (драйверууд, ачаалагч гэх мэт) жинхэнэ эсэхийг шалгах зорилготой юм.

Тиймээс Intel нь Bay Trail микроархитектуртай (2012) SoC-д дээр дурдсан Secure Boot технологитой ямар ч ялгаагүй, идэвхгүй болсон Secure Boot (Verified Boot) техник хангамжийг хэрэгжүүлсэн. Хожим (2013) энэ механизмыг сайжруулж, Haswell микроархитектур бүхий ширээний компьютерт зориулж Intel Boot Guard нэрээр гаргасан.

Intel Boot Guard-ийг тайлбарлахаасаа өмнө Intel 64 архитектурын гүйцэтгэлийн орчинг харцгаая, эдгээр нь энэхүү найдвартай ачаалах технологийн итгэлцлийн үндэс юм.

Intel CPU

Кап нь процессор нь Intel 64 архитектурын үндсэн гүйцэтгэлийн орчин гэдгийг харуулж байна. Яагаад энэ нь итгэлцлийн үндэс вэ? Түүнийг ийм болгодог зүйл бол дараахь элементүүдийг эзэмшсэн явдал юм.

  • Microcode ROM нь бичил кодыг хадгалахад зориулагдсан тогтворгүй, дахин бичих боломжгүй санах ой юм. Микрокод нь хамгийн энгийн зааврыг ашиглан процессорын командын системийг хэрэгжүүлэх явдал гэж үздэг. Микрокодод бас тохиолддог алдаанууд. Тиймээс BIOS-оос та микрокодын шинэчлэлт бүхий хоёртын файлуудыг олох боломжтой (ROM-г дарж бичих боломжгүй тул ачаалах үед давхардсан). Эдгээр хоёртын файлуудын агуулга нь шифрлэгдсэн байдаг бөгөөд энэ нь дүн шинжилгээ хийхэд ихээхэн хүндрэл учруулдаг (тиймээс микрокодын тодорхой агуулгыг зөвхөн үүнийг хөгжүүлдэг хүмүүст мэддэг), бүрэн бүтэн байдал, жинхэнэ байдлыг хянахын тулд гарын үсэг зурсан;
  • Микрокодын шинэчлэлтийн агуулгыг тайлах AES түлхүүр;
  • бичил кодын шинэчлэлтийн гарын үсгийг баталгаажуулахад ашигладаг RSA нийтийн түлхүүрийн хэш;
  • RSA нийтийн түлхүүрийн хэш нь Intel-ийн боловсруулсан ACM (Authenticated Code Module) кодын модулиудын гарын үсгийг баталгаажуулдаг бөгөөд CPU нь BIOS-ыг ажиллуулахаас өмнө (microcode сайн уу) эсвэл тодорхой үйл явдал тохиолдох үед ажиллуулах боломжтой.

Intel ME

Манай блог энэ дэд системд зориулагдсан болно хоёр нийтлэл. Энэхүү гүйцэтгэх орчин нь чипсетэд суурилуулсан микроконтроллер дээр суурилдаг бөгөөд систем дэх хамгийн далд, давуу эрхтэй гэдгийг санацгаая.

Хэдийгээр нууцлагдмал боловч Intel ME нь итгэлцлийн үндэс юм, учир нь энэ нь:

  • ME ROM - эхлэх код, түүнчлэн Intel ME програм хангамжийн гарын үсгийг баталгаажуулдаг RSA нийтийн түлхүүрийн SHA256 хэш агуулсан тогтворгүй, дахин бичих боломжгүй санах ой (шинэчлэх арга байхгүй);
  • Нууц мэдээллийг хадгалах AES түлхүүр;
  • Компьютерийн системийн борлуулагчийн зааж өгсөн мэдээллийг багтаасан зарим мэдээллийг байнга хадгалахын тулд чипсетэд нэгтгэсэн гал хамгаалагчийн багцад (FPFs, Field Programmable Fuses) хандах.

Intel Boot Guard 1.x

Жижиг татгалзал. Энэ нийтлэлд бидний ашигладаг Intel Boot Guard технологийн хувилбарын дугаарууд нь дур зоргоороо бөгөөд Intel-ийн дотоод баримт бичигт ашигласан дугаарлалттай ямар ч холбоогүй байж магадгүй юм. Нэмж дурдахад, энэ технологийг хэрэгжүүлэх талаар энд өгсөн мэдээллийг урвуу инженерчлэлийн явцад олж авсан бөгөөд Intel Boot Guard-ийн техникийн үзүүлэлттэй харьцуулахад алдаатай байж магадгүй бөгөөд энэ нь хэзээ ч нийтлэгдэх магадлал багатай юм.

Тиймээс Intel Boot Guard (BG) нь техник хангамжаар дэмжигддэг UEFI BIOS баталгаажуулалтын баталгаажуулалтын технологи юм. [Platform Embedded Security Technology Revealed, Boot with Integrity, or Not Boot] номын товч тайлбараас харахад энэ нь найдвартай ачаалах хэлхээ болж ажилладаг. Үүний эхний холбоос бол RESET үйл явдлаар өдөөгдсөн CPU доторх ачаалах код (микро код) юм (BIOS дахь RESET вектортой андуурч болохгүй!). CPU нь SPI флэш санах ой дээр Intel (Intel BG startup ACM) боловсруулсан, гарын үсэг зурсан кодын модулийг олж, кэшдээ ачаалж, баталгаажуулдаг (CPU нь ACM-г баталгаажуулдаг нийтийн түлхүүрийн хэштэй гэдгийг дээр дурдсан байсан. гарын үсэг) ба эхэлнэ.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard

Энэхүү кодын модуль нь UEFI BIOS-ийн жижиг эхлэлийн хэсгийг шалгах үүрэгтэй - Initial Boot Block (IBB) бөгөөд энэ нь эргээд UEFI BIOS-ийн үндсэн хэсгийг шалгах функцийг агуулдаг. Тиймээс Intel BG нь үйлдлийн системийг ачаалахаас өмнө BIOS-ийн жинхэнэ эсэхийг шалгах боломжийг олгодог (үүнийг Secure Boot технологийн хяналтан дор хийх боломжтой).

Intel BG технологи нь хоёр үйлдлийн горимоор хангадаг (мөн нэг нь нөгөөдөө саад болохгүй, өөрөөр хэлбэл хоёр горимыг систем дээр идэвхжүүлж эсвэл хоёуланг нь идэвхгүй болгож болно).

Хэмжсэн ачаалах

Measured Boot (MB) горимд ачаалах бүрэлдэхүүн хэсэг бүр (CPU-ийн ачаалах ROM-оос эхлэн) TPM (Итгэмжлэгдсэн платформ модуль) -ийн чадавхийг ашиглан дараагийн нэгийг "хэмждэг". Мэдэхгүй хүмүүст тайлбарлая.

TPM нь PCR (Платформын тохиргооны бүртгэл)-тэй бөгөөд эдгээрт хэш хийх үйлдлийн үр дүнг дараах томъёоны дагуу бичдэг.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard

Тэдгээр. Одоогийн ПГУ-ын утга нь өмнөхөөсөө хамаарах ба эдгээр бүртгэлийг зөвхөн системийг RESET хийх үед л шинэчилнэ.

Тиймээс, MB горимд ПГУ нь тодорхой хугацааны туршид "хэмжих" код эсвэл өгөгдлийн өвөрмөц (хэшлэх үйлдлийн чадамжийн хүрээнд) тодорхойлогчийг тусгадаг. ПГУ-ын утгыг зарим өгөгдлийг шифрлэх (TPM_Seal) үйл ажиллагаанд ашиглаж болно. Үүний дараа тэдгээрийн шифрийг тайлах (TPM_Unseal) нь ачааллын үр дүнд ПГУ-ын утга өөрчлөгдөөгүй тохиолдолд л боломжтой болно (жишээлбэл, нэг ч "хэмжсэн" бүрэлдэхүүн хэсэг өөрчлөгдөөгүй).

Баталгаажсан ачаалах

UEFI BIOS-ийг өөрчлөх дуртай хүмүүсийн хувьд хамгийн муу зүйл бол ачаалах бүрэлдэхүүн хэсэг бүр дараагийнх нь бүрэн бүтэн байдал, жинхэнэ эсэхийг криптографаар баталгаажуулдаг Verified Boot (VB) горим юм. Баталгаажуулах алдаа гарсан тохиолдолд (нэг нь) тохиолддог:

  • 1 минутаас 30 минутын завсарлагатайгаар унтрах (ингэснээр хэрэглэгч компьютерээ яагаад ачаалахгүй байгааг ойлгох цаг гаргаж, боломжтой бол BIOS-ийг сэргээхийг оролддог);
  • нэн даруй унтрах (хэрэглэгч юу ч ойлгохгүй, юу ч хийхгүй байхын тулд);
  • тайван илэрхийлэлтэйгээр үргэлжлүүлэн ажиллах (энэ тохиолдолд аюулгүй байдлыг хангах цаг байхгүй, учир нь хийх зүйл илүү чухал байдаг).

Үйлдлийн сонголт нь Intel BG-ийн заасан тохиргооноос (тухайлбал, хэрэгжүүлэх бодлого гэж нэрлэгддэг) хамаардаг бөгөөд үүнийг компьютерийн платформ үйлдвэрлэгч тусгайлан зохион бүтээсэн хадгалах сан - чипсет гал хамгаалагч (FPFs) -д байнга бүртгэдэг. Энэ талаар бид дараа нь илүү дэлгэрэнгүй ярих болно.

Тохиргооноос гадна үйлдвэрлэгч нь RSA 2048 хоёр түлхүүрийг үүсгэж, хоёр өгөгдлийн бүтцийг бий болгодог (зураг дээр харуулав):

  1. Энэ манифестын SVN (Аюулгүй байдлын хувилбарын дугаар), дараагийн тунхаглалын нийтийн түлхүүрийн SHA256 хэш, RSA нийтийн түлхүүр (жишээ нь, програмын нийтийн хэсэг) агуулсан үйлдвэрлэгчийн үндсэн түлхүүр манифест (KEYM, OEM Root Key Manifest). борлуулагчийн үндсэн түлхүүр) энэхүү тунхаг бичигт гарын үсэг зурсан эсэх, гарын үсгийг өөрөө баталгаажуулах;
  2. IBB Manifest (IBBM, Initial Boot Block Manifest) нь энэхүү тунхаглалын SVN, IBB-ийн SHA256 хэш, энэхүү тунхаглалын гарын үсэг болон гарын үсгийг баталгаажуулах нийтийн түлхүүр юм.

OEM Root Key нийтийн түлхүүрийн SHA256 хэш нь Intel BG тохиргоотой адил чипсетийн гал хамгаалагчид (FPF) байнга бичигддэг. Хэрэв Intel BG-ийн тохиргоонд энэ технологийг оруулахаар заасан бол одооноос эхлэн зөвхөн OEM Root Key-ийн хувийн хэсгийн эзэмшигч нь энэ систем дээрх BIOS-г шинэчлэх боломжтой (өөрөөр хэлбэл эдгээр манифестуудыг дахин тооцоолох боломжтой), өөрөөр хэлбэл. худалдагч.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard

Зургийг харахад ийм урт баталгаажуулалтын гинжин хэлхээ шаардлагатай эсэхэд тэр даруй эргэлзээ төрж байна - тэд нэг манифест ашиглаж болох байсан. Яагаад юмыг төвөгтэй болгодог вэ?

Үнэн хэрэгтээ Intel ийм байдлаар борлуулагчдад өөр өөр IBB түлхүүрүүдийг бүтээгдэхүүнийхээ өөр өөр шугамд ашиглах, нэгийг нь үндсэн түлхүүр болгон ашиглах боломжийг олгодог. Хэрэв IBB түлхүүрийн хувийн хэсэг (хоёр дахь манифест гарын үсэг зурсан) алдагдсан бол энэ тохиолдол нь зөвхөн нэг бүтээгдэхүүний шугамд нөлөөлөх бөгөөд үйлдвэрлэгч шинэ хос үүсгэж, дахин тооцоолсон манифестуудыг дараагийн BIOS шинэчлэлтэнд оруулах хүртэл л нөлөөлнө.

Гэхдээ эх түлхүүр (эхний манифест гарын үсэг зурсан) эвдэрсэн бол түүнийг солих боломжгүй, хүчингүй болгох журам байхгүй. Энэ түлхүүрийн нийтийн хэсгийн хэш нь нэг удаа, бүрмөсөн FPF програмчлагдсан байна.

Intel Boot Guard тохиргоо

Одоо Intel BG тохиргоо болон түүнийг үүсгэх үйл явцыг нарийвчлан авч үзье. Хэрэв та Intel System Tool Kit (STK)-ийн Flash Image Tool хэрэгслийн GUI дээрх харгалзах табыг харвал Intel BG тохиргоонд үйлдвэрлэгчийн үндсэн түлхүүрийн нийтийн хэсгийн хэш, хэд хэдэн тодорхой бус үнэ цэнэ гэх мэт. Intel BG профайл.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard

Энэ профайлын бүтэц:

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 тугийг авч үзье. Үүнийг арилгах үед SPI флэш дээрх BG эхлүүлэх ACM модуль олдохгүй бол найдвартай ачаалах боломжгүй болно. Түүнд итгэлгүй байх болно.

VB горимын хэрэгжилтийн бодлогыг баталгаажуулах алдаа гарвал найдваргүй татан авалт хийхээр тохируулж болно гэж бид дээр бичсэн.

Ийм зүйлийг худалдагчийн үзэмжээр үлдээгээрэй...

GUI хэрэгсэл нь дараах "бэлэн" профайлыг хангадаг:

Өрөө
Горим
Тайлбар

0
Үгүй_FVME
Intel BG технологийг идэвхгүй болгосон

1
VE
VB горим идэвхжсэн тул хугацаа дууссанаар унтрах болно

2
VME
хоёр горим идэвхжсэн (VB ба MB), хугацаа дууссанаар унтрах

3
VM
системийг унтраахгүйгээр хоёр горим идэвхжсэн

4
FVE
VB горим идэвхжсэн, шууд унтрах

5
FVME
хоёр горим идэвхжсэн, шууд унтрах

Өмнө дурьдсанчлан, Intel BG-ийн тохиргоог системийн борлуулагч нэг удаа чипсетийн гал хамгаалагч (FPF) болгон бичих ёстой - програмчлах боломжтой бичил схемийн доторх мэдээллийн жижиг (баталгаагүй мэдээллийн дагуу ердөө 256 байт) техник хангамжийн хадгалалт. Intel-ийн үйлдвэрлэлийн байгууламжаас гадуур (тийм учраас яг Талбайд програмчлах боломжтой Гал хамгаалагч).

Энэ нь тохиргоог хадгалахад тохиромжтой, учир нь:

  • өгөгдөл хадгалах нэг удаагийн программчлах хэсэгтэй (Яг Intel BG тохиргоог хаана бичсэн);
  • Зөвхөн Intel ME үүнийг уншиж, програмчилж чадна.

Тиймээс, тодорхой систем дээр Intel BG технологийн тохиргоог тохируулахын тулд үйлдвэрлэгч үйлдвэрлэлийн явцад дараахь зүйлийг хийдэг.

  1. Flash Image Tool хэрэгслийг (Intel STK-аас) ашиглан Intel ME бүс дэх хувьсагч хэлбэрээр (FPF-ийн түр зуурын толин тусгал) өгөгдсөн Intel BG тохиргоотой програм хангамжийн дүрсийг үүсгэдэг;
  2. Flash програмчлалын хэрэгслийг ашиглан (Intel STK-аас) энэ зургийг системийн SPI флаш санах ойд бичиж, гэж нэрлэгддэг зүйлийг хаадаг. үйлдвэрлэлийн горим (энэ тохиолдолд холбогдох тушаалыг Intel ME руу илгээдэг).

Эдгээр үйлдлүүдийн үр дүнд Intel ME нь ME бүс дэх FPF-ийн толин тусгалаас FPF-д заасан утгуудыг хийж, SPI флэш тодорхойлогчдын нарийвчлалыг Intel-ээс санал болгосон утгуудаар тохируулна (эхэнд тайлбарласан). нийтлэл) болон системийг RESET хийнэ.

Intel Boot Guard хэрэгжилтийн дүн шинжилгээ

Энэ технологийн хэрэгжилтийг тодорхой жишээн дээр шинжлэхийн тулд бид Intel BG технологийн ул мөрийг дараах системүүдийг шалгасан.

систем
тайлбар

Гигабайт GA-H170-D3H
Skylake, дэмжлэг байна

Гигабайт GA-Q170-D3H
Skylake, дэмжлэг байна

Гигабайт GA-B150-HD3
Skylake, дэмжлэг байна

MSI H170A Gaming Pro
Skylake, дэмжлэг байхгүй

Lenovo ThinkPad 460
Skylake, дэмжигдсэн, технологийг идэвхжүүлсэн

Lenovo Yoga 2 Pro
Хасвелл, дэмжлэг байхгүй

Lenovo U330p
Хасвелл, дэмжлэг байхгүй

"Дэмжлэг" гэж бид Intel BG эхлүүлэх ACM модуль, дээр дурдсан манифестууд болон BIOS дахь харгалзах код байгааг хэлнэ. шинжилгээнд зориулсан хэрэгжилт.

Жишээ болгон оффисоос татсаныг авч үзье. Gigabyte GA-H170-D3H (хувилбар F4)-д зориулсан SPI флаш санах ойн үйлдвэрлэгчийн вэбсайтын зураг.

Intel CPU-ийн ачаалах ROM

Юуны өмнө Intel BG технологийг идэвхжүүлсэн тохиолдолд процессорын үйл ажиллагааны талаар ярилцъя.

Шифрлэгдсэн микрокодын дээжийг олох боломжгүй байсан тул доор тайлбарласан үйлдлүүд хэрхэн хэрэгждэг вэ (микро код эсвэл техник хангамжид) нээлттэй асуулт байна. Гэсэн хэдий ч орчин үеийн Intel процессорууд эдгээр үйлдлийг "хийж чаддаг" нь баримт юм.

RESET төлөвөөс гарсны дараа процессор (флэш санах ойн агуулгыг аль хэдийн хаягийн зайд буулгасан) FIT (Firmware Interface Table) хүснэгтийг олно. Үүнийг олоход хялбар, заагч нь FFFF FFC0h хаяг дээр бичигдсэн байдаг.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
Харж буй жишээн дээр FFD6 9500h утга энэ хаяг дээр байрлана. Энэ хаяг руу хандсанаар процессор нь FIT хүснэгтийг хардаг бөгөөд түүний агуулгыг бичлэг болгон хуваасан. Эхний оруулга нь дараах бүтцийн толгой хэсэг юм.

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

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
Зарим тодорхойгүй шалтгааны улмаас хяналтын нийлбэрийг эдгээр хүснэгтэд үргэлж тооцдоггүй (талбарыг тэгээр үлдээсэн).

Үлдсэн оруулгууд нь BIOS-ийг ажиллуулахаас өмнө задлан шинжлэх/гүйцэтгэх шаардлагатай янз бүрийн хоёртын файлуудыг зааж өгдөг, i.e. хуучин RESET вектор руу шилжихээс өмнө (FFFF FFF0h). Ийм оруулга бүрийн бүтэц дараах байдалтай байна.

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

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
EntryType талбар нь энэ оруулга зааж буй блокийн төрлийг зааж өгнө. Бид хэд хэдэн төрлийг мэддэг:

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

Одоо оруулгуудын нэг нь Intel BG эхлүүлэх ACM хоёртын файлын байршлыг зааж байгаа нь тодорхой байна. Энэхүү хоёртын файлын толгой бүтэц нь Intel-ийн боловсруулсан кодын модулиудын хувьд ердийн зүйл юм (ACM, микрокодын шинэчлэлт, 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];
};

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
Процессор энэ хоёртын файлыг кэшдээ ачаалж, баталгаажуулж, ажиллуулдаг.

Intel BG эхлүүлэх ACM

Энэхүү МУЗ-ийн ажилд дүн шинжилгээ хийсний үр дүнд тэрээр дараахь зүйлийг хийдэг нь тодорхой болсон.

  • чипсет гал хамгаалагч (FPFs) дээр бичигдсэн Intel ME-ээс Intel BG тохиргоог хүлээн авдаг;
  • KEYM болон IBBM-ийг олж, тэдгээрийг баталгаажуулдаг.

Эдгээр манифестуудыг олохын тулд ACM нь бүтцийн өгөгдлийг зааж өгөх хоёр төрлийн оруулгатай FIT хүснэгтийг ашигладаг (дээрх FIT_ENTRY_TYPES-ийг үзнэ үү).

Манифестуудыг нарийвчлан авч үзье. Эхний манифестийн бүтцээс бид хэд хэдэн тодорхой бус тогтмолууд, хоёр дахь манифестийн нийтийн түлхүүрийн хэш, олон нийтийн OEM Root Key-г үүрлэсэн бүтэц болгон харж байна:

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

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
OEM Root Key нийтийн түлхүүрийг шалгахын тулд бид SHA256 гал хамгаалагчийн хэшийг ашигладаг бөгөөд энэ үед Intel ME-ээс аль хэдийн хүлээн авсан гэдгийг санаж байна.

Хоёр дахь тунхаг бичиг рүүгээ орцгооё. Энэ нь гурван бүтцээс бүрдэнэ:

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

Эхнийх нь зарим тогтмолуудыг агуулдаг:

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

Хоёр дахь нь IBB-ийн SHA256 хэш болон IBB-ийн агуулгыг тодорхойлсон тодорхойлогчдын тоог (өөрөөр хэлбэл, хэшийг юунаас тооцдог вэ) агуулна.

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

IBB-ийн тодорхойлогч нар энэ бүтцийг дараалан дагаж мөрддөг. Тэдгээрийн агуулга дараах форматтай байна.

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

Энэ нь энгийн: тодорхойлогч бүр нь IBB хэсгийн хаяг/хэмжээг агуулна. Иймд эдгээр тодорхойлогчдын зааж өгсөн блокуудын холболт (дескрипторуудын дарааллаар) нь IBB байна. Дүрмээр бол IBB нь SEC ба PEI үе шатуудын бүх модулиудын цуглуулга юм.

Хоёрдахь манифест нь IBB нийтийн түлхүүр (эхний манифестын SHA256 хэшээр баталгаажсан) болон энэхүү манифестын гарын үсгийг агуулсан бүтцээр бөглөсөн болно:

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

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
Тиймээс, UEFI BIOS ажиллаж эхлэхээс өмнө процессор нь ACM-ийг эхлүүлэх бөгөөд энэ нь SEC болон PEI фазын код бүхий хэсгүүдийн агуулгын жинхэнэ эсэхийг шалгах болно. Дараа нь процессор ACM-ээс гарч, RESET векторыг дагаж BIOS-г ажиллуулж эхэлнэ.

Баталгаажсан PEI хуваалт нь BIOS-ийн үлдсэн хэсгийг (DXE код) шалгах модулийг агуулсан байх ёстой. Энэ модулийг IBV (Independent BIOS Vendor) эсвэл системийн үйлдвэрлэгч өөрөө аль хэдийн боловсруулж байна. Учир нь Зөвхөн Lenovo болон Gigabyte системүүд л бидний мэдэлд байсан бөгөөд Intel BG-ийн дэмжлэгтэй байсан тул эдгээр системээс гаргаж авсан кодыг харцгаая.

UEFI BIOS модуль LenovoVerifiedBootPei

Lenovo-ийн хувьд энэ нь Lenovo-ийн бүтээсэн LenovoVerifiedBootPei модуль {B9F2AC77-54C7-4075-B42E-C36325A9468D} болж хувирсан.

Үүний үүрэг бол (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 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 модуль BootGuardPei

Гигабайтын хувьд энэ нь AMI-ийн боловсруулсан BootGuardPei модуль {B41956E1-7CA2-42DB-9562-168389F0F066} байсан тул Intel BG дэмжлэгтэй ямар ч AMI BIOS-д байдаг.

Түүний үйлдлийн алгоритм нь арай өөр боловч энэ нь ижил зүйл рүү буцдаг:

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

Түүний хайж буй хэш хүснэгт {389CC6F2-1EA8-467B-AB8A-78E769AE2A15} дараах форматтай байна:

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

Аполло нуурын микроархитектур бүхий Intel SoC дээр суурилсан шинэ систем болох ASRock J4205-IT системээс олдсон Intel Boot Guard-ийн өөр нэг хэрэгжилтийн талаар товчхон яръя.

Хэдийгээр энэ хувилбар нь зөвхөн SoC-д ашиглагдах болно (Kaby Lake процессорын бичил архитектур бүхий шинэ системүүд Intel Boot Guard 1.x-ийг үргэлжлүүлэн ашигладаг) Intel SoC платформуудын шинэ архитектурын хувилбарыг судлах нь ихээхэн сонирхол татаж байна. жишээ нь:

  • BIOS болон Intel ME бүсүүд (эсвэл Intel SoC-ийн нэр томъёоны дагуу Intel TXE) одоо нэг IFWI бүс болжээ;
  • платформ дээр Intel BG идэвхжсэн ч FIT, KEYM, IBBM гэх мэт бүтэц флаш санах ойд олдсонгүй;
  • TXE ба ISH цөмүүдээс (x86) гадна гуравдахь цөмийг чипсет дээр нэмсэн (дашрамд хэлэхэд ARC) - PMC (Эрчим хүчний удирдлагын хянагч) нь эрчим хүчний дэд системийн ажиллагааг хангах, гүйцэтгэлийг хянахтай холбоотой юм.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
Шинэ IFWI бүсийн агуулга нь дараах модулиудын багц юм.

Биас
нэр
Тайлбар

0000 2000ц
SMIP
үйлдвэрлэгчийн гарын үсэг зурсан платформын тодорхой тохиргоо

0000 6000ц
RBEP
Intel TXE програм хангамжийн кодын хэсэг, x86, гарын үсэг зурсан Intel

0001 0000ц
PMCP
Intel PMC програм хангамжийн кодын хэсэг, ARC, Intel гарын үсэг зурсан

0002 0000ц
FTPR
Intel TXE програм хангамжийн кодын хэсэг, x86, гарын үсэг зурсан Intel

0007 B000h
UCOD
Intel гарын үсэг зурсан CPU-ийн микрокодын шинэчлэлтүүд

0008 0000ц
ОУХБХ
UEFI BIOS, SEC/PEI үе шатууд, x86, худалдагч гарын үсэг зурсан

0021 8000ц
ISHC
Intel ISH програм хангамжийн кодын хэсэг, x86, борлуулагч гарын үсэг зурсан

0025 8000ц
NFTP
Intel TXE програм хангамжийн кодын хэсэг, x86, гарын үсэг зурсан Intel

0036 1000ц
IUNP
үл мэдэгдэх

0038 1000ц
OBBP
UEFI BIOS, DXE үе шат, x86, гарын үсэг зураагүй

TXE програм хангамжид дүн шинжилгээ хийх явцад RESET хийсний дараа TXE нь CPU-ийн хаягийн орон зайн үндсэн агуулгыг (FIT, ACM, RESET вектор ...) бэлтгэх хүртэл процессорыг энэ байдалд байлгадаг нь тодорхой болсон. Нэмж дурдахад TXE нь энэ өгөгдлийг өөрийн SRAM-д байрлуулж, дараа нь процессор руу нэвтрэх эрхийг түр хугацаагаар олгож, RESET-ээс "суллана".

Руткитүүдээс болгоомжил

За, одоо "халуун" зүйл рүү орцгооё. Олон систем дээр SPI флэш тодорхойлогч нь SPI флэш санах ойн бүсүүдэд хандах зөвшөөрлийг агуулж байдгийг бид нэгэнтээ олж мэдсэн бөгөөд ингэснээр энэ санах ойн бүх хэрэглэгчид дурын бүс нутгийг бичиж, уншиж болно. Тэдгээр. арга ч үгүй.

MEinfo хэрэглүүрийг (Intel STK-аас) шалгасны дараа бид эдгээр системүүдийн үйлдвэрлэлийн горим хаалттай байгааг олж харсан тул чипсетийн гал хамгаалагч (FPF) нь тодорхойгүй төлөвт үлдсэн байна. Тиймээ, Intel BG ийм тохиолдолд асахгүй, унтраадаггүй.

Бид дараах системүүдийн тухай ярьж байна (Intel BG-ийн тухай болон өгүүлэлд сүүлд тайлбарлах болно, бид Haswell процессорын микроархитектур ба түүнээс дээш системүүдийн талаар ярих болно):

  • бүх Gigabyte бүтээгдэхүүн;
  • бүх MSI бүтээгдэхүүн;
  • Lenovo зөөврийн компьютерын 21 загвар, Lenovo серверийн 4 загвар.

Мэдээжийн хэрэг, бид нээлтийн талаар эдгээр борлуулагчид болон Intel-д мэдээлсэн.

Хангалттай хариу үйлдэл нь зөвхөн ирсэн Lenovoасуудлыг хэн таньсан ба нөхөөс гаргасан.

Gigabyte Тэд эмзэг байдлын талаарх мэдээллийг хүлээн авсан бололтой, гэхдээ ямар нэгэн байдлаар тайлбар хийгээгүй.

-тай харилцах MSI Таны нийтийн PGP түлхүүрийг илгээх (тэдэнд аюулгүй байдлын зөвлөгөөг шифрлэгдсэн хэлбэрээр илгээх) бидний хүсэлтийг бүрэн зогсоосон. Тэд "Тоног төхөөрөмжийн үйлдвэрлэгч бөгөөд PGP түлхүүр үйлдвэрлэдэггүй" гэж мэдэгджээ.

Гэхдээ гол зүйлдээ орцгооё. Гал хамгаалагч нь тодорхойгүй төлөвт үлдсэн тул хэрэглэгч (эсвэл халдагч) тэдгээрийг бие даан програмчилж болно (хамгийн хэцүү зүйл бол Intel STK олох). Үүнийг хийхийн тулд та дараах алхмуудыг хийх хэрэгтэй.

1. Windows үйлдлийн систем дээр ачаална уу (ерөнхийдөө, хэрэв та хүссэн үйлдлийн системдээ Intel STK-ийн аналогийг хөгжүүлбэл доор тайлбарласан үйлдлүүдийг Линукс дээр хийж болно). MEinfo хэрэгслийг ашиглан энэ системд гал хамгаалагч програмчлагдаагүй байгаа эсэхийг шалгаарай.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
2. Flash програмчлалын хэрэглүүрийг ашиглан флаш санах ойн агуулгыг уншина уу.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
3. Уншсан зургийг UEFI BIOS засварлах дурын хэрэгслээр нээж, шаардлагатай өөрчлөлтүүдийг хийж (жишээ нь rootkit-ийг нэвтрүүлэх), ME бүсэд байгаа KEYM болон IBBM бүтцийг үүсгэх/засах.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
Зураг нь RSA түлхүүрийн нийтийн хэсгийг онцлон харуулсан бөгөөд хэш нь Intel BG-ийн бусад тохиргооны хамт чипсетийн гал хамгаалагчид програмчлагдсан болно.

4. Flash Image Tool ашиглан шинэ програм хангамжийн дүрсийг бүтээ (Intel BG тохиргоог хийснээр).

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
5. Flash програмчлалын хэрэглүүрийг ашиглан флэш санах ойд шинэ зураг бичиж, ME бүс нь одоо Intel BG тохиргоог агуулж байгаа эсэхийг MEinfo ашиглан баталгаажуулна уу.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
6. Үйлдвэрлэлийн горимыг хаахын тулд Flash програмчлалын хэрэгслийг ашиглана уу.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
7. Систем дахин ачаалах бөгөөд үүний дараа та MEinfo-г ашиглан FPF программчлагдсан эсэхийг шалгах боломжтой.

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
Эдгээр үйлдлүүд үүрд Энэ систем дээр Intel BG-г идэвхжүүл. Үйлдлийг буцаах боломжгүй бөгөөд энэ нь:

  • Зөвхөн үндсэн түлхүүрийн хувийн хэсгийн эзэмшигч (өөрөөр хэлбэл Intel BG-г идэвхжүүлсэн хүн) энэ систем дээрх UEFI BIOS-ийг шинэчлэх боломжтой;
  • хэрэв та анхны программыг энэ системд буцааж өгвөл, жишээлбэл, программист ашиглавал энэ нь бүр асахгүй (баталгаажуулалтын алдаа гарсан тохиолдолд хэрэгжүүлэх бодлогын үр дагавар);
  • ийм UEFI BIOS-аас салахын тулд та програмчлагдсан FPF бүхий чипсетийг "цэвэр"-ээр солих хэрэгтэй (өөрөөр хэлбэл хэт улаан туяаны гагнуурын станц руу нэвтрэх боломжтой бол чипсетийг дахин гагнах эсвэл зүгээр л эх хавтанг солих) ).

Ийм rootkit юу хийж чадахыг ойлгохын тулд та өөрийн кодыг UEFI BIOS орчинд ажиллуулах боломжийг юу болгож байгааг үнэлэх хэрэгтэй. Хамгийн давуу эрхтэй процессорын горимд - SMM гэж хэлье. Ийм rootkit нь дараах шинж чанартай байж болно.

  • үйлдлийн системтэй зэрэгцэн гүйцэтгэгдсэн (та SMI тасалдлыг үүсгэхийн тулд боловсруулалтыг тохируулж болно, үүнийг таймер өдөөх болно);
  • SMM горимд байх бүх давуу талуудтай байх (RAM болон техник хангамжийн нөөцийн агуулгад бүрэн хандах, үйлдлийн системээс нууцлах);
  • SMM горимд ажиллуулах үед rootkit-ийн програмын кодыг шифрлэж, тайлж болно. Зөвхөн SMM горимд байгаа аливаа өгөгдлийг шифрлэлтийн түлхүүр болгон ашиглаж болно. Жишээлбэл, SMRAM дахь олон тооны хаягийн хэш. Энэ түлхүүрийг авахын тулд та SMM руу орох хэрэгтэй. Мөн үүнийг хоёр аргаар хийж болно. SMM кодоос RCE-г олоод ашиглах, эсвэл өөрийн SMM модулийг BIOS-д нэмэх, бид Boot Guard-г идэвхжүүлсэнээс хойш энэ нь боломжгүй юм.

Иймд энэхүү эмзэг байдал нь халдагчдад:

  • системд үл мэдэгдэх зорилготой далд, устгагдахгүй rootkit үүсгэх;
  • Intel SoC доторх чипсет цөмүүдийн аль нэгэнд, тухайлбал Intel ISH дээр өөрийн кодоо ажиллуулна уу (зургийг анхааралтай харна уу).

Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
Шрөдингерийн итгэмжлэгдсэн татаж авах. Intel Boot Guard
Intel ISH дэд системийн чадавхийг хараахан судлаагүй байгаа ч энэ нь Intel ME-ийн хувьд сонирхолтой халдлагын вектор болж байгаа бололтой.

үр дүн нь

  1. Энэхүү судалгаа нь Intel Boot Guard технологийн үйлдлийн техникийн тодорхойлолтыг авах боломжтой болсон. Тодорхой бус загвараар дамжуулан Intel-ийн аюулгүй байдлын хэд хэдэн нууцыг хасах.
  2. Системд устгах боломжгүй rootkit үүсгэх боломжийг олгодог халдлагын хувилбарыг танилцуулж байна.
  3. Орчин үеийн Intel процессорууд нь BIOS-ийг ажиллуулж эхлэхээс өмнө олон тооны өмчлөлийн кодыг гүйцэтгэх чадвартай болохыг бид харсан.
  4. Intel 64 архитектуртай платформууд үнэгүй програм хангамжийг ажиллуулахад улам бүр тохиромжгүй болж байна: техник хангамжийн баталгаажуулалт, олон тооны өмчийн технологи, дэд системүүд (SoC чипсетийн гурван цөм: x86 ME, x86 ISH болон ARC PMC).

Хөнгөлөлт

Үйлдвэрлэлийн горимыг зориудаар нээлттэй орхисон борлуулагчид үүнийг хаах хэрэгтэй. Одоогоор тэдний нүд л аниад байгаа бөгөөд Каби нуурын шинэ системүүд үүнийг харуулж байна.

Хэрэглэгчид -closemnf параметртэй Flash програмчлалын хэрэгслийг ажиллуулснаар өөрийн системүүд дээрээ Intel BG-г идэвхгүй болгож болно (тодорхойлогдсон эмзэг байдалд өртөмтгий). Нэгдүгээрт, та (MEinfo-г ашиглан) ME бүс дэх Intel BG тохиргоо нь FPF-д програмчлагдсаны дараа энэ технологийг унтраах боломжийг олгодог эсэхийг шалгах хэрэгтэй.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх