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

書誌事項

タイトル別名
  • How to execute arbitrary code on x86 JIT Compiler

抄録

近年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.

収録刊行物

キーワード

詳細情報 詳細情報について

  • CRID
    1050292572137716224
  • NII論文ID
    170000071260
  • Web Site
    http://id.nii.ac.jp/1001/00082701/
  • 本文言語コード
    ja
  • 資料種別
    conference paper
  • データソース種別
    • IRDB
    • CiNii Articles

問題の指摘

ページトップへ