Някои зловредни програми се зареждат още преди стартирането на Windows, преди вашата антивирусна програма изобщо да съществува. Те могат да оцелеят дори след пълно преинсталиране на операционната система, а за целта са достатъчни само 11 файла, подписани от Microsoft.
Една проверка на сигурността би трябвало да прави това невъзможно. Тези 11 файла обаче я заобикалят на почти всеки компютър.
Мартин Смолар от ESET публикува това изследване на 14 юли. Файловете са стари, някои на повече от десет години, и всеки от тях носи валиден подпис от Microsoft.
Когато включите компютъра си, преди Windows да се зареди, се стартира нещо друго. Това е фърмуерът – кодът на ниско ниво, вграден в машината, чиято задача е да зареди софтуера, стартиращ Windows. Secure Boot е проверката, която се извършва в този момент. Тя анализира всеки елемент от стартиращия код и задава един въпрос: „Подписан ли е от някого, на когото имам доверие?“. Ако отговорът е да, кодът се изпълнява. Ако е не, той се спира.
Вашият компютър не избира сам на кого да се доверява. Той идва с кратък списък, съхранен във фърмуера, в който Microsoft е на първо място. Всичко с подпис на Microsoft се зарежда. Така стартира Windows. По същия начин стартира и Linux на тези машини – чрез малък помощен инструмент, който Microsoft се е съгласил да подпише.
Този инструмент се нарича shim. Той представлява малък начален зареждач от първа фаза. Microsoft го проверява веднъж, подписва го и оттам нататък shim гарантира за останалата част от стартиращата верига на Linux, включително за GRUB и ядрото. Това спестява на Linux дистрибуциите необходимостта да се обръщат към Microsoft за подпис при всяка актуализация. Microsoft подписва shim файла, а той от своя страна подписва останалите компоненти.
Тези shim зареждачи са подписани преди години и никога не са били оттеглени. ESET откри 11 стари версии (всички под 0.9), които Microsoft е подписал и забравил. Те произхождат от инструменти за диагностика на компютри, Linux дистрибуции и други. Един от тях е Abitti – софтуерът, на който финландските ученици полагат държавните си изпити. Microsoft го е подписал и този подпис служи за заобикаляне на Secure Boot на всеки компютър, който му се доверява. Нападателят няма нужда от оригиналния софтуер – той просто пренася свое собствено копие от стария shim файл на целевата машина. Фърмуерът му се доверява, защото подписът на Microsoft е все още валиден.
Проблемът със старите shim зареждачи е, че те не съдържат последващите корекции на сигурността.
Да вземем за пример уязвимостта CVE-2026-10797. Един подписан файл записва дължината на своя подпис на две отделни места в себе си. Старият shim чете едното място, когато проверява дали файлът е в списъка със забранени файлове, и другото място, когато проверява дали подписът е автентичен. Ако тези две дължини се разминават, проверката за забрана анализира грешни байтове. Така файлът може да присъства в списъка с отменени подписи, но shim зареждачът никога да не забележи това. Този бъг беше тихомълком отстранен в кода на shim преди почти десет години, но едва наскоро получи CVE номер, а всички стари подписани копия все още го съдържат.
Някои от методите дори не изискват нова уязвимост. Един от докладваните shim файлове (от стара версия на Oracle Linux) се доверява на версия на GRUB с уязвимост от 2015 г., проследявана като CVE-2015-5281. Тя оставя включена функцията multiboot2, която зарежда код без да проверява неговия подпис. Версия, предназначена за сигурно зареждане, би трябвало да изключи тази функция. Тази обаче не го е направила. Нападателят може да напише малка неподписана програма, да я копира до стария shim и GRUB, и с една команда да я зареди по време на стартирането на системата.
Резултатът от това е т.нар. bootkit – зловреден софтуер, който се зарежда преди Windows, скрива се в процеса на стартиране и не може да бъде премахнат дори чрез преинсталиране. ESET вече е засичала подобен зловреден софтуер (Bootkitty, HybridPetya, BlackLotus). Secure Boot е единствената защита срещу тях, но тези стари shim зареждачи я обезсмислят.
Защо тези стари файлове все още се поддържат? Списъкът със забрани (наречен dbx) се съхранява във фърмуера и има ограничено пространство от около 32 KB. Когато през 2020 г. уязвимостта BootHole наложи блокирането на 150 подписа наведнъж, това отне една трета от мястото. Няма достатъчно памет за блокиране на всеки стар файл поотделно, поради което почистването закъснява, а забравените shim зареждачи остават с валидни подписи с години.
Сертификатът на Microsoft изтече на 27 юни, но това не променя нищо. Secure Boot не проверява дати. Докато сертификатът е в списъка с доверени и не е изрично забранен, всичко, подписано с него, продължава да се зарежда.
Тези 11 файла са само тези, които ESET са търсили и открили. Каталогът на подписаните файлове съществува едва от 2017 г. Няма регистър за подписаното преди това, така че реалният брой на уязвимите файлове остава неизвестен.