ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ вновь ΡΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΡΡ Π½Π° Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ бСзопасности ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ x86-совмСстимых ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ. Π’ этот Ρ€Π°Π· Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠΌ исслСдования являСтся Intel Boot Guard (Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с Intel BIOS Guard!) – Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-поддСрТанная тСхнология Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ BIOS, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Π΅Π½Π΄ΠΎΡ€ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ систСмы ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€ΠΌΠ°Π½Π΅Π½Ρ‚Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π° этапС производства. Ну Π° Ρ€Π΅Ρ†Π΅ΠΏΡ‚ исслСдования Π½Π°ΠΌ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌ: Ρ‚ΠΎΠ½ΠΊΠΎ Π½Π°Ρ€Π΅Π·Π°Ρ‚ΡŒ рСвСрс-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³ΠΎΠΌ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‘ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, Π½Π°ΠΏΠΎΠ»Π½ΠΈΠ² Π½Π΅Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ дСталями, ΠΏΡ€ΠΈΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎ вкусу Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ Π°Ρ‚Π°ΠΊ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ. Подбавим огня рассказом ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π³ΠΎΠ΄Π°ΠΌΠΈ клонируСмая ошибка Π½Π° производствС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Π½Π΄ΠΎΡ€ΠΎΠ² позволяСт ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ для создания Π² систСмС нСудаляСмого (Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€ΠΎΠΌ) скрытого Ρ€ΡƒΡ‚ΠΊΠΈΡ‚Π°.

ΠšΡΡ‚Π°Ρ‚ΠΈ, Π² основС ΡΡ‚Π°Ρ‚ΡŒΠΈ – Π΄ΠΎΠΊΠ»Π°Π΄Ρ‹ «На страТС Ρ€ΡƒΡ‚ΠΊΠΈΡ‚ΠΎΠ²: Intel BootGuardΒ» с ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ ZeroNights 2016 ΠΈ 29-ΠΉ встрСчи DefCon Russia (ΠΎΠ±Π΅ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ здСсь).

ΠŸΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Intel 64

Для Π½Π°Ρ‡Π°Π»Π° ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠΌ Π½Π° вопрос: Ρ‡Ρ‚ΠΎ являСтся ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΎΠΉ соврСмСнной ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Intel 64? РазумССтся, UEFI BIOS. Но Ρ‚Π°ΠΊΠΎΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ. Π”Π°Π²Π°ΠΉΡ‚Π΅ взгянСм Π½Π° рисунок, Π³Π΄Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ дСсктопный (лэптопный) Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ этой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
Основой являСтся связка:

  • ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π° (CPU, Central Processing Unit), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΏΠΎΠΌΠΈΠΌΠΎ основных ядСр, встроСно графичСскоС ядро (Π½Π΅ Π²ΠΎ всСх модСлях) ΠΈ Π²Π½Π΅Π΄Ρ€Ρ‘Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ памяти (IMC, Integrated Memory Controller);
  • ЧипсСта (PCH, Platform Controller Hub), содСрТащСго Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ для взаимодСйствия с ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΌΠΈ устройствами ΠΈ управлСния подсистСмами. Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… β€” нСбСзызвСстная Intel Management Engine (ME), Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° (Intel ME firmware).

Ноутбуки, ΠΏΠΎΠΌΠΈΠΌΠΎ Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ встроСнного ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° (ACPI EC, Advanced Control and Power Interface Embedded Controller), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ подсистСмы питания, Ρ‚Π°Ρ‡ΠΏΠ°Π΄Π°, ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Fn-клавиш (ΡΡ€ΠΊΠΎΡΡ‚ΡŒ экрана, Π³Ρ€ΠΎΠΌΠΊΠΎΡΡ‚ΡŒ Π·Π²ΡƒΠΊΠ°, подсвСтка ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ Ρ‚.ΠΏ.) ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ. И Ρƒ Π½Π΅Π³ΠΎ Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ своя ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ°.

Π’Π°ΠΊ Π²ΠΎΡ‚, ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ ΠΈ являСтся ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (system firmware), которая хранится Π½Π° ΠΎΠ±Ρ‰Π΅ΠΉ SPI Ρ„Π»ΡΡˆ-памяти. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ этой памяти Π½Π΅ ΠΏΡƒΡ‚Π°Π»ΠΈΡΡŒ, Π³Π΄Π΅ Ρ‡ΡŒΡ‘ Π»Π΅ΠΆΠΈΡ‚, содСрТимоС этой памяти Ρ€Π°Π·Π±ΠΈΡ‚ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹ (ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС):

  • UEFI BIOS;
  • ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° ACPI EC (ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π³ΠΈΠΎΠ½ появился с процСссорной ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Skylake (2015 Π³ΠΎΠ΄), Π½ΠΎ in-the-wild ΠΌΡ‹ ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π΅Π³ΠΎ использования, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° встроСнного ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав UEFI BIOS);
  • ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° Intel ME;
  • конфигурация (MAC-адрСс ΠΈ Ρ‚.Π΄.) встроСнного сСтСвого Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° GbE (Gigabit Ethernet);
  • Ρ„Π»ΡΡˆ-дСскрипторы (Flash Descriptors) – Π³Π»Π°Π²Π½Ρ‹ΠΉ Ρ€Π΅Π³ΠΈΠΎΠ½ Ρ„Π»ΡΡˆ-памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° доступ ΠΊ Π½ΠΈΠΌ.

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
Π Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ доступа ΠΊ Ρ€Π΅Π³ΠΈΠΎΠ½Π°ΠΌ (Π² соотвСтствии с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ) занимаСтся мастСр ΡˆΠΈΠ½Ρ‹ SPI – встроСнный Π² чипсСт SPI-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ осущСствляСтся ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ этой памяти. Если Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ установлСны Π² Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ (ΠΈΠ· сообраТСний бСзопасности) ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Intel значСния, Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ SPI Ρ„Π»ΡΡˆ-памяти ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ (Ρ‡Ρ‚Π΅Π½ΠΈΠ΅/запись) Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ своСму Ρ€Π΅Π³ΠΈΠΎΠ½Ρƒ. А ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ β€” Π»ΠΈΠ±ΠΎ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, Π»ΠΈΠ±ΠΎ нСдоступны. Π˜Π·Π²Π΅ΡΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΊΡ‚: Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… систСмах CPU ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊ UEFI BIOS ΠΈ GbE, доступ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ„Π»ΡΡˆ-дСскрипторам, Π° ΠΊ Ρ€Π΅Π³ΠΈΠΎΠ½Ρƒ Intel ME доступа Π½Π΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ…, Π° Π½Π΅ Π½Π° всСх? Π§Ρ‚ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎ, Ρ‚ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ расскаТСм Π΄Π°Π»Π΅Π΅ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ слСдуСт Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ ΠΎΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΈ, которая ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π±Ρ‹ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒΡΡ Π² Π½Π΅ΠΉ (ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ обновлСния/пСрСустановки ОБ), ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свой ΠΊΠΎΠ΄ Π² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… ΠΈ Ρ‚.Π΄. И разграничСния доступа ΠΊ Ρ€Π΅Π³ΠΈΠΎΠ½Π°ΠΌ SPI Ρ„Π»ΡΡˆ-памяти, разумССтся, Π½Π΅ достаточно. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΎΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, спСцифичныС для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ срСды исполСния.

Π’Π°ΠΊ, ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° Intel ME подписана для контроля цСлостности ΠΈ подлинности, ΠΈ провСряСтся ME-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΅Ρ‘ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ME UMA. Π­Ρ‚ΠΎΡ‚ процСсс Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡƒΠΆΠ΅ рассматривался Π½Π°ΠΌΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· статСй, посвящённой подсистСмС Intel ME.

А ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° ACPI EC, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, провСряСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ. Однако, Π²Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ этот Π±ΠΈΠ½Π°Ρ€ΡŒ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π² состав UEFI BIOS, Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Ρ‚Π΅ ΠΆΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ UEFI BIOS. О Π½ΠΈΡ… ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ.

Π­Ρ‚ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ.

Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ записи Π² Ρ€Π΅Π³ΠΈΠΎΠ½ UEFI BIOS

  1. ЀизичСская Π·Π°Ρ‰ΠΈΡ‚Π° содСрТимого SPI Ρ„Π»ΡΡˆ-памяти write-protect Π΄ΠΆΠ°ΠΌΠΏΠ΅Ρ€ΠΎΠΌ;
  2. Π—Π°Ρ‰ΠΈΡ‚Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Π° UEFI BIOS Π² адрСсном пространствС CPU с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PRx рСгистров чипсСта;
  3. Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ записи Π² Ρ€Π΅Π³ΠΈΠΎΠ½ UEFI BIOS Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ прСрывания SMI ΠΏΡƒΡ‚Ρ‘ΠΌ выставлСния Π±ΠΈΡ‚ΠΎΠ² BIOS_WE/BLE ΠΈ SMM_BWP Π² рСгистрах чипсСта;
  4. Π‘ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ – Intel BIOS Guard (PFAT).

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ этим ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌ, Π²Π΅Π½Π΄ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ собствСнныС ΠΌΠ΅Ρ€Ρ‹ бСзопасности (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, подписываниС капсул с обновлСниями UEFI BIOS).

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ систСмС (зависит ΠΎΡ‚ Π²Π΅Π½Π΄ΠΎΡ€Π°) ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π΅ всС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹, Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ уязвимо Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этих ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°Ρ… ΠΈ ΠΎ ситуации с ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΌΡΡ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ со всСм Ρ†ΠΈΠΊΠ»ΠΎΠΌ статСй ΠΏΠΎ бСзопасности UEFI BIOS ΠΎΡ‚ CodeRush.

ВСрификация подлинности UEFI BIOS

Когда ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ тСхнологиях Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡƒΠΌ, β€” Secure Boot. Однако, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ ΠΎΠ½ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подлинности Π²Π½Π΅ΡˆΠ½ΠΈΡ…, ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ UEFI BIOS, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Ρ‚.Π΄.), Π° Π½Π΅ самой ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ компания Intel Π² SoC-Π°Ρ… с ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Bay Trail (2012 Π³ΠΎΠ΄) Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π½Π΅ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹ΠΉ Secure Boot (Verified Boot), Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ Secure Boot. ПозТС (2013 Π³ΠΎΠ΄) этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π±Ρ‹Π» ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ ΠΈ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Intel Boot Guard Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ для дСсктопов с ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Haswell.

