Выводы из глобального сбоя CrowdStrike

от автора

Как известно, 19 июля 2024 года произошёл серьёзный инцидент с апдейтом программного обеспечения CrowdStrike Falcon для защиты компьютеров (отчёт Microsoft, отчёт CrowdStrike). Обновление конфигурации вызвало ошибку безопасности чтения из границ памяти в ELAM-драйвере CSagent.sys. Поскольку тот работает на уровне ядра Windows, то миллионы ПК ушли в BSOD.

Количество пострадавших официально оценили в 8,5 млн:

Microsoft поясняет, что здесь количество полученных отчётов. Реально пострадавших гораздо больше. Серьёзно пострадали банки и авиакомпании. В частности, Delta. Общий ущерб для мировой экономики от бага страховщики оценили в $5,4 млрд.

В чём же главная проблема и «защитного софта» с драйверами ядра Windows?

Драйверы ядра

Многий «защитный софт» включая антивирусы, использует драйверы ядра. На это есть несколько причин.

Во-первых, драйверы ядра обеспечивают видимость процессов в системе и возможность приоритетной загрузки для обнаружения специфических угроз, таких как буткиты и руткиты. Кроме того, Microsoft предоставляет богатый функционал вроде обратных системных вызовов для создания процессов и потоков, а также драйверы фильтров, которые могут отслеживать создание, удаление или изменение файлов. Из ядра можно делать обратные вызовы драйверов для блокировки таких действий, как создание файлов или процессов. Многие разработчики также используют драйверы для сбора различной сетевой информации в ядре с помощью класса драйверов NDIS.


Фото из международного аэропорта Денвера, источник

Вторая причина — производительность. Например, анализ и сбор данных о сетевой активности на уровне ядра происходит быстрее. Существует множество сценариев, в которых сбор и анализ данных могут быть оптимизированы для работы вне ядра, и Microsoft продолжает сотрудничать с разработчиками для повышения производительности и предоставления лучших практик, чтобы достичь паритета при работе вне режима ядра.

Третья причина загрузки в режим ядра — устойчивость программы ко взлому. Разработчики систем безопасности хотят быть уверены, что их ПО не будет деактивировано вредоносными программами, даже если эти злоумышленники имеют привилегии администратора. Они также хотят, чтобы их драйверы загружались как можно раньше, чтобы наблюдать за системными событиями в кратчайшие сроки. По этой причине в Windows предусмотрен механизм запуска драйверов, помеченных как Early Launch Antimalware (ELAM), в самом начале процесса загрузки. В частности, CrowdStrike подписала свой драйвер CSboot как ELAM, позволяя ему загружаться на ранних этапах загрузки.

В общем случае, когда речь идёт о драйверах ядра, производители систем безопасности должны найти компромисс. Драйверы ядра обеспечивают вышеперечисленные свойства ценой устойчивости. Поскольку драйверы ядра работают на самом доверенном уровне Windows, разработчики средств безопасности должны тщательно балансировать между своими потребностями, такими как видимость и защита от взлома, и рисками работы в режиме ядра.

Любой код, работающий на уровне ядра, требует тщательной проверки, поскольку он не может выйти из строя и перезапуститься, как обычное пользовательское приложение. Это правило для всех ОС.

Баланса между безопасностью и надёжностью можно достичь, если минимизировать количество кода в режиме ядра:

Пример защитного софта с балансом между безопасностью и надёжностью, источник: Microsoft

Windows предоставляет несколько подходов к защите пользовательского режима от несанкционированного вмешательства: это энклавы Virtualization-based security (VBS) и защищённые процессы. Разработчики могут использовать их для защиты ключевых процессов в своём ПО.

Для отслеживания событий Windows также позволяет использовать события ETW и интерфейсы пользовательского режима, такие как Antimalware Scan Interface. Эти надёжные механизмы можно использовать для уменьшения объёма кода ядра в решениях безопасности, что обеспечивает баланс между безопасностью и надёжностью.

Выводы

Уровень безопасности Windows можно повысить с помощью встроенных инструментов, функций и настроек. Некоторые из них установлены на максимальную безопасность по умолчанию, а другие нет. Microsoft обещает увеличивать уровень безопасности Windows 11 по умолчанию, который в данный момент включает различные функции и настройки, такие как TPM2.0, Virtualization-based security (VBS), Hypervisor-protected Code Integrity (HVCI) и др. Список этих функций будет увеличиваться. Microsoft также переходит на Rust как более защищённый язык.

Ранее мы рассказывали, как укрепить Windows Defender по максимуму.

Но главный вывод в том, что антивирусы и другой «защитный софт» вводит в систему новые векторы атаки, поскольку работает на уровне ядра с повышенными привилегиями. Microsoft считает, что разработчики защитного ПО делают это не совсем грамотно. В итоге те же антивирусы могут представлять больше вреда, чем пользы.


ссылка на оригинал статьи https://habr.com/ru/articles/845222/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *