Большая статья является текстовым дополнением к презентации Томаса на конференции 38C3, прошедшей в конце прошлого года. Запись презентации можно посмотреть
Ключевая уязвимость в загрузчике Windows, использованная в данной атаке, известна как
В теории атака выглядит просто: нужно как-то загрузиться в альтернативную ОС и извлечь ключ из оперативной памяти. Практическая реализация такой атаки на самом деле достаточно сложная, чему и посвящена большая часть исследования Томаса. Главной проблемой на пути к успешной дешифровке (чужих) данных является система Secure Boot. Именно она позволяет расшифровать данные без участия пользователя. Так сделано для удобства: чтобы не заставлять (возможно, неподготовленного) владельца ПК на Windows вводить пароль до загрузки системы. Дешифровка происходит автоматически, если загружен проверенный не модифицированный загрузчик. В случае, если по какой-то причине загрузчик не смог получить доступ к данным на жестком диске, в идеальной ситуации должна работать такая схема:
Так происходит, например, при перезагрузке в режиме восстановления системы. Ключи, необходимые для дешифровки данных перед загрузкой в любое другое окружение, должны удаляться. По факту это происходит в загрузчиках начиная с февраля 2023 года, когда уязвимость bitpixie была устранена. Можно ли «подкинуть» старый загрузчик, в котором проблема еще присутствует, и загрузиться с его помощью? Да, можно, и именно поэтому уязвимость нельзя считать до конца закрытой. Старый загрузчик будет принят системой Secure Boot как «проверенный», что позволит вытащить ключи шифрования из оперативной памяти.
Важное дополнение: задействовать уязвимость или заставить загрузчик запомнить ключ можно только в случае загрузки по сети, когда задействуется режим PXE Soft Reboot. Таким образом выстраивается следующая последовательность атаки.
- В режиме загрузки по сети загрузить старый уязвимый загрузчик.
- Обеспечить достаточные для Secure Boot требования, чтобы ключ Volume Master Key загрузился в оперативную память.
- Загрузиться в ОС на базе Linux и считать ключ шифрования из оперативной памяти.
- Использовать ключ для монтирования зашифрованного раздела на встроенном накопителе.
Во время презентации на конференции 38C3 автор исследования использовал достаточно современный ноутбук Lenovo ThinkPad P14s Gen 2. По его словам, все системы с самым свежим билдом Windows 11 24H2 уязвимы. Достаточно ненадолго получить доступ к компьютеру и подключить к нему с помощью сетевого кабеля другой ПК, с которого будет осуществляться доставка ПО для загрузки по сети.
Это не единственный способ атаки на шифрование BitLocker, но предложенная схема привлекает относительной простотой. Защититься от такой атаки можно, но в данный момент это требует дополнительных действий со стороны пользователя. Надежнее всего установить пароль на дешифровку данных, но его придется вводить каждый раз при включении ПК. Можно также установить опциональный патч от Microsoft с идентификатором
Крайне интересный момент заключается в том, что запрет на загрузку по сети в настройках UEFI не помогает. Если даже в атакуемом ноутбуке нет встроенного сетевого адаптера, будет работать и внешний. Впрочем, даже если эту опцию заблокировать насовсем, даунгрейд загрузчика, скорее всего, можно провести и другим способом. Вместе с тем автор исследования отмечает, что даже такое шифрование лучше, чем полное его отсутствие, и ожидает, что рано или поздно проблема все же будет закрыта окончательно.
Что еще произошло
В примере атаки на Bitlocker выше автор исходил из того, что технология Secure Boot не скомпрометирована. Взлом этого средства защиты открывает куда более широкий набор возможностей для проведения разнообразных атак. Свежая уязвимость в Secure Boot была
Издание The Register
Серьезные уязвимости на прошлой неделе были