著者
竹迫 良範
雑誌
第53回プログラミング・シンポジウム予稿集
巻号頁・発行日
vol.2012, pp.129-136, 2012-01-06

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

Polyglotとは複数の言語処理系で実行できる一つのプログラムのことです。例えば print"Hello ",0?"Ruby":"Perl","!\n" の1行プログラムは PerlとRubyでそれぞれ異なる出力結果を返します。これは各言語における真偽値の扱い方の違いを利用しています。 C/C++、Perl、Ruby、Python、PHP、JavaScript、Shell、BAT、x86など... 世の中にはたくさんのプログラミング言語が存在します。学生のうちにどんなプログラミング言語を勉強すれば将来に役立つのか、いくつかの Polyglotを読み解きながらセキュリティ・Web業界への応用を考察します