Google Native Code talk


ワイシャツにアイロンをあてながら NaCl (Native Client) Project のビデオを見ました。

ブラウザのなかで Native code を安全に動かすソフトウェアの仕掛けです。基本的には、実行前にコードを静的に検査し、コードは 32bit アラインメントにした上ですべてのジャンプの飛び先を検査し、静的に検査できない部分は SFI (Software fault isolation) で守り、機種依存で手元の CPU で実行できない命令は HLT に変換し、ret/int/syscall などの危険な命令は不可とするとのことです。当然、既存のコンパイラを修正しなくてはなりません。ret は buffer overflow 攻撃の対象となるために避けたのでしょう。代りに pop + jmp するようです。どうして、こちらが安全なのかはわかりませんでした。