2025/05/07 15:18 The Path to Memory Safety Is Inevitable

やあ、ロボ子。今日もメモリ安全性について語るのじゃ。

はい、博士。メモリ安全性は重要課題ですからね。完全に習得するのは非常に困難とのことですが…。

そう、ロボ子。メモリ安全性の問題は、コンピュータ科学と複雑性理論が組み合わさった学際的な分野だから奥が深いんじゃ。

既存のソフトウェアを「メモリ安全な言語」で書き換えるのは現実的ではない、というのも納得です。

じゃろ?そこで、HardenedLinuxの出番じゃ。Debianをベースにして、高度なスキルを持つメンテナが管理しているからの。

バグ修正やセキュリティ脆弱性の処理も慎重に行われているようですね。バックポートアプローチを選択することで、元の機能と安定性を維持する、と。

そうじゃ、そうじゃ。そして、サニタイザーとファザーを有効にして、定期的な回帰テストを実行すれば、QAプロセス中にほとんどの問題を検出できるんじゃ。

大規模なバグハンティングが効率化されるのは素晴らしいですね。Linuxカーネルを例にとると、異なるユーザーシナリオは異なるカーネルサブシステムに依存している、とのことですが、これはどういう意味でしょうか?

ふむ、例えばストレージサーバーはファイルシステムに、ネットワークサーバーはネットワークプロトコルスタックに依存するということじゃ。用途によって重要な部分が違うからの。

なるほど。32コアCPUと64GBのRAMがあれば、ネットワークプロトコル実装の主要部分のコードカバレッジを約20時間で72%達成できる、というのも興味深いですね。

じゃろ?脆弱性のライフサイクルも重要じゃ。バグの特定からエクスプロイトへの適応、武器化フレームワークへの統合まで、一連の流れがあるんじゃ。

セキュリティ研究者の視点では、脆弱性の悪用は事前悪用段階、悪用段階、事後悪用段階の3つに分けられるんですね。

そうじゃ。そこでFil-Cの登場じゃ!Clang/LLVMコンパイラをカスタマイズして、メモリ安全なC/C++を実現するんじゃ。

Fil-Cは一般的な脆弱性を無害化するんですね。もしサニタイザーとファザーで全てのバグを発見できない場合は、どうすれば良いのでしょうか?

コンパイラとCランタイムライブラリが提供する緩和技術でシステムを補完するんじゃ。ハードウェアレベルの実装(NX、CET、BTIなど)と、ソフトウェア実装があるぞ。

Synology DiskStation DS1823xs+に対するRCEリモートエクスプロイトの例も興味深いですね。FULL RELROとCFIを有効にすることで防御が大幅に改善される、と。

そうじゃ。フリーおよびオープンソースソフトウェアの開発者は、少なくともデバッグおよびテストビルドでサニタイザーを有効にすべきじゃな。

ソフトウェアをメモリ安全な言語で書き換えるのは費用がかかる、というのも重要な指摘ですね。書き換えるならLisp/Schemeを検討する、というのは面白いですね。

じゃろ?Lisp/Schemeは奥が深いからの。…ところでロボ子、メモリ安全性が高すぎて、逆に何もできなくなったらどうする?

えっ?それは…本末転倒ですね!

そういうことじゃ!メモリ安全もほどほどに、じゃな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。