[ << ALL_FEED ]

Эксплойт для CVE-2024-30085

Ещё в группе «Общее»

Мы, ESC-VR, успешно воспроизвели эксплойт для CVE-2024-30085 😎

Уязвимость фигурировала на прошедшем в Pwn2Own 2024 в Ванкувере, где Team Theori использовала эксплойт для этой уязвимости в цепочке эксплойтов, осуществляющих Guest-To-Host-Escape из-под управления VMware Workstation, за что и получили свои заслуженные 13 очков в номинации Master Of Pwn.

Соревнования по типу pwn2own и matrixcup помогают подсветить реально эксплуатируемые уязвимости, эксплойты для которых, как правило, не разглашаются (в результате чего образуется состояние Known-Unkown, когда известно, что эксплойт есть, но как он работает неизвестно), и обратить на них особое внимание, ведь за подобными соревнованиями следим не только мы, но и злоумышленник, который может их воспроизвести и проэксплуатировать против незапатченной системы.

🧐 Cldflt.sys — это драйвер мини-фильтр, отвечающий за синхронизацию между пользовательской файловой системой и облаком OneDrive. В драйвере существовала ошибка CWE-122, возникающая в результате некорректной проверки размера bitmap, содержимое которого получается из Reparse Point. При этом память, аллоцируемая под bitmap, имеет фиксированный размер 4096 байт, но при этом не проверяется размер актуальных данных, которые будут скопированы в аллоцированную память.

Наш эксплойт утилизирует WNF- и ALPC- подсистемы для получения примитивов на запись и чтение, конкретно структуры _WNF_STATE_DATA и _ALPC_HANDLE_ENTRY.

💡 Немного деталей о том, как наш эксплойт работает:

1️⃣ Создает множества чанков, размером 4096 байт, через NtCreateWnfStateName и NtAlpcCreateResourceReserve. Таким образом последовательно в памяти размещается _WNF_STATE_DATA и _ALPC_HANDLE_ENTRY.

2️⃣ Создает множества дыр в последовательности созданной на шаге 1, через NtDeleteWnfStateData.

3️⃣ Триггерит уязвимость, таким образом bitmap размещается в одной из заранее подготовлены дыр. Размер bitmap задается равный 4096 + 16, чтобы перезаписать размер данных (_WNF_STATE_DATA.DataSize), на которые указывает _WNF_STATE_DATA.Data.

4️⃣ Перезаписывает через NtUpdateWnfStateData указатели в _ALPC_HANDLE_ENTRY.

5️⃣ Осуществляет через NtAlpcSendWaitReceivePort запись и чтение по произвольному адресу.

6️⃣ Крадет Token у процесса System (Token Stealing).

Конечно же, мы не могли не протестировать наши собственные продукты. И они нас не разочаровали: например, PT Sandbox обнаруживает эксплуатацию данной уязвимости.

Вердикты:


Exploit.Win32.Generic.d,
Exploit.Win32.Generic.a,
Rootkit.Win32.Generic.a
Code language: plaintext (plaintext)


#escvr #cve #news
@ptescalator

Ещё от author_vr

Ещё от author_vr

Ещё в группе «Общее»