Heap Spraying
Что такое Heap Spraying?
Heap SprayingЭксплойт-примитив, заполняющий кучу множеством копий полезной нагрузки, чтобы повреждённый указатель с высокой вероятностью попал на данные атакующего.
Heap spraying заполняет большие области памяти процесса предсказуемыми копиями NOP-слайда и шеллкода (в современных вариантах — цепочками ROP или поддельными vtable). Когда атакующий вызывает повреждение памяти, например use-after-free или type confusion в браузере, он направляет повреждённый указатель на популярный адрес (исторически 0x0c0c0c0c), где спрей гарантированно содержит нужные байты. Технику популяризировал эксплойт Skylined для Internet Explorer (2004); она до сих пор применяется в эксплойтах браузеров, документов и парсеров шрифтов. Современная защита: ASLR с высокой энтропией, секционированные кучи (PartitionAlloc, Heap Isolation в Edge), Control-Flow Integrity и меры по защите JIT.
● Примеры
- 01
Аллокация сотен МБ JavaScript-строк с шеллкодом, чтобы после use-after-free 0x0c0c0c0c стал исполняемым шеллкодом.
- 02
Эксплойты Adobe Flash используют спреи Vector<uint>, чтобы посадить ROP-цепочку.
● Частые вопросы
Что такое Heap Spraying?
Эксплойт-примитив, заполняющий кучу множеством копий полезной нагрузки, чтобы повреждённый указатель с высокой вероятностью попал на данные атакующего. Относится к категории Атаки и угрозы в кибербезопасности.
Что означает Heap Spraying?
Эксплойт-примитив, заполняющий кучу множеством копий полезной нагрузки, чтобы повреждённый указатель с высокой вероятностью попал на данные атакующего.
Как работает Heap Spraying?
Heap spraying заполняет большие области памяти процесса предсказуемыми копиями NOP-слайда и шеллкода (в современных вариантах — цепочками ROP или поддельными vtable). Когда атакующий вызывает повреждение памяти, например use-after-free или type confusion в браузере, он направляет повреждённый указатель на популярный адрес (исторически 0x0c0c0c0c), где спрей гарантированно содержит нужные байты. Технику популяризировал эксплойт Skylined для Internet Explorer (2004); она до сих пор применяется в эксплойтах браузеров, документов и парсеров шрифтов. Современная защита: ASLR с высокой энтропией, секционированные кучи (PartitionAlloc, Heap Isolation в Edge), Control-Flow Integrity и меры по защите JIT.
Как защититься от Heap Spraying?
Защита от Heap Spraying обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Heap Spraying?
Распространённые альтернативные названия: Heap-спрей.
● Связанные термины
- attacks№ 469
Heap Feng Shui
Детерминированная техника подготовки кучи, представленная Александром Сотировым в 2007 году: аллокации выстраивают так, чтобы уязвимый объект оказывался рядом с подконтрольным.
- vulnerabilities№ 1193
Использование после освобождения
Ошибка безопасности памяти, при которой программа продолжает использовать память после её освобождения, часто позволяя атакующему управлять состоянием объектов и перехватывать выполнение.
- appsec№ 064
ASLR
ASLR случайным образом размещает код, стеки, кучи и библиотеки в памяти при каждом запуске, чтобы атакующий не мог предсказать целевые адреса для эксплойтов.
- vulnerabilities№ 131
Переполнение буфера
Ошибка безопасности памяти, при которой программа пишет за концом выделенного буфера, повреждая соседнюю память и часто открывая возможность выполнения кода.
● См. также
- № 564JIT-распыление