ESCalator
3.98K subscribers
227 photos
1 video
1 file
95 links
Tips and tricks от команды экспертного центра безопасности Positive Technologies (PT ESC)
加入频道
🔦 Как мы нашли ITW-эксплойт для CVE-2024-38178

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

Уязвимость CVE-2024-38178 — это повреждение памяти типа Type Confusion (CWE-843). Говоря по-простому: ситуация, когда область памяти, занимаемая объектом типа A, интерпретируется кодом как объект типа B.

Проанализировав патч, мы обнаружили, что изменения сделаны в функции, отвечающей за оптимизацию работы с массивами, в частности в функции GlobOpt::OptArraySrc. После исправления добавилась обработка ситуации, когда оптимизатор не замечает, что иногда тип переменной может изменяться в runtime.

Если вы следите за деятельностью Google ProjectZero так же активно, как и мы, то вы уже обо всем догадались 😉

Функция GlobOpt::OptArraySrc уже фигурировала в ITW-эксплойте, а именно в посте, описывающем CVE-2022-41128.

В посте есть PoC, который демонстрирует эксплуатацию CVE-2022–41128. Взяв из него ключевые строки, мы провели поиск в публичных и приватных источниках по файлам, загруженным недавно, используя следующие подстроки:

6E6577204F626A656374287B0D0A20
206E657720496E7433324172726179

Мы нашли всего один файл. Он был загружен из KR, и эксплойт, вероятно, использовался в атаках в этой стране, о чем косвенно свидетельствует информация из бюллетени Microsoft.

Прогнав файл в системах с патчем и без него, мы быстро поняли, что это именно то, что мы искали. В связи с большой схожестью с CVE-2022-41128 мы считаем, что и эта уязвимость была найдена через фаззинг, который проводился с использованием PoC для CVE-2022-41128 и CVE-2021-34480.

Эксплойт создает ситуацию, когда JIT-компилятор убежден, что переменная X имеет тип js::TypedArray<int,0>, но на самом деле X содержит значение Y типа js::DynamicObj. Далее эксплойт использует доступ по индексу 4, 11, 12, чтобы модифицировать внутренние поля массива js::JavaScriptNativeArray, находящегося в одном из свойств значения Y. Модифицируемые поля хранят размер массива.

В результате эксплойт дает возможность для доступа за пределы этого массива для того, чтобы получить примитивы на относительную запись и чтение. Дальнейшее описание заняло бы неприлично много места в рамках поста, поэтому stay tunned и happy hunting 🙂

YARA-правило (на файл):


rule exploit_CVE_2024_38178 {
strings:
$a = { 6E6577204F626A656374287B0D0A20 }
$b = { 206E657720496E7433324172726179 }
condition:
all of them
}


IoCs:


SHA256: 736092B71A9686FDE43D3C4ABD941A6774721B90B17D946C9D05AF19C84DF0A4



http://img[.]mobonad[.]com/images/20230912/43


#escvr #itw #jscript9 #reverse
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы, 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


#escvr #cve #news
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😏 Эксклюзивно для Escalator команда ESC-VR рассказывает о деталях уязвимости (CVE-2024-43629), которую мы нашли в компоненте Desktop Window Manage, позволяющей повысить привилегии до уровня системных.

Уязвимость находилась в библиотеке dwmcore.dll в функции CPrimitiveGroupDrawListBrush::IsColorConversionRequired (скриншот 1). При совместном использовании классов СSurfaceBrush и CPrimitiveGroup она позволяла достичь кода, который осуществляет вычисление положения экземпляра класса CDrawListBitmap в массиве drawListBitmap_Vec, располагающемся, в свою очередь, в экземпляре класса CPrimitiveGroupDrawListGenerator.

При определенном сочетании свойств экземпляров СSurfaceBrush и CPrimitiveGroup могла сложиться ситуация, при которой указатель drawListBitmap_Vec был бы равен нулю и все вычисления свелись бы только к работе с индексом, а его значение полностью контролировалось бы атакующим и имело размер DWORD. Таким образом можно было бы перехватить указатель на объект CDrawListBitmap (скриншот 2).

#escvr #win #cve
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Not a Pwn2Own bug 🙂

CVE-2024-43641: ошибка типа CWE-190 позволяла переполнить счетчик ссылок на экземпляр _CM_KEY_SECURITY. Уязвимый код располагался в ntoskrnl.exe — в функции CmpSetSecurityDescriptorInfo (скриншот 1).

Для того чтобы достигнуть уязвимого кода, необходимо открыть или создать ключ реестра в режиме транзакций. Сделать это можно через функцию RegCreateKeyTransacted. Так как нет ограничения на количество операций, которые могут быть записаны в рамках одной транзакции, мы можем последовательно вызывать функцию NtSetSecurityObject. И каждый такой вызов будет увеличивать счетчик ссылок на 1.

Для того чтобы уязвимость «сдетонировала», необходимо прокрутить значение счетчика ссылок так, чтобы его значение стало меньше реального количества операций, записанных в рамках транзакции. Если это условие будет соблюдено, то после транзакции ячейка _CM_KEY_SECURITY будет освобождена раньше, чем закончатся операции, которые нужно завершить, что приведет к использованию освободившейся памяти (скриншот 2).

На третьем скриншоте — часть функции CmpDereferenceSecurityNode, отвечающая за уменьшение числа ссылок и освобождение _CM_KEY_SECURITY.

🩹 О патче

Патч переработал то, как подсистема Cоnfiguration Manager (СM) работает со ссылками на _CM_KEY_SECURITY, добавив как минимум две новые функции — CmpKeySecurityDecrementReferenceCount и CmpKeySecurityIncrementReferenceCount, которые теперь будут выдавать bugcheck, если количество ссылок станет равным нулю или после инкремента их будет меньше, чем до (скриншот 4).

К счастью, вряд ли уязвимость можно отнести к эксплуатабельным, так как, чтобы переполнить счетчик ссылок, последовательно увеличивая его на 1, потребуется очень много времени, да и окно, в рамках которого у нас есть возможность «подсунуть» что-то, слишком маленькое и неконтролируемое.

#cve #escvr
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что произошло с безопасностью OpenSSH в 2024 году 🚪

Взглянем на таймлайн:

• Весна. Бэкдор в xz-utils (CVE-2024-3094). В результате его внедрения были скомпрометированы системы с systemd, в которых в OpenSSH есть зависимость liblzma, отсутствующая в нем изначально и самим OpenSSH напрямую не используемая (то есть скорее речь об атаке на цепочку поставок этих дистрибутивов, а не конкретно на OpenSSH).

• Июль. Критически опасная уязвимость «состояния гонки» для систем на базе glibc, получившая название regreSSHion (CVE-2024-6387) и представляющая собой перерожденную CVE-2006-5051.

• Все тот же июль. Опубликована схожая проблема, получившая идентификатор CVE-2024-6409.

• Август. Еще одна, уже специфичная для FreeBSD, CVE-2024-7589.

Что это вообще было

Исследователи утверждают, что успешная эксплуатация «состояний гонки» позволяет получить RCE на подверженных системах. Более того, regreSSHion — главный баг (затрагивает привилегированный процесс sshd) — ставит под угрозу безопасность множества SSH-серверов с glibc. Эксплуатация уязвимости не требует особой конфигурации сервера (проблема актуальна и для конфигурации по умолчанию). Но при этом публичного PoC нет до сих пор.

Мы решили разобраться, так ли опасны эти «состояния гонки» и какие механизмы в sshd призваны не допустить эксплуатации этой уязвимости или хотя бы уменьшить ущерб в случае успешной атаки. Попутно провели обзор и остальных уязвимостей OpenSSH прошедшего года.

🔣 И теперь все это с технической базой и экскурсом на 30 секунд доступно в нашем блоге на Хабре. Enjoy!

#CVE #escvr
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM