
Выбор багов из бинарника, где паттерн похож на CVE-1337-Days
Select Bugs From Binary Where Pattern Like CVE-1337-Days
Аннотация
Статический анализ кода — эффективный способ обнаружения вариантов уязвимостей и примитивов эксплуатации, но две наиболее сложные задачи статического анализа — это эффективное извлечение паттернов кода из огромного количества разнообразных ошибок и результативный поиск паттернов кода в массе различных модулей, особенно в закрытом программном обеспечении, таком как Windows.
В этом докладе рассказывается о нашей практике и опыте решения этих двух задач. В основном он охватывает то, как мы извлекаем четыре уникальных паттерна кода для различных типов уязвимостей и примитивов эксплуатации, и как мы используем их для автоматического поиска уязвимостей и примитивов эксплуатации в Windows с помощью нашего нового инструмента поиска паттернов кода в бинарных файлах: Leviathan.
В этом докладе мы сосредоточимся на четырёх уникальных паттернах для поиска классических уязвимостей перехвата файлов, уязвимостей повреждения памяти через reparse point, логических уязвимостей перезаписи ACL и примитивов pool spray для эксплуатации RDP в Windows. В частности, в части паттерна перезаписи ACL мы показываем, как найти интересную логическую 0-day уязвимость в Hyper-V, которая произошла от нашей уязвимости, использованной на Pwn2Own 2021; сначала Microsoft отклонила её, но в конце концов признала, что она попадает в область исправления и даже подходит для программы bug bounty после того, как мы представили новый вектор атаки. Мы раскроем всю историю, стоящую за этим. Также стоит упомянуть, что в части паттерна примитивов pool spray мы показываем, как найти три уникальных и универсальных примитива pool spray для эксплуатации RDP. Они могут быть использованы в известной уязвимости RDP BlueKeep (CVE-2019-0708) и отличаются от всех других публичных методов эксплуатации. Освещаются все детали, включая определение модели уязвимости, извлечение паттернов уязвимости, построение запросов к коду, анализ результатов, а также создание PoC в каждом случае.
Кроме того, мы также представляем новый инструмент на основе языка запросов к коду, предназначенный для автоматического поиска уязвимостей и примитивов эксплуатации по паттернам кода в бинарных файлах. На базе API Hexray ctree от IDA Pro и основанных на них наших базовых примитивов поиска паттернов кода, он не только содержит такие функции, как отслеживание потоков данных и трассировка путей кода между бинарными файлами, но и имеет SQL-интерфейс запросов, упрощающий весь процесс. Выбирайте собственные баги и примитивы из бинарных файлов, где вам нравится!