Уязвимости в драйверах двух ведущих китайских антивирусов: подписанное ядро под ударом

information security

Независимый исследователь безопасности Patrick Saif обнародовал сведения о двух критических уязвимостях в драйверах ядра популярных защитных программ. Речь идёт о продуктах условных производителей A и B. Проблемы затрагивают файлы kdhacker64_ev.sys и DsArk64.sys. Оба драйвера имеют действующие цифровые подписи - первый заверен сертификатом EV (расширенной проверки), второй прошёл сертификацию WHQL. Это означает, что операционная система доверяет им безоговорочно. Атакующему не нужно устанавливать дополнительное программное обеспечение - достаточно запустить вредоносный код на машине жертвы, чтобы воспользоваться лазейками. Такая схема известна как BYOVD (атака с использованием собственного уязвимого драйвера).

Описание

Проект LOLDrivers, который ведёт базу наиболее опасных драйверов Windows, уже внёс обе единицы в свой каталог. Соответствующие записи имеют номера 308 и 309. На момент подготовки материала ни одна из уязвимостей не получила идентификатора CVE. Более того, оба драйвера отсутствуют в списке блокировки HVCI (защиты целостности кода на основе гипервизора). Разработчики пока не выпустили исправлений и не сделали официальных заявлений.

Детали уязвимости в драйвере производителя A

Файл kdhacker64_ev.sys входит в состав антивирусного решения компании A, а также устанавливается вместе с её браузером. Анализ LOLDrivers показывает, что образ драйвера датирован третьим июля 2017 года. Иными словами, почти девять лет этот код остаётся в актуальных сборках продукта, несмотря на то что его безопасность сомнительна.

Суть проблемы кроется в обработчике запроса ввода-вывода с кодом 0x120140. При проверке размера входных данных драйвер использует один параметр для вычисления длины (0x488 байт на элемент), а буфер выделяет вдвое меньший - всего 0x248 байт на элемент. Затем вызывается функция RtlInitUnicodeString, которая создаёт строку в формате Юникод на основе пользовательских данных без какой-либо проверки границ. В результате возникает переполнение кучи ядра примерно на 512 байт. Поскольку драйвер не имеет списков управления доступом (ACL), любой локальный пользователь может открыть его дескриптор и отправить вредоносный запрос.

Кроме того, этот драйвер выполняет множество функций, не связанных напрямую с защитой: перехватывает сетевой трафик (TDI-хуки), отслеживает создание процессов, подключается к файловым системам NTFS, FAT и CDFS, контролирует веб-камеру, разбирает заголовки HTTP. Каждый такой дополнительный канал несёт свой риск атаки. Примечательно, что LOLDrivers ранее уже вносил в базу два других драйвера того же производителя: ksapi.sys и mydrivers.sys. Таким образом, речь идёт о системном пренебрежении безопасностью.

Уязвимости в драйвере производителя B

Драйвер DsArk64.sys создан компанией B для борьбы с руткитами. Его образ датирован десятым января 2024 года, то есть он заметно новее. Тем не менее исследователь обнаружил сразу три независимые проблемы.

Первая касается завершения процессов без проверки полномочий. Команда с кодом 0x80863008 принимает четырёхбайтовый идентификатор процесса и напрямую вызывает функцию ядра ZwTerminateProcess. Этим можно убить любой процесс, включая те, которые защищены механизмом PPL (облегчённая защита процессов). Атакующий способен остановить работу самого Windows Defender, агентов EDR (систем обнаружения и реагирования на угрозы) и других важных компонентов без каких-либо ограничений.

Вторая проблема заключается в обходе проверки цифровой подписи. На первый взгляд драйвер блокирует доступ для неподписанных программ: он проверяет, принадлежит ли подпись вызывающего процесса сертификату компании B. Однако этот контроль легко обойти с помощью техники под названием "процесс-призрак" (process hollowing). Вредоносный код внедряется в любой законный исполняемый файл, подписанный компанией B, - а такие файлы можно свободно скачать с официального сайта.

Третья проблема - жёстко зашитый ключ шифрования AES-128-CBC. Драйвер использует этот ключ для защиты команд чтения и записи памяти ядра. Ключ хранится в секции .data, причём для всех версий сборки он одинаков. Любой, кто извлёк его (а сделать это может даже начинающий исследователь методами реверс-инжиниринга), способен сконструировать корректный запрос на операции с ядром.

Активация драйвера требует установки одного параметра реестра: HKLMSYSTEMCCSServices360FsFltdaboot=1. Это единственное предусловие, и оно выполняется на многих машинах, где установлено защитное ПО компании B.

Почему подписанные драйверы особенно опасны

Начиная с 64-разрядной версии Windows Vista, система не загружает драйверы ядра без действительной цифровой подписи. Такое ограничение призвано помешать злоумышленникам внедрять собственный вредоносный код на уровне ядра, поскольку получение подписи требует прохождения строгих проверок (сертификаты EV или прохождение WHQL). Однако BYOVD эксплуатирует иной подход: вместо написания собственного драйвера хакер находит уже подписанный драйвер, содержащий уязвимость. Затем он использует эту лазейку для повышения привилегий или получения доступа к ядру.

Проект LOLDrivers собирает и публикует именно такие уязвимые драйверы, становясь справочником для атакующих. Попадание kdhacker64_ev.sys и DsArk64.sys в этот список означает, что они теперь доступны в открытых инструментах для тестирования на проникновение, а также в наборах, которые применяют группы вымогателей. Специалисты по информационной безопасности давно отмечают, что BYOVD стал одним из самых распространённых методов начального продвижения в сети.

Оценка рисков и возможные последствия

Описанные уязвимости не являются удалёнными нулевого клика - для их использования требуется локальный запуск кода. Это означает, что атака не начнётся сама по себе, без предварительного заражения машины. Однако после первого этапа (например, фишинг или вредоносное вложение) подобный драйвер даёт злоумышленнику дешёвый и надёжный способ поднять привилегии до системы (SYSTEM) и обойти средства защиты.

Особую тревогу вызывает то, что DSArk64.sys способен убивать процессы, защищённые PPL. Если в организации используется современное решение класса EDR, которое полагается на эту защиту, атакующий может просто отключить его. Вся последующая вредоносная активность останется незамеченной.

Компании A и B пока не отреагировали на публикацию. Однако уже очевидно, что пользователям обеих программ следует внимательно отнестись к этой информации. Временное решение - отключить или удалить соответствующие драйверы, если есть возможность обойтись без них. Но в корпоративной среде, где антивирус управляется централизованно, такие действия требуют согласования с ИТ-службой.

Событие напоминает, что даже продукты, призванные защищать, могут сами становиться источником уязвимости. Особенно это касается драйверов, которые работают с максимальными привилегиями в ядре. Пока разработчики молчат, единственной активной мерой остаётся мониторинг списка LOLDrivers и проверка собственных систем на наличие указанных файлов.

Индикаторы компрометации

MD5

  • b4b6aaa2ee1cc344b7c6752778a279e5
  • ba3cd54ee9e5bde6f4155348e8c6e31a

SHA256

  • 597eff2718073b11da3d4bcade9a03fb4684f9be57d184fce65ac70a2ef07246
  • cd3d1a2e119cbbb41ec0e7d7fb17bac106735d62b33ed3cde10087af1da89403

Комментарии: 0