ΠŸΠ΅Ρ€Π΅Π΄ описаниСм Intel Boot Guard разбСрёмся со срСдами исполнСния Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Intel 64, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΏΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Ρƒ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ корнями довСрия для этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Intel CPU

Кэп подсказываСт, Ρ‡Ρ‚ΠΎ процСссор являСтся основной срСдой исполнСния Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Intel 64. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ ΠΆΠ΅ ΠΎΠ½ являСтся ΠΊΠΎΡ€Π½Π΅ΠΌ довСрия? ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π΅Π³ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ±Π»Π°Π΄Π°Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ элСмСнтами:

  • Microcode ROM β€” энСргонСзависимая, нСпСрСзаписываСмая ΠΏΠ°ΠΌΡΡ‚ΡŒ для хранСния ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π°. БчитаСтся, Ρ‡Ρ‚ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄ΠΎΠΌ являСтся имплСмСнтация систСмы ΠΊΠΎΠΌΠ°Π½Π΄ процСссора Π½Π° ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… инструкциях. Π’ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π΅ Ρ‚ΠΎΠΆΠ΅ ΡΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π±Π°Π³ΠΈ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π² BIOS ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π±ΠΈΠ½Π°Ρ€ΠΈ с обновлСниями ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π° (Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‚.ΠΊ. ROM нСльзя ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ). Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ этих Π±ΠΈΠ½Π°Ρ€Π΅ΠΉ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ услоТняСт Π°Π½Π°Π»ΠΈΠ· (поэтому, ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ содСрТаниС ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π° извСстно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚), ΠΈ подписано, для контроля цСлостности ΠΈ подлинности;
  • AES ΠΊΠ»ΡŽΡ‡ для Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ содСрТимого ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π°;
  • Ρ…Π΅Ρˆ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° RSA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ провСряСтся подпись ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π°;
  • Ρ…Π΅Ρˆ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° RSA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ провСряСтся подпись Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Intel ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ACM (Authenticated Code Module), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ CPU ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° исполнСния BIOS (ΠΏΡ€ΠΈΠ²Π΅Ρ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Ρƒ) ΠΈΠ»ΠΈ Π²ΠΎ врСмя Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… событий.

Intel ME

Π”Π°Π½Π½ΠΎΠΉ подсистСмС Π² нашСм Π±Π»ΠΎΠ³Π΅ Π±Ρ‹Π»ΠΎ посвящСно Π°ΠΆ Π΄Π²Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Напомним, Ρ‡Ρ‚ΠΎ эта исполнимая срСда основана Π½Π° встроСнном Π² чипсСт ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ ΠΈ являСтся самой скрытой ΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π² систСмС.

НСсмотря Π½Π° ΡΠΊΡ€Ρ‹Ρ‚Π½ΠΎΡΡ‚ΡŒ, Intel ME Ρ‚ΠΎΠΆΠ΅ являСтся ΠΊΠΎΡ€Π½Π΅ΠΌ довСрия, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅Π΅Ρ‚:

  • ME ROM β€” ΡΠ½Π΅Ρ€Π³ΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ, Π½Π΅ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ (способа обновлСния Π½Π΅ прСдусмотрСно), ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ стартовый ΠΊΠΎΠ΄, Π° Ρ‚Π°ΠΊΠΆΠ΅ SHA256 Ρ…Π΅Ρˆ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° RSA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ провСряСтся подпись ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Intel ME;
  • 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], Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ½Π° ΠΊΠ°ΠΊ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. И ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π·Π²Π΅Π½ΠΎ Π² Π½Π΅ΠΉ β€” Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄) Π²Π½ΡƒΡ‚Ρ€ΠΈ CPU, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСтся ΠΏΠΎ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ RESET (Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с RESET-Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ Π² BIOS!). 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

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Measured Boot (MB) ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (начиная с CPU boot ROM) «измСряСт» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ возмоТности TPM (Trusted Platform Module). Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ Π² курсС, поясним.

Π£ TPM Π΅ΡΡ‚ΡŒ PCR-Ρ‹ (Platform Configuration Registers), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ записываСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard

Π’.Π΅. Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ PCR зависит ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ, ΠΏΡ€ΠΈ этом ΠΎΠ±Π½ΡƒΠ»ΡΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ рСгистры Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ RESET-Π΅ систСмы.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ MB Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ PCR-Ρ‹ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ (Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… возмоТностСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ) ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Β«ΠΈΠ·ΠΌΠ΅Ρ€ΡΠ»ΠΈΡΡŒΒ». ЗначСния PCR ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (TPM_Seal). ПослС этого, ΠΈΡ… Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° (TPM_Unseal) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС, Ссли значСния PCR Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π΅ измСнились (Ρ‚.Π΅. Π½ΠΈ ΠΎΠ΄ΠΈΠ½ «измСряСмый» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π΅ Π±Ρ‹Π» ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½).

