Microsoft Secure Boot зламано десять років тому, але це помітили лише зараз

Забуті «прокладки» Microsoft, які не були відкликані, роблять обхід Secure Boot простим.

Стандарт, розроблений Microsoft для захисту пристроїв із Windows, а згодом і Linux, від інфекцій прошивки, виявився тривіальним для обходу протягом 13 з 14 років свого існування. Про це повідомили дослідники з компанії ESET, ідентифікувавши 11 образів прошивки, щонайменше один з яких датується 2013 роком, які мали відомі дефекти, але все ще були підписані компанією.

Microsoft Secure Boot зламано десять років тому, але це помітили лише зараз 1 Microsoft Secure Boot зламано десять років тому, але це помітили лише зараз 2

Ці образи відомі як «прокладки» (shims). Вони були створені для розширення функціональності Secure Boot на пристрої Linux та утилітарне програмне забезпечення. Використовуючи метод, достатньо простий для новачків у сфері хакінгу, ці старі, забуті «прокладки» можуть бути застосовані для повного обходу захисту, вбудованого в UEFI (Unified Extensible Firmware Interface) материнської плати пристрою. Ця помилка є результатом того, що Microsoft, яка відповідає за підписання «прокладок», не відкликала загальнодоступні образи після виявлення в них вразливостей.

Загроза поширюється на користувачів Windows і Linux

Загроза стосується як користувачів Windows, так і Linux, оскільки «прокладку» можна встановити на пристроях з обома операційними системами. Звідти зловмисник може підірвати ланцюжок цифрових підписів прошивки для встановлення шкідливої прошивки, яка завантажується на ранньому етапі процесу завантаження та залишається після перевстановлення ОС або заміни жорсткого диска.

«Небезпека цих старих «прокладок» полягає не в новій вразливості», — написав дослідник ESET Мартін Смолар у вівторок. «Річ у тім, що для обходу UEFI Secure Boot не потрібна нова вразливість. Зловмиснику не потрібні складні інструменти експлуатації — достатньо копії старої, все ще довіреної, але не відкликаної двійкової «прокладки» та базового розуміння того, як працюють UEFI «прокладки». Цього достатньо, щоб обійти таку важливу функцію безпеки, як UEFI Secure Boot».

Secure Boot був запроваджений у 2012 році для протидії загрозі завантажувальних вірусів (bootkits) — термін для шкідливої прошивки. Без Secure Boot зловмисники, маючи короткочасний фізичний доступ до пристрою, навіть коли він вимкнений, можуть встановлювати завантажувальні віруси, подібні до LoJax, використаного російськими державними хакерами у 2018 році, MosaicRegressor, виявленого у 2020 році, CosmicStrand у 2022 році та BlackLotus у 2023 році. Кілька інших завантажувальних вірусів, що циркулюють у дикій природі, відстежуються під такими назвами, як ESpecter, FinSpy та MoonBounce.

Більшість, але не всі, зловмисні програми типу bootkit вимагають, щоб зловмисники мали фізичний доступ до цільових пристроїв. Такий доступ є однією з загроз, проти якої Secure Boot явно призначений захищати.

Список усіх 11 «прокладок», складений CERT, показує, що деякі з них використовувалися дистрибутивами Linux, такими як Redhat, OpenSuse та Oracle. Інші були частиною стороннього програмного забезпечення, такого як Matriculation Examination Board компанії PC-Doctor Finland. Багато з них були створені до появи певних захистів, включаючи SBAT та списки заборонених MOK. Інші містять накопичені помилки у своєму коді або у двійкових файлах другого рівня, які вони авторизують.

Цифровий підпис завантажувача Windows від Microsoft є єдиним якорем довіри на комп’ютерах з Windows. Щоб компонент міг завантажитися під час процесу завантаження, сертифікат повинен явно підписувати весь інший код, що виконується під час завантаження.

«Прокладки» працюють інакше. Вони є вторинним якорем довіри і підписуються Microsoft за допомогою одного з її інших сертифікатів UEFI. Звідти сертифікат, що належить виробнику материнської плати або програмного забезпечення, вбудований у «прокладку», авторизує все програмне забезпечення, що завантажується надалі.

Коли у «прокладках» виявляються вразливості, Microsoft відкликає їх. У випадку з 11 «прокладками» компанія цього не зробила, у деяких випадках — понад десятиліття. Компанія нарешті відкликала їх у своєму звичайному щомісячному випуску патчів у червні, після того, як ESET повідомила про це CERT та Microsoft.

Складність — ворог реалізації

Microsoft ще не пояснила, як і чому стався цей пропуск. Однією з можливих причин є надзвичайно складний спосіб роботи Secure Boot. Як менеджер завантаження Windows, так і UEFI «прокладки» завантажують дві бази даних. База даних db містить список усіх дозволених сертифікатів підпису та хешів Authenticode. База даних dbx містить сертифікати та хеші, які більше не довірені. Щоб компонент міг бути завантажений, він повинен бути авторизований через db і не відкликаний у dbx.

З огляду на велику кількість компонентів Linux, що виконуються під час завантаження, неможливо перерахувати їх усі в цих базах даних, оскільки dbx має лише 32 КБ пам’яті. Тому Microsoft вдалася до інших методів відкликання, зокрема SBAT (Secure Boot Advanced Targeting) та Secure Boot Security Version Number (SVN).

«Коротко кажучи, якщо dbx відкликає двійкові файли, то SBAT та Secure Boot SVN від Microsoft відкликають версії», — пояснив Смолар. «Коли у UEFI-додатку, що підтримує один із цих механізмів відкликання на основі версій, виявляється вразливість, що дійсно потребує виключення, то це всі збірки до зламаної включно — і це можна охопити номером версії набагато легше, ніж довгим списком хешів».

Кожен компонент у завантажувачі UEFI містить метадані, підписані тим самим сертифікатом, що й сам двійковий файл. Ці метадані містять назву компонента та номер його покоління, який збільшується щоразу, коли виходить нова виправлення безпеки.

Змінна UEFI, що стосується лише завантаження, зберігає мінімально прийнятний номер покоління для кожного компонента. Цей номер версії примусово застосовується «прокладкою», а не прошивкою.

«Прокладка» також вбудовує політику, щоб її застосування не залежало виключно від зовнішньої змінної. Це дозволяє впроваджувати нову політику через механізм, відомий як SbatLevel.

«При кожному завантаженні «прокладка» спочатку перевіряє власні метадані SBAT на відповідність політиці — таким чином, застарілу «прокладку» можна змусити відхилити себе — а потім застосовує той самий тест до кожного завантажуваного двійкового файлу, відхиляючи будь-що, чий номер покоління нижчий за мінімальний, що вимагається політикою», — написав дослідник.

Складність процесу на цьому не закінчується. Результатом є те, що «прокладки» вбудовують як керований постачальником, так і вбудований сертифікат «прокладки», які авторизують усі наступні завантажувачі та утиліти. Читачі, які бажають отримати більш детальну інформацію, можуть ознайомитися з цим розділом у вівторковому пості.

Ще більше ускладнює процес той факт, що навіть закінчення терміну дії сертифіката Microsoft, який підписав «прокладки», що сталося наприкінці минулого місяця, недостатньо для відкликання тих, які ідентифікувала ESET.

Галерея дефектних «прокладок»

«Прокладки», виявлені ESET, авторизують вторинні компоненти, які відомі своєю вразливістю до різних експлойтів. Наприклад, «прокладка» Oracle підписує двійковий файл, вразливий до CVE-2015-5381. Смолар зазначив, що навички, необхідні для експлуатації цієї вразливості, низькі. Інші вразливі «прокладки» не підтримують захист, такий як примусове виконання списків заборонених MOK та SBAT, обидва з яких набули чинності після випуску зачепленої «прокладки». Ще інші виявлені «прокладки» містять уразливості у власному коді.

Задля стислості, багато додаткових деталей, включених до звіту у вівторок, пропущено в цій статті.

Тривожна перспектива

Як зазначалося, ці вразливі «прокладки» можуть бути використані як проти машин з Windows, так і з Linux, хоча, ймовірно, не проти ПК Windows 11 Secured-core у їхньому стандартному стані. Будь-який користувач Windows, який встановив червневі оновлення Microsoft, більше не є вразливим. Користувачам Linux слід перевірити Linux Vendor Firmware Service або проконсультуватися зі своїм дистриб’ютором. Статуси відкликання доступні за допомогою скрипта uefi-dbx-audit.

Перспектива того, що зловмисники мали засоби для обходу Secure Boot понад десятиліття за допомогою скриптів, які фактично є «зламай за інструкцією», не є гарним свідченням механізму, запропонованого Microsoft у партнерстві з виробниками обладнання. Як згадувалося раніше, ключовим фактором цієї невдачі є його складність.

«Це серйозний докір усій моделі безпечного завантаження», — сказав у інтерв’ю HD Мур, експерт з безпеки прошивок, генеральний директор і засновник runZero, а також давній критик Secure Boot. Серед його претензій — те, що Microsoft є де-факто коренем довіри для всієї платформи UEFI, нездатність захисту масштабуватися достатньою мірою та можливість завантаження компонентів навіть після закінчення терміну дії сертифікатів верхнього рівня.

«Кінцевим результатом є величезна кількість невідомих (усім, крім Microsoft) підписаних елементів, які обходять Secure Boot — деякі з них потім можуть бути використані для завантаження інших елементів — і обидва мають звичайні помилки безпеки та інші недоліки, що означає, що вони можуть бути використані для завантаження майже чого завгодно», — додав Мур. «Уся екосистема певною мірою зламана і потребує перезавантаження».

Microsoft Secure Boot зламано десять років тому, але це помітили лише зараз 3

За матеріалами: arstechnica.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *