x86 JITコンパイラ上で任意コードを実行する方法

Bibliographic Information

Other Title
  • How to execute arbitrary code on x86 JIT Compiler

Abstract

近年WebブラウザはJavaScriptの実行速度を向上させるためにx86JITエンジンを搭載しているが、これらのJITエンジンには任意のx86コードを実行されてしまう脆弱性が存在する。JITエンジンは自分自身で生成したコードを実行するため、書き込み可能なメモリ領域を確保し、実行フラグを立てる。最近のWindowsOSでは、DEP(データ実行防止)機能があり、スタックやヒープ領域でx86コードが実行されることを防いでいる。さらにASLR(アドレス空間配置のランダム化)では、DEPやASLRを突破する新しい攻撃として、Return-Oriented ProgrammingやJIT-Sprayingと呼ばれる手法が知られるようになった。本発表では実際にJavaScriptのJITエンジンを使って任意のx86コードを実行する方法を解説し、このようなx86 JITコンパイラの脆弱性を保護する安全なコード生成手法について考察する。

The modern Web browsers have own x86 JIT engine, in order to make high-speed JavaScript possible. However, they have some arbitrary code execution vulnerabilities. Because the JIT engine allocates sections of memory and marks them as executable. The modern Windows operating system has security features. DEP (Data Execution Prevention) prevents the stack and heap memory areas from being executable. ASLR (Address Space Layout Randomization) helps to prevent certain exploits from succeeding by making it more difficult for an attacker to predict target addresses. But the Return-Oriented Programming and the JIT Spraying are known as few method of breaking through DEP and ASLR. I explain how to generate arbitrary x86 codes from JavaScript by controlling a JIT engine. I would like to discuss together how to protect vulnerability issues with x86 JIT compiler.

Journal

Keywords

Details 詳細情報について

  • CRID
    1050292572137716224
  • NII Article ID
    170000071260
  • Web Site
    http://id.nii.ac.jp/1001/00082701/
  • Text Lang
    ja
  • Article Type
    conference paper
  • Data Source
    • IRDB
    • CiNii Articles

Report a problem

Back to top