Slashdot で話題になっていた CPU レベルでのバッファオーバフロー対策の説明を読んでみた。URL はここ。ここからでは十分な情報が得られないので推測も含めて考えてみる。

http://www.dnki.co.jp/linuxbox/SafetyLinux/b3safe.html

特許になるかどうかは置いておくとして、この方法の概要をまとめる。

この方法ではスタックを二種類に分ける。そのために必要な変更を CPU に行う。具体的にはレジスタの追加およびいくつかの命令(push, pop, call, int, ret, iret)の動作の変更である(データスタック、コントロールスタックをそれぞれ適切に使うように変更)。これで、リターンアドレスやスタックフレームのポインタはコントロールスタックに対して、それ以外のデータはデータスタックに対して積んだり取り出したりするようになる。概念的には StackShield と全く同じ。実装方法の違いのみに見える。

この説明ではアプリケーションの互換性を謳っているのでアプリケーションはバイナリ互換を意図しているのだとすると、慎重に実装すればという部分は OS にかかっているのかな。確に OS を変更せずにこの機能を利用することはできない(はず)なのだが、longjmp 等のややこしい問題については OS の実装者が注意して対処しろってことなのか? もしアイデアがあるなら書いてくれていたらうれしいけど、その辺も特許のクレームの一つになっているのかなぁ。

うーん、微妙。少なくともこれだけでわかる情報からは新規性が読み取れなかった。