Verified Boot

Π‘Π°ΠΌΡ‹ΠΌ ΡΡ‚Ρ€Π°ΡˆΠ½Ρ‹ΠΌ для Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ UEFI BIOS являСтся Ρ€Π΅ΠΆΠΈΠΌ Verified Boot (VB), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ криптографичСски провСряСт Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ. А Π² случаС ошибки Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, происходит (ΠΎΠ΄Π½ΠΎ ΠΈΠ·):

  • Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ ΠΎΡ‚ 1 ΠΌΠΈΠ½ Π΄ΠΎ 30 ΠΌΠΈΠ½ (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ успСл ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Ρƒ Π½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½Π΅ грузится, ΠΈ, ΠΏΠΎ возмоТности, попытался Π±Ρ‹ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ BIOS);
  • Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ успСл ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈ, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ);
  • ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π΅Π²ΠΎΠ·ΠΌΡƒΡ‚ΠΈΠΌΡ‹ΠΌ Π²ΠΈΠ΄ΠΎΠΌ (Ρ‚ΠΎΡ‚ случай ΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎ бСзопасности, вСдь Π΅ΡΡ‚ΡŒ Π΄Π΅Π»Π° ΠΏΠΎΠ²Π°ΠΆΠ½Π΅Π΅).

Π’Ρ‹Π±ΠΎΡ€ дСйствия зависит ΠΎΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Intel BG (Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΎΡ‚ Ρ‚.Π½. enforcement policy), которая Π²Π΅Π½Π΄ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠ΅Ρ€ΠΌΠ°Π½Π΅Π½Ρ‚Π½ΠΎ записываСтся Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ – Ρ„ΡŒΡŽΠ·Ρ‹ чипсСта (FPF-Ρ‹). ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π½Π° этом ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅ остановимся ΠΏΠΎΠ·ΠΆΠ΅.

Помимо ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π²Π΅Π½Π΄ΠΎΡ€ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π²Π° ΠΊΠ»ΡŽΡ‡Π° RSA 2048 ΠΈ создаёт Π΄Π²Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… (ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° рисункС):

  1. ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π²Π΅Π½Π΄ΠΎΡ€Π° (KEYM, OEM Root Key Manifest), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠ»Π°Π΄Ρ‘Ρ‚ SVN (Security Version Number) этого манифСста, SHA256 Ρ…Π΅Ρˆ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ манифСста, ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ RSA (Ρ‚.Π΅. ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π²Π΅Π½Π΄ΠΎΡ€Π°) для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подписи этого манифСста ΠΈ саму подпись;
  2. ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚ IBB (IBBM, Initial Boot Block Manifest), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠ»Π°Π΄Ρ‘Ρ‚ SVN этого манифСста, SHA256 Ρ…Π΅Ρˆ IBB, ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подписи этого манифСста ΠΈ саму подпись.

SHA256 Ρ…Π΅Ρˆ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° OEM Root Key ΠΏΠ΅Ρ€ΠΌΠ°Π½Π΅Π½Ρ‚Π½ΠΎ записываСтся Π²ΠΎ Ρ„ΡŒΡŽΠ·Ρ‹ чипсСта (FPF-Ρ‹), ΠΊΠ°ΠΊ ΠΈ конфигурация Intel BG. Если конфигурация Intel BG прСдусматриваСт Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Ρ‚ΠΎ с этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° Π΄Π°Π½Π½ΠΎΠΉ систСмС ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ BIOS (Ρ‚.Π΅. ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ эти манифСсты) ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Π»Π°Π΄Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠΉ части OEM Root Key, Ρ‚.Π΅. Π²Π΅Π½Π΄ΠΎΡ€.

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard

ΠŸΡ€ΠΈ взглядС Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ сразу Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ сомнСния Π² нСобходимости Ρ‚Π°ΠΊΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ – ΠΌΠΎΠΆΠ½ΠΎ ΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ манифСст. Π—Π°Ρ‡Π΅ΠΌ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡ‚ΡŒ?

На самом Π΄Π΅Π»Π΅ компания Intel Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ прСдоставляСт Π²Π΅Π½Π΄ΠΎΡ€Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ IBB для Ρ€Π°Π·Π½Ρ‹Ρ… Π»ΠΈΠ½Π΅Π΅ΠΊ своих ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈ ΠΎΠ΄ΠΈΠ½ – Π² качСствС ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ. Если ΡƒΡ‚Π΅Ρ‡Ρ‘Ρ‚ приватная Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π° IBB (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ подписываСтся Π²Ρ‚ΠΎΡ€ΠΎΠΉ манифСст), ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ Π»ΠΈΠ½Π΅ΠΉΠΊΡƒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Π΅Π½Π΄ΠΎΡ€ Π½Π΅ сгСнСрируСт Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ ΠΈ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ пСрСсчитанныС манифСсты Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ BIOS.

Но Ссли Π±ΡƒΠ΄Π΅Ρ‚ скомпромСтирован ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ»ΡŽΡ‡ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ подписываСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ манифСст), Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ нСльзя, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Ρ€Π΅Π²ΠΎΠΊΠ°Ρ†ΠΈΠΈ Π½Π΅ прСдусмотрСно Ρ‚.ΠΊ. Ρ…Π΅Ρˆ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΉ части этого ΠΊΠ»ΡŽΡ‡Π° программируСтся Π² FPF-Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ навсСгда.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Intel Boot Guard

Π’Π΅ΠΏΠ΅Ρ€ΡŒ остановимся ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Intel BG ΠΈ процСссС Π΅Ρ‘ создания. Если Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Π² GUI ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Flash Image Tool ΠΈΠ· ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π° Intel System Tool Kit (STK), ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ конфигурация 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. Когда ΠΎΠ½ снят, Π² случаС, Ссли ΠΌΠΎΠ΄ΡƒΠ»ΡŒ BG startup ACM Π½Π° SPI Ρ„Π»ΡΡˆ-памяти Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½, Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Π‘ΡƒΠ΄Π΅Ρ‚ нСдовСрСнная.

Π’Ρ‹ΡˆΠ΅ ΠΌΡ‹ ΡƒΠΆΠ΅ писали, Ρ‡Ρ‚ΠΎ enforcement policy для Ρ€Π΅ΠΆΠΈΠΌΠ° VB ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ошибкС Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, нСдовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°.

ΠžΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ Π½Π° усмотрСниС вСндоров…

GUI ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ прСдусматриваСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Β«Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅Β» ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ:

НомСр
Π Π΅ΠΆΠΈΠΌ
ОписаниС

0
No_FVME
тСхнология Intel BG Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π°

1
VE
Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Ρ€Π΅ΠΆΠΈΠΌ VB, Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ

2
VME
Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΎΠ±Π° Ρ€Π΅ΠΆΠΈΠΌΠ° (VB ΠΈ MB), Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ

3
VM
Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΎΠ±Π° Ρ€Π΅ΠΆΠΈΠΌΠ°, Π±Π΅Π· Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ систСмы

4
FVE
Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Ρ€Π΅ΠΆΠΈΠΌ VB, Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

5
FVME
Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΎΠ±Π° Ρ€Π΅ΠΆΠΈΠΌΠ°, Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, конфигурация Intel BG Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π· ΠΈ навсСгда записана Π²Π΅Π½Π΄ΠΎΡ€ΠΎΠΌ систСмы Π²ΠΎ Ρ„ΡŒΡŽΠ·Ρ‹ чипсСта (FPF-Ρ‹) – нСбольшоС (ΠΏΠΎ Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ свСдСниям, всСго 256 Π±Π°ΠΉΡ‚) Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ чипсСта, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π²Π½Π΅ производствСнных мощностСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Intel (поэтому, ΠΈΠΌΠ΅Π½Π½ΠΎ Field Programmable Fuses).

Оно ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для хранСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ:

  • ΠΈΠΌΠ΅Π΅Ρ‚ one-time-programmable ΠΎΠ±Π»Π°ΡΡ‚ΡŒ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… (ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ‚ΡƒΠ΄Π°, ΠΊΡƒΠ΄Π° записываСтся конфигурация Intel BG);
  • Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Intel ME.

Π˜Ρ‚Π°ΠΊ, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ для Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Intel BG Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ систСмС, Π²Π΅Π½Π΄ΠΎΡ€ Π²ΠΎ врСмя производства Π΄Π΅Π»Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  1. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Flash Image Tool (ΠΈΠ· Intel STK) создаёт ΠΎΠ±Ρ€Π°Π· ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ Intel BG Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Π° Intel ME (Ρ‚.Π½. Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π·Π΅Ρ€ΠΊΠ°Π»ΠΎ для FPF-ΠΎΠ²);
  2. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Flash Programming Tool (ΠΈΠ· Intel STK) записываСт этот ΠΎΠ±Ρ€Π°Π· Π½Π° SPI Ρ„Π»ΡΡˆ-ΠΏΠ°ΠΌΡΡ‚ΡŒ систСмы ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ‚.Π½. manufacturing mode (ΠΏΡ€ΠΈ этом, производится ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Intel ME).

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Intel ME скоммитит Π² FPF-Ρ‹ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ значСния ΠΈΠ· Π·Π΅Ρ€ΠΊΠ°Π»Π° для FPF-ΠΎΠ² Π² ME Ρ€Π΅Π³ΠΈΠΎΠ½Π΅, выставит Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² SPI Ρ„Π»ΡΡˆ-дСскрипторах Π² Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Intel значСния (ΠΎΠΏΠΈΡΡ‹Π²Π°Π»ΠΎΡΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ) ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ RESET систСмы.

Анализ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Intel Boot Guard

Π‘ Ρ†Π΅Π»ΡŒΡŽ Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ систСмы Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ наличия слСдов Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Intel BG:

БистСма
ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Gigabyte GA-H170-D3H
Skylake, Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°

Gigabyte GA-Q170-D3H
Skylake, Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°

Gigabyte GA-B150-HD3
Skylake, Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°

MSI H170A Gaming Pro
Skylake, Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ

Lenovo ThinkPad 460
Skylake, Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°, тСхнология Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°

Lenovo Yoga 2 Pro
Haswell, Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ

Lenovo U330p
Haswell, Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ

Под Β«ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉΒ» понимаСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Intel BG startup ACM модуля, упомянутых Π²Ρ‹ΡˆΠ΅ манифСстов ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² BIOS, Ρ‚.Π΅. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для Π°Π½Π°Π»ΠΈΠ·Π°.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ скачСнный с ΠΎΡ„. сайта Π²Π΅Π½Π΄ΠΎΡ€Π° ΠΎΠ±Ρ€Π°Π· SPI Ρ„Π»ΡΡˆ-памяти для Gigabyte GA-H170-D3H (вСрсия F4).

Intel CPU boot 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, Ρ‚.Π΅. Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° legacy 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 startup 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 startup ACM

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого ACM стало ясно, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΡ‚ Intel ME ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Intel BG, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π²ΠΎ Ρ„ΡŒΡŽΠ·Ρ‹ чипсСта (FPF-Ρ‹);
  • Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ манифСсты 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
};

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ находится SHA256 Ρ…Π΅Ρˆ IBB ΠΈ число дСскрипторов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ содСрТимоС 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) ΠΈΠ»ΠΈ сам Π²Π΅Π½Π΄ΠΎΡ€ систСмы. Π’.ΠΊ. ΠΎΠΊΠ°Π·Π°Π²ΡˆΠΈΡ…ΡΡ Π² нашСм распоряТСнии ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Intel BG оказались Ρ‚ΠΎΠ»ΡŒΠΊΠΎ систСмы Lenovo ΠΈ Gigabyte, рассмотрим ΠΊΠΎΠ΄, ΠΈΠ·Π²Π»Π΅Ρ‡Ρ‘Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· этих систСм.

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

Π’ случаС с 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;
}

Π₯Сш Ρ‚Π°Π±Π»ΠΈΡ†Π° {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 Boot Guard, которая Π±Ρ‹Π»Π° Π½Π°ΠΉΠ΄Π΅Π½Π° Π² Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΠΎΠΉ систСмС Π½Π° основС Intel SoC с ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Apollo Lake β€” ASRock J4205-IT.

Π₯отя эта вСрсия Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ лишь Π² SoC-Π°Ρ… (Π½ΠΎΠ²Ρ‹Π΅ систСмы с процСссорной ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Kaby Lake ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Intel Boot Guard 1.x), ΠΎΠ½Π° прСдставляСт большой интСрСс Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Π½Π° Intel SoC, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΡ‹Π΅ измСнСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹ BIOS ΠΈ Intel ME (Π²Π΅Ρ€Π½Π΅Π΅ Intel TXE, согласно Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ для Intel SoC) Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠΌ IFWI;
  • Ρ…ΠΎΡ‚ΡŒ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Π±Ρ‹Π» Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Intel BG, Ρ‚Π°ΠΊΠΈΡ… структур, ΠΊΠ°ΠΊ FIT, KEYM, IBBM Π½Π΅ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π²ΠΎ Ρ„Π»ΡΡˆ-памяти;
  • ΠΏΠΎΠΌΠΈΠΌΠΎ TXE ΠΈ ISH ядСр (x86), Π² чипсСт Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ ядро (снова ARC, кстати) – PMC (Power Management Controller), связанный с обСспСчСниСм работоспособности подсистСмы питания ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π΅Π³ΠΈΠΎΠ½Π° IFWI прСдставляСт собой Π½Π°Π±ΠΎΡ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ:

Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅
Имя
ОписаниС

0000 2000h
SMIP
нСкая конфигурация ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, подписано Π²Π΅Π½Π΄ΠΎΡ€ΠΎΠΌ

0000 6000h
RBEP
ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Intel TXE, x86, подписано Intel

0001 0000h
PMCP
ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Intel PMC, ARC, подписано Intel

0002 0000h
FTPR
ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Intel TXE, x86, подписано Intel

0007 B000h
UCOD
обновлСния ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π° для CPU, подписано Intel

0008 0000h
IBBP
UEFI BIOS, Ρ„Π°Π·Ρ‹ SEC/PEI, x86, подписано Π²Π΅Π½Π΄ΠΎΡ€ΠΎΠΌ

0021 8000h
ISHC
ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Intel ISH, x86, подписано Π²Π΅Π½Π΄ΠΎΡ€ΠΎΠΌ

0025 8000h
NFTP
ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Intel TXE, x86, подписано Intel

0036 1000h
IUNP
нСизвСстно

0038 1000h
OBBP
UEFI BIOS, Ρ„Π°Π·Π° DXE, x86, Π½Π΅ подписано

Π’ Ρ…ΠΎΠ΄Π΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ TXE стало ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ послС RESET-Π° TXE Π΄Π΅Ρ€ΠΆΠΈΡ‚ процСссор Π² этом состоянии Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ содСрТимоС адрСсного пространства для CPU (FIT, ACM, RESET-Π²Π΅ΠΊΡ‚ΠΎΡ€ …). ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ TXE Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ эти Π΄Π°Π½Π½Ρ‹Π΅ Ρƒ сСбя Π² SRAM, послС Ρ‡Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ прСдоставляСт процСссору Ρ‚ΡƒΠ΄Π° доступ ΠΈ «отпускаСт» Π΅Π³ΠΎ ΠΈΠ· RESET-Π°.

На страТС Ρ€ΡƒΡ‚ΠΊΠΈΡ‚ΠΎΠ²

Ну Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ «горячСму». ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ ΠΌΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… систСмах Π² SPI Ρ„Π»ΡΡˆ-дСскрипторах записаны Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° доступ ΠΊ Ρ€Π΅Π³ΠΈΠΎΠ½Π°ΠΌ SPI Ρ„Π»ΡΡˆ-памяти Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ всС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ этой памяти ΠΌΠΎΠ³ΡƒΡ‚ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ, ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ любой Ρ€Π΅Π³ΠΈΠΎΠ½. Π’.Π΅. Π½ΠΈΠΊΠ°ΠΊ.

ПослС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ MEinfo (ΠΈΠ· Intel STK) ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ manufacturing mode Π½Π° этих систСмах Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ„ΡŒΡŽΠ·Ρ‹ чипсСта (FPF-Ρ‹) оставлСны Π² Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ состоянии. Π”Π°, Intel BG Π² Ρ‚Π°ΠΊΠΈΡ… случаях Π½ΠΈ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½, Π½ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½.

Π Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… систСмах (касаСмо Intel BG ΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΎ Π΄Π°Π»Π΅Π΅ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ систСмах с процСссорной ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Haswell ΠΈ Π²Ρ‹ΡˆΠ΅):

  • вся продукция Gigabyte;
  • вся продукция MSI;
  • 21 модСль Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΎΠ² Lenovo ΠΈ 4 ΠΌΠΎΠ΄Π΅Π»ΠΈ сСрвСров Lenovo.

РазумССтся, ΠΌΡ‹ сообщили ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΊΠ΅ этим Π²Π΅Π½Π΄ΠΎΡ€Π°ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Intel.

АдСкватная рСакция послСдовала Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ Lenovo, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ·Π½Π°Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ выпустили ΠΏΠ°Ρ‚Ρ‡.

Gigabyte Π²Ρ€ΠΎΠ΄Π΅ ΠΈ приняли ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± уязвимости, Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ.

ΠžΠ±Ρ‰Π΅Π½ΠΈΠ΅ с MSI вовсС Π·Π°ΡΡ‚ΠΎΠΏΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π½Π° нашСй ΠΏΡ€ΠΎΡΡŒΠ±Π΅ ΠΏΡ€ΠΈΡΠ»Π°Ρ‚ΡŒ свой ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ PGP-ΠΊΠ»ΡŽΡ‡ (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΠΌ security advisory Π² Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅). Они заявили, Ρ‡Ρ‚ΠΎ Β«ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ оборудования, ΠΈ PGP-ΠΊΠ»ΡŽΡ‡ΠΈ Π½Π΅ производят».

Но Π±Π»ΠΈΠΆΠ΅ ΠΊ Π΄Π΅Π»Ρƒ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ„ΡŒΡŽΠ·Ρ‹ оставлСны Π² Π½Π΅Π·Π°Π΄Π°Π½Π½ΠΎΠΌ состоянии, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ (ΠΈΠ»ΠΈ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡ… Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ (самоС слоТноС β€” Π½Π°ΠΉΡ‚ΠΈ Intel STK). Для этого трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия.

1. Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² ОБ Windows (Π²ΠΎΠΎΠ±Ρ‰Π΅, описываСмыС Π΄Π°Π»Π΅Π΅ дСйствия ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ ΠΈΠ· ΠΏΠΎΠ΄ Linux, Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ Intel STK ΠΏΠΎΠ΄ Π½ΡƒΠΆΠ½ΡƒΡŽ ОБ). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ MEinfo, ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„ΡŒΡŽΠ·Ρ‹ Π½Π° Π΄Π°Π½Π½ΠΎΠΉ систСмС Π½Π΅ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
2. Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ содСрТимоС Ρ„Π»ΡΡˆ-памяти ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Flash Programming Tool.

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
3. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ считанный ΠΎΠ±Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ любого срСдства для рСдактирования UEFI BIOS, внСсти Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния (Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Ρ€ΡƒΡ‚ΠΊΠΈΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€), ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ/ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ структуры KEYM ΠΈ IBBM Π² ME Ρ€Π΅Π³ΠΈΠΎΠ½Π΅.

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
На ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° публичная Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π° RSA, Ρ…Π΅Ρˆ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ Π²ΠΎ Ρ„ΡŒΡŽΠ·Ρ‹ чипсСта вмСстС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ Intel BG.

4. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Flash Image Tool ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ (Π·Π°Π΄Π°Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Intel BG).

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
5. Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Π½Π° Ρ„Π»ΡΡˆ-ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Flash Programming Tool, ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ MEinfo, Ρ‡Ρ‚ΠΎ ME Ρ€Π΅Π³ΠΈΠΎΠ½ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ содСрТит ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Intel BG.

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
6. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Flash Programming Tool Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ manufacturing mode.

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
7. БистСма пСрСзазгрузится, послС Ρ‡Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ MEinfo ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ FPF-Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
Π­Ρ‚ΠΈ дСйствия навсСгда Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ Intel BG Π½Π° Π΄Π°Π½Π½ΠΎΠΉ систСмС. ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ дСйствиС Π±ΡƒΠ΄Π΅Ρ‚ нСльзя, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚:

  • ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ UEFI BIOS Π½Π° Π΄Π°Π½Π½ΠΎΠΉ систСмС смоТСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Π»Π°Π΄Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠΉ части ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° (Ρ‚.Π΅. Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ» Intel BG);
  • Ссли Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ этой систСмС ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€Π°, ΠΎΠ½Π° Π΄Π°ΠΆΠ΅ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ (слСдствиС enforcement policy Π² случаС ошибки Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ);
  • Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ UEFI BIOS, трСбуСтся Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ чипсСт с Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ FPF-Π°ΠΌΠΈ Π½Π° «чистый» (Ρ‚.Π΅. ΠΏΠ΅Ρ€Π΅ΠΏΠ°ΡΡ‚ΡŒ чипсСт, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ доступ ΠΊ инфракрасной паяльной станции Ρ†Π΅Π½ΠΎΠΉ Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, Π½Ρƒ ΠΈΠ»ΠΈ просто Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ½ΡΠΊΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ).

Для понимания Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Ρ€ΡƒΡ‚ΠΊΠΈΡ‚, Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свой ΠΊΠΎΠ΄ Π² срСдС UEFI BIOS. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π² самом ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ процСссора – SMM. Π’Π°ΠΊΠΎΠΉ Ρ€ΡƒΡ‚ΠΊΠΈΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства:

  • ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ОБ (ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ SMI прСрывания, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ);
  • ΠΈΠΌΠ΅Ρ‚ΡŒ всС прСимущСства нахоТдСния Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ SMM (ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊ содСрТимому ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ рСсурсам, ΡΠΊΡ€Ρ‹Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ ОБ);
  • ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ€ΡƒΡ‚ΠΊΠΈΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ запускС Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ SMM. Π’ качСствС ΠΊΠ»ΡŽΡ‡Π° для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, доступныС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ SMM. НапримСр, Ρ…Π΅Ρˆ ΠΎΡ‚ Π½Π°Π±ΠΎΡ€Π° адрСсов Π² SMRAM. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ этот ΠΊΠ»ΡŽΡ‡, потрСбуСтся Π·Π°Π±Ρ€Π°Ρ‚ΡŒΡΡ Π² SMM. А это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ двумя способами. Найти RCE Π² ΠΊΠΎΠ΄Π΅ SMM ΠΈ ΠΏΡ€ΠΎΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π»ΠΈΠ±ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² BIOS свой SMM ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Boot Guard.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, эта ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ позволяСт Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ:

  • ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² систСмС скрытый, нСудаляСмый Ρ€ΡƒΡ‚ΠΊΠΈΡ‚ нСизвСстного назначСния;
  • ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свой ΠΊΠΎΠ΄ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ядСр чипсСта Π²Π½ΡƒΡ‚Ρ€ΠΈ Intel SoC, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, Π½Π° Intel ISH (Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ взглянСм Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ).

ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
ДовСрСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°. Intel Boot Guard
Π₯отя возмоТности подсистСмы Intel ISH Π΅Ρ‰Ρ‘ Π½Π΅ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹, ΠΎΠ½Π° прСдставляСтся интСрСсным Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ Π°Ρ‚Π°ΠΊΠΈ Π½Π° Intel ME.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

  1. ИсслСдованиС ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ тСхничСскоС описаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Intel Boot Guard. ΠœΠΈΠ½ΡƒΡ ΠΏΠ°Ρ€Π° Ρ‚Π°ΠΉΠ½ Π² Intel-овской ΠΌΠΎΠ΄Π΅Π»ΠΈ security through obscurity.
  2. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ сцСнарий Π°Ρ‚Π°ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² систСмС нСудаляСмый Ρ€ΡƒΡ‚ΠΊΠΈΡ‚.
  3. ΠœΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ соврСмСнныС процСссоры Intel способны ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΅Ρ‰Ρ‘ Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ BIOS.
  4. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Intel 64 становятся всё ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΌΠΈ для запуска свободного ПО: аппаратная вСрификация, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ΡΡ число ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ подсистСм (Ρ‚Ρ€ΠΈ ядра Π² чипсСтС SoC: x86 ME, x86 ISH ΠΈ ARC PMC).

Mitigations

Π’Π΅Π½Π΄ΠΎΡ€Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ manufacturing mode ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ, слСдуСт Π΅Π³ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ. Пока Ρ‡Ρ‚ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Π»Π°Π·Π° ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Kaby Lake систСмы это ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ сами Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Intel BG Ρƒ сСбя Π½Π° систСмах (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ описанной уязвимости), запустив ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ Flash Programming Tool с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ -closemnf. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, слСдуСт ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ (ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ MEinfo), Ρ‡Ρ‚ΠΎ конфигурация Intel BG Π² Ρ€Π΅Π³ΠΈΠΎΠ½Π΅ ME прСдусматриваСт ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ послС программирования Π² FPF-Ρ‹.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com