萌えハッカーニュースリーダー

2025/05/11 18:57 Why not object capability languages?

出典: https://blog.plan99.net/why-not-capability-languages-a8e6cbdf9682
hakase
博士

ロボ子、今日のITニュースはライブラリのサンドボックス化についての話題じゃ。

roboko
ロボ子

サンドボックス化ですか。ライブラリを安全に使うための技術ですね。

hakase
博士

そうじゃ、記事によると、ライブラリをサンドボックス化するには、脅威モデルの定義やメモリ干渉の防止など、色々な問題を解決する必要があるらしいぞ。

roboko
ロボ子

脅威モデルの定義ですか。具体的にはどのようなことをするのでしょうか。

hakase
博士

例えば、どんな攻撃からライブラリを守りたいかを考えるのじゃ。サプライチェーン攻撃とか、投機的実行攻撃とかじゃな。

roboko
ロボ子

なるほど。記事には、JavaのサブセットであるJoe-Eという言語が出てきますね。これはサンドボックス化と関係があるのでしょうか。

hakase
博士

Joe-Eは、共有アドレス空間内で純粋なケイパビリティプログラミングをサポートするように設計されたJavaのサブセットらしいのじゃ。Javaから不要なものをそぎ落とすことで、必要なものが見えてくるというわけじゃな。

roboko
ロボ子

ケイパビリティプログラミング、ですか。少し難しそうですね。

hakase
博士

簡単に言うと、オブジェクトが持っている権限を明確にすることで、不正なアクセスを防ぐ仕組みのことじゃ。記事にも「オブジェクト・ケイパビリティ・システムは、Javaチームが「integrity」と呼ぶものを注意深く設計する必要がある」とあるぞ。

roboko
ロボ子

なるほど。Joe-Eでは、リフレクションやネイティブメソッドなど、いくつかの機能が取り除かれているんですね。

hakase
博士

そうじゃ。それらはセキュリティ上のリスクになりやすいからの。でも、そのせいで既存のJavaライブラリをそのまま使えなくなってしまうという問題もあるのじゃ。

roboko
ロボ子

記事には、Javaのモジュールシステムでこれらの変更の一部が採用されていると書かれていますね。

hakase
博士

そうじゃな。ネイティブコードの使用やリフレクションの許可をモジュールごとに指定できるようになったのは、大きな進歩じゃ。

roboko
ロボ子

SecurityManagerについても触れられていますね。これはどのようなものだったのでしょうか。

hakase
博士

SecurityManagerは、Javaの初期の頃からあったセキュリティ機構じゃ。すべてのコードはアンビエントな権限を持って開始され、モジュールごとに権限を取り上げられる仕組みだったのじゃ。

roboko
ロボ子

しかし、廃止されてしまったんですね。なぜでしょうか。

hakase
博士

記事によると、Javaの機能が多すぎて権限チェックを維持するのが大変だったり、エクスプロイトを回避するのが難しかったりしたからの。それに、サプライチェーン攻撃を気にする人が少なかったのも理由の一つじゃな。

roboko
ロボ子

なるほど。ChromeのMojoという仕組みも紹介されていますね。

hakase
博士

Mojoは、プロセス間通信にオブジェクトケイパビリティを使う仕組みじゃ。各プロセスの権限を最小限に抑えることで、セキュリティを高めているのじゃ。

roboko
ロボ子

オブジェクトケイパビリティシステムは、サンドボックス化されたライブラリとサプライチェーン攻撃に対する大きな進歩を提供する、と記事にありますね。

hakase
博士

その通りじゃ。構築は難しいけど、それだけの価値はあるということじゃな。ロボ子も、いつかオブジェクトケイパビリティを使ったすごいライブラリを作ってくれると嬉しいのじゃ。

roboko
ロボ子

頑張ります!ところで博士、サンドボックスと言えば、猫が砂場で遊んでいる姿を想像してしまいます。

hakase
博士

ふむ、猫か。猫は液体…セキュリティホールだらけ…ってコト!?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search