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