JITスプレー
JITは、バイトコードを次のx86ネイティブコードに変換する。
次に、攻撃者はバグを利用して、コード実行を新しく生成したコードにリダイレクトさせる。例えば、バッファオーバーフローバグやuse-after-freeバグを使って、関数ポインタやリターンアドレスを上書きする。
これにより、CPUにJITコンパイラの作者が意図していない命令を実行させることができる。また、意図されたものである命令の途中にジャンプし、CPUに別の命令として解釈させることも可能で、基本的に命令境界による制限を受けない。非JITのreturn-oriented programming攻撃と同様に、コンピュータの制御を奪うのに十分な数の命令を得られる場合がある。例えば、mov命令の2バイト目にジャンプすると、inc命令が実行される。
命令の途中にジャンプ可能なハードウェアには、x86、x86-64、ARMなどがある。JITスプレー攻撃はこれらのハードウェアで特に効果的であるが、他のシステムにも応用可能である。