JIT-распыление
Что такое JIT-распыление?
JIT-распылениеЭксплуатационная техника, использующая JIT-компиляторы для размещения выбранных атакующим исполняемых байтов внутри легально сгенерированных исполняемых страниц памяти.
JIT-распыление — техника эксплуатации повреждений памяти против сред выполнения с JIT-компиляцией: движков JavaScript (V8, SpiderMonkey, JSC), .NET CLR, JVM, ActionScript или eBPF. Атакующий пишет высокоуровневый код так, чтобы его JIT-вывод при чтении как сырых байтов декодировался в нужные нативные инструкции, в результате полезная нагрузка оказывается внутри RWX-страниц JIT'а. В сочетании с уязвимостью, перехватывающей поток управления, атакующий переходит к распылённым гаджетам, обходя защиту от выполнения данных, поскольку память легально помечена исполняемой. Современные меры включают constant blinding, случайные регионы кода, W^X-разделение, ASLR и CFI.
● Примеры
- 01
Распыление множества JavaScript-умножений, чьи константы кодируют shellcode.
- 02
Использование ActionScript JIT для размещения NOP sled и shellcode в JIT-области Flash Player.
● Частые вопросы
Что такое JIT-распыление?
Эксплуатационная техника, использующая JIT-компиляторы для размещения выбранных атакующим исполняемых байтов внутри легально сгенерированных исполняемых страниц памяти. Относится к категории Безопасность приложений в кибербезопасности.
Что означает JIT-распыление?
Эксплуатационная техника, использующая JIT-компиляторы для размещения выбранных атакующим исполняемых байтов внутри легально сгенерированных исполняемых страниц памяти.
Как защититься от JIT-распыление?
Защита от JIT-распыление обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия JIT-распыление?
Распространённые альтернативные названия: JIT Spray.