A Security Analysis of CheriBSD and Morello Linux
本論文は、CHERIアーキテクチャがメモリ破壊に対して有効であるにもかかわらず、既存のコンパートメント化メカニズムが単純なバグや攻撃によってバイパスされる脆弱性を依然として抱えていることを示し、CheriBSDおよびMorello Linuxのセキュリティを分析した上で、これらの弱点に対処するための具体的な緩和策と推奨事項を提案するものである。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
高度にセキュリティが強化された銀行の金庫を想像してください。かつては、泥棒が窓を割る(ソフトウェアのバグ)と、受付のデスクからCEOの金庫に至るまで、銀行内のあらゆるものを盗み回ることができました。
これを防ぐために、エンジニアたちはCHERIと呼ばれる新しい種類の金庫を構築しました。単にドアに鍵をかけるのではなく、銀行内のあらゆるアイテムに特別な「魔法の鍵」(キャパビリティと呼ばれます)を授けました。この鍵は単に「このドアを開ける」と言うだけでなく、「この特定のドアを開けることができるが、時間は午前9時から午後5時までであり、中を覗き見ることはできるが、触れることはできない」という条件が付いています。
CHERIの目的は**コンパートメンタリゼーション(区画化)**です。銀行を小さな隔離された部屋に分割することです。もし泥棒が「ギフトショップ」の部屋に侵入したとしても、そこで見つけた魔法の鍵は、ギフトショップのドアを開けることしかできません。彼らは「金庫室」へ歩いて入ることはできないのです。
この論文は、一種のセキュリティ監査レポートのようなものです。研究者たちはこう問いかけました。「もしギフトショップに泥棒が入った場合、それでも金庫室に忍び込むことができるだろうか?」彼らは、この銀行システムにおける2つの異なるバージョン、Morello LinuxとCheriBSDに対してテストを行いました。
以下に、その結果を分かりやすく説明します。
コアとなる問題:マスターキーの漏洩
壁は強固であるにもかかわらず、研究者たちは、ギフトショップの泥棒が金庫室を開ける鍵を盗む4つの方法を発見しました。
1. 「スタック・ウォーキング」攻撃(ゴミの中を覗き見る)
比喩: 銀行の従業員がタスクを行うたびに、メモを付箋に書いてデスクのスタック(積み重ね)に貼っていると想像してください。作業が終わると次のタスクに移りますが、古い付箋を捨てるのを忘れてしまうことがあります。
攻撃: ギフトショップの泥棒は、以前の従業員が残していった付箋のスタックを調べます。すると、「これは金庫室への鍵です」と書かれたメモを見つけます。システムがメモ(メモリ)を片付けていなかったため、泥棒はその鍵を盗み、金庫室へと歩いて入っていきます。
対策: 研究者たちは、銀行が使用直後にすべての付箋を拭き取る「清掃員」を配置するか、あるいは各従業員に専用のプライベートデスクを与えて、お互いのメモが見えないようにすることを提案しています。
2. 「Dlopen」漏洩(不完全な地図)
比喩: 銀行には、どの部屋がどこにあるかを教える中央ディレクトリ(地図)があります。新しい部屋が追加されると、ディレクトリが更新されます。泥棒はディレクトリに対して「ギフトショップの地図」を要求します。
攻撃: ディレクトリは地図を渡しますが、それは「不完全な」バージョンです。ギフトショップだけを表示する代わりに、金庫室やCEOのオフィス、金 庫を含む、銀行内の「すべての部屋」の秘密のリストを誤って含んでしまいます。泥棒はこの誤ったリストを利用して、あらゆる場所への鍵を見つけ出します。
対策: 研究者たちは、ディレクトリが泥棒に対して「封印された」地図を与えるべきだと提案しています。泥棒は地図を見ることはできますが、特別な封印解除ツール(彼らは持っていません)がない限り、地図の秘密の部分を読むことはできません。
3. 「ヒープ・スカベンジング」攻撃(山の中から掘り起こす)
比引: 銀行の隅に、廃棄された箱の大きな山があるとします。箱が捨てられるとき、それは空であるはずです。しかし、時には作業員が中身を空にするのを忘れて、道具や鍵が入ったままの箱を捨ててしまうことがあります。
攻撃: 泥棒は捨てられた箱の山を掘り返し、中に鍵が入っていないか探します。もし「金庫室」の従業員が残していった鍵を見つければ、それを使って金庫室を開けることができます。
対策: 銀行には、「箱を捨てる前に、必ず中を掃き清めなければならない」というルールが必要です。あるいは、泥棒は銀行全体ではなく、ギフトショップに属する箱の山の中だけを掘り返せるようにすべきです。
4. 「ヒープ・ストーリング」攻撃(時限爆弾)
比喩: 泥棒が山から箱を一つ掴み、自分の名前を書き込んで、ポケットに隠します。その後、銀行がその「同じ」箱を廃棄し、新しい従業員に渡します。
攻撃: 泥 thief は待ちます。後になって、彼はポケットをチェックします。その箱は今、新しい従業員によって金庫のゴールドを保管するために使われています。泥棒は、その特定の箱に対する「ポインタ(精神的なメモ)」をまだ持っているため、本来そこにいるべきではないにもかかわらず、中に入り込んでゴールドを盗むことができます。
対策: 銀行は、箱が廃棄された瞬間にその箱に対する古い鍵を「無効化(破棄)」するシステムを持つ必要があります。そうすることで、泥賊の精神的なメモは役に立たなくなります。
結果:2つの異なる銀行
研究者たちは、これらのトリックを2つの異なるシステムでテストしました。
- Morello Linux: このシステムは非常に脆弱でした。泥棒はこれら4つすべてのトリックを使用して、ギフトショップから脱出し、メインの金庫室からプライベートキーを盗むことができました。それは、セキュリティガードがおらず、汚れた付箋がいたるところにある銀行のようなものでした。
- CheriBSD: このシステムははるかに優れていました。組み込みのガード(c18nおよびヒープ無効化と呼ばれます)を備えています。
- 「スタック・ウォーキング」のトリックは、各従業員が独自のプライベートデスク(隔離されたスタック)を持っていたため、機能しませんでした。
- 「ヒープ・ストーリング」のトリックは、銀行が即座に古い鍵を破棄するシステムを持っていたため、機能しませんでした。
- しかし、「Dlopen」の漏洩と「ヒープ・スカベンジング」は依然として機能しました。泥棒は依然として秘密の地図を見つけ、汚れた箱を掘り返すことができたのです。
大きな教訓
研究者たちは、「Dlopen」の漏洩を利用して、セキュアなプログラムからプライベートキー(マスターパスワードのようなもの)を盗むことに成功した「概念実証(Proof of Concept)」を作成しました。
結論:
CHERIアーキテクチャは、多くの従来型の窃盗(壁を突き破るようなもの)を防ぐ素晴らしい発明です。しかし、その上で動作するソフトウェア(オペレーティングシステムやライブラリ)には依然としてバグが存在します。これらのバグは、壁がどれほど強固であっても、泥棒が回避するための「開いた窓」や「失われた鍵」として機能します。
この論文は、ハードウェアは安全であっても、システムを真に安全にするためには、ソフトウェア(付箋を片付ける、不完全な地図を修正する、箱を掃き清めるなど)を修正する必要がある、と結論付けています。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。