OSECPUのセキュリティ
(1) 一般的なセキュリティ
- OSECPUはASLRがいらない(そんなことしなくても守りきれる)
- だからアドレス空間が少ししかなくても問題ない
- ページングをサポートしていないCPUでも平気
- OSECPUはNX-bitとかセグメンテーションによるハードウェア保護がいらない
- これらの機能を持たない幅広いCPUに対応可能
- LMEM/SMEM命令のポインタに対する自動チェックが、これらを完全に代用しているとも言える
- OSECPUには特権モードがない
- それでもシステムはアプリに対してデータを隠せる、隠したまま渡すこともできる
- 隠したまま渡す = ハンドルとしての使い道(システムからはいつでも中身が見える)
- 逆にアプリはシステムに対してデータを隠すことができる、でもこれがメリットなのかどうかは不明
- OSECPUではuse-after-free脆弱性が発生しない
- 指している先のメモリがfreeされると、自動的にポインタが使えなくなるから
- 同じ仕組みによって、double-free脆弱性も発生しない
(2) (川合の考える)拡張されたセキュリティ
- たとえばバッファオーバーラン脆弱性があったとして、プログラマにとっては、これは意図しないバグだと思います(まさか、わざとやっていたわけじゃないし、有効な対応法がないというわけでもない)。
- こういうのを早期に(=開発中に)誰かが教えてくれたら、こんな脆弱性を作りこまずに済んだはずです。
- となれば、もしもそういう便利機能があれば、それは十分に立派なセキュリティ対策と言えると、僕は考えます。
- これをさらに発展させて、ユーザやプログラマが不便な思いをしないように手助けしてくれるすべての機能が、僕にとってはすべてセキュリティ機能です。たとえば一般的なデバッグ支援だって、セキュリティ機能だと言ってもいいと(僕は)思うのです。誤って削除しちゃったファイルの復元ツールとかも。
- というか、そういうふうにしていかないと、セキュアなOSなんてみんな似たり寄ったりでおもしろくないのではないかと・・・。
こめんと欄