Intelが次世代モバイルプロセッサのTigerlakeにCET技術を搭載すると発表しました。
CETというのは、マルウェアを防ぐ技術だそうで、Control-flow Enforcement Technology(制御フロー施行テクノロジー)の略だそうです。
具体的に何するのかというと、
1、ROP(Return Oriented Programming)
戻りアドレスの書き換え
2、JOP(Jump Oriented Programming)
ジャンプ先アドレスの書き換え
3、COP(Call Oriented Programming)
システムコール先アドレスの書き換え
の3つをチップレベルで防ぐということで、なんのことかさっぱりって感じですが、
要は、バッファオーバーフロー対策です。
例えば、C言語で書くと、
memcpy(a, b, 1000)
というのは、「bをaにコピーしろ」って命令ですが、これがバッファオーバーフローのバグになり得るわけです。
だって、aの領域が100バイトしかなかったら、残り900バイト分はバッファが溢れる(オーバーフローする)わけで、他の用途で使用するはずだった場所が上書きされてしまうわけです。
そして、上のmemcpyたった1行で、ROPもJOPもCOPも全て実現でき、マルウェアが実行できる可能性があります。
要はジャンプ先アドレスをマルウェアとして任意のアドレスに書き換えてしまえば、マルウェアが実行できてしまうわけです。
で、IntelのCETは何をするかというと、スタックメモリのコピーと、書き換えられていないかのチェックです。
プロセッサはスタックメモリを確保する際に、それをチップ内の書き換え不能な場所にコピーします。
そして、スタックを解放する際に、保持しておいたコピーの値と比較して、一致しなかった場合はバッファオーバーフローが発生したと見做して例外を発生させるという仕組みみたいです。
もちろん、スタックは書き換えられるのが普通なので、どこが書き換わったらいけないかをチェックするのに、カーネルの協力が必要になるでしょう。
ということで、セキュリティが強化されたのは大変良いことですが、メルトダウンとか、いくつかIntelのプロセッサには脆弱性があったと思いますが、あの一連の脆弱性対策ではないということには注意が必要そうです。
