Это четвертая часть нашей статьи о файловой системе CLFS и пяти уязвимостях этого компонента ОС Windows, встречавшихся в кампаниях шифровальщиков на протяжении года. Если вы еще не ознакомились с предыдущими частями, прочтите сначала их.
Вы можете перейти к нужному разделу из содержания или по ссылкам в конце этой части.
- Часть 1. Драйвер Windows CLFS и пять эксплойтов операторов шифровальщиков
- Часть 2. Драйвер Windows CLFS и пять эксплойтов операторов шифровальщиков (№ 1: CVE-2022-24521)
- Часть 3. Драйвер Windows CLFS и пять эксплойтов операторов шифровальщиков (№ 2, сентябрь 2022 г.)
- Часть 4. Драйвер Windows CLFS и пять эксплойтов операторов шифровальщиков (№ 3, октябрь 2022 г.)
- Часть 5. Драйвер Windows CLFS и пять эксплойтов операторов шифровальщиков (№ 4: CVE-2023-23376)
- Часть 6. Драйвер Windows CLFS и пять эксплойтов операторов шифровальщиков (№ 5: CVE-2023-28252)
Эксплойт № 3, октябрь 2022 г.
На портале обновлений безопасности Microsoft отсутствуют упоминания об уязвимостях CLFS за октябрь 2022 года, тем не менее в это время драйвер был переписан и получил новые функции CClfsBaseFile::Validate*.
Обнаруженный нами эксплойт был написан тем же автором, который создал эксплойт нулевого дня для CVE-2022-37969. Он работает с сентябрьским исправлением и не работает с октябрьским, но только после выпуска октябрьского исправления мы стали видеть его в атаках. Вероятно, ранее это был эксплойт нулевого дня, который злоумышленники применяли с осторожностью, но после выпуска исправления стали пользоваться им в открытую.
Эксплойт создает новый файл BLF и изменяет в нем всего шесть значений. Эти модификации представлены ниже.
Первая модификация затрагивает значение поля CLFS_BASE_RECORD_HEADER->cbSymbolZone в блоке GENERAL. Остальные создают поддельную структуру CLFS_CONTAINER_CONTEXT.
Как уже упоминалось при обсуждении внутреннего устройства файловой системы CLFS в первой части нашей статьи, поле cbSymbolZone используется в качестве ближайшего свободного относительного адреса, в котором можно создать новый символ. Уязвимость состоит в том, что относительный адрес cbSymbolZone теперь указывает на середину существующей структуры CLFS_CLIENT_CONTEXT, и это не проверяется. Вот к чему это приводит:
- При открытии файла BLF драйвер закэширует некоторые значения из структуры CLFS_CLIENT_CONTEXT (так же, как при эксплойте № 1 — CVE-2022-24521).
- Эксплойт вызывает функцию AddLogContainer, и драйвер создает новый символ CLFS_CONTAINER_CONTEXT, который будет записан по модифицированному относительному адресу cbSymbolZone.
- Теперь CLFS_CLIENT_CONTEXT и CLFS_CONTAINER_CONTEXT накладываются друг на друга (так же, как при эксплойте № 1 — CVE-2022-24521).
- Функция CClfsLogFcbPhysical::FlushMetadata восстанавливает закэшированные значения для клиента и перезаписывает указатель класса CClfsContainer.
Как видите, этот эксплойт практически идентичен эксплойту № 1 (CVE-2022-24521). То же касается и остальной части выполнения эксплойта.
Перейдите по ссылке, чтобы ознакомиться со следующей частью:
Драйвер Windows CLFS и пять эксплойтов операторов шифровальщиков (№ 3, октябрь 2022 г.)