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 обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Heap Spraying?
Распространённые альтернативные названия: Heap-спрей.