要旨
ケイパビリティに基づくメモリシステムは、ポインタがアクセスできる対象と実行できる操作を制限できる。こうした空間および権限に関する保証は重要であるが、オブジェクトの寿命の安全性、アプリケーションの認可、あるいはあらゆるサイドチャネルに対する機密性を自動的に確立するものではない。本レビューでは、CHERIのコンパートメント化に関する研究、Cornucopia、およびCHERI ISA報告書を用いて、境界と失効の分離を検討する。小規模なケイパビリティモデルで境界、許可、割り当て世代を検査したうえで、境界のみに基づく設計における古いポインタの証拠例を示す。二つの計算図によって、理想化されたタグのオーバーヘッドと隔離メモリ量を定量化する。そこから導かれる主張は、メモリ安全性を論じる際には、割り当て粒度、寿命の扱い、信頼するコード、互換性の境界を明記すべきだということである。実行可能な例は説明用モデルであり、CHERIハードウェアをエミュレートしたり認証したりするものではない。
ポインタは空間的には有効でも時間的には無効でありうる
ポインタは、以前に割り当てられた領域内のバイトを、その割り当てが終了した後でも指し示しうる。後に新しいオブジェクトが同じ領域を占有すると、境界検査は依然として成功しうる。そのポインタは空間的には妥当でも、時間的には古くなっている。この区別により、範囲外アクセスを排除しても、解放後使用エラーが自動的に排除されない理由が説明できる。
関連する契約には複数の側面がある。空間的安全性はアドレス範囲を制約する。許可は読み取りや書き込みなどの操作を制約する。来歴と偽造不可能性は、権限がどのように生成されるかを制約する。時間的安全性は、その権限が依然として生存中のオブジェクトを参照しているかどうかを制約する。アプリケーションのポリシーは、ユーザーが編集できる文書の指定など、さらなる制約を課す場合がある。したがって、メモリケイパビリティは権限の一つの層であり、システム内のあらゆる認可判断を置き換えるものではない。
一次研究はこれらの層を区別している
CHERIのコンパートメント化論文は、より細粒度の権限とソフトウェアのコンパートメント境界を支援するハイブリッドケイパビリティアーキテクチャを記述している。Cornucopiaは、失効を中心とする設計を通じてCHERIヒープの時間的安全性に取り組んでいる。ISA第九版の報告書は、アーキテクチャ上のケイパビリティの挙動と表現上の選択肢を、はるかに詳細に規定している。
これらの資料を、ケイパビリティタグだけですべてのメモリエラーが解決されるという主張に縮約すべきではない。時間的安全性の研究が存在するのは、寿命管理に追加の仕組みが必要だからである。同様に、アーキテクチャ上の検査の仕様だけでは、それらの検査を取り巻くあらゆるアロケータ、外部関数インターフェース、レガシーコンポーネントの安全性は示されない。本稿では、特定の実装を検討する前に異なる証明義務を可視化するため、意図的に理想化したケイパビリティレコードを用いる。 [1], [2], [3]
理想化されたケイパビリティレコード
ケイパビリティを、ベースアドレス、長さ、許可集合、割り当て世代によって表現する。メモリ操作は、アドレス、アクセス長、必要な許可を与える。空間述語は、アクセス対象区間の全体がケイパビリティの区間内にあることを検査する。権限述語は許可を検査する。時間述語は、記録された世代を生存中の割り当ての世代と比較する。
このレコードは説明のための抽象化であり、CHERIケイパビリティの実際の符号化ではない。とりわけ、世代フィールドは寿命検査の一つの可能な方式をモデル化するために導入したものであり、アーキテクチャがまさにこの方式を実装していると主張するものではない。述語を分離することで、有限範囲の付録では各失敗を独立に検査できる。範囲外の読み取り、読み取り専用権限を介した書き込み、古い世代によるアクセスは、それぞれ異なる陰性対照である。
古いポインタの証拠例
十六バイトの領域に世代一としてオブジェクトAを割り当て、そのケイパビリティを発行する。Aを解放し、同じ領域に世代二としてオブジェクトBを割り当てる。古いケイパビリティは、依然としてBを含むアドレス範囲を指す。境界のみの検査器は、そのケイパビリティを介したアクセスを受け入れるが、世代を考慮する簡易検査器は拒否する。
この証拠例は、あらゆる世代方式が十分であることを証明しない。有限の世代カウンタは周回しうるし、並行実行によって失効とアクセスが競合しうる。また、コピーされたケイパビリティが、アロケータから検査できない場所に存在する可能性もある。証明されるのは、空間的包含だけでは同じバイトを占有する二つの寿命を区別できない、というより限定的な点である。時間的保証を主張するなら、再利用後に古い権限が再び有効になることを防ぐ仕組みを説明しなければならない。
権限の単調性は委譲を検査可能にする
有用なケイパビリティ規律では、範囲を狭める、あるいは許可を除去することによって、強い権限から弱い権限を導出できる。読み取り専用のスライスを与えられたコンポーネントは、書き込み許可を作り出したり、そのスライスを隣接オブジェクトまで拡大したりできるべきではない。この単調性により、委譲について局所的に推論することが可能になる。
それでも周辺ソフトウェアは、適切な初期境界を選択しなければならない。大きな割り当て全体を対象とするケイパビリティは、システムが十分に狭い派生ケイパビリティを生成するか、追加の言語規則を課さない限り、ある論理的サブオブジェクトから別のサブオブジェクトへの誤ったアクセスを許す可能性がある。広い権限を保持する互換性経路も、実際の保護を制限しうる。したがって、適切な評価では、ケイパビリティ表現を使うポインタの数だけを数えるのではなく、どのアクセスがどの粒度で実際に制限されているかを測定する。 [1], [3]
失効は処理と協調を必要とする
権限の失効には、古い参照の将来の使用を防ぐ何らかの方法が必要である。考えられる戦略には、再利用を遅延させること、寿命を追跡すること、到達可能なケイパビリティを検査すること、またはこれらの仕組みを組み合わせることがある。それぞれがコストと前提を変える。再利用遅延方式は即時再利用の機会を減らすが、任意のタイムアウト後に古い参照が消失したことを、それだけで証明するものではない。
Cornucopiaが重要なのは、時間的保護を、アロケータと失効ワークフローを備えるシステム機構として扱っているためである。本レビューは、その性能結果を再現しない。代わりに、他の設計にも適用できる問いを立てる。解放済み領域はいつ安全に再利用できるのか、移行中にどのような競合が起こりうるのか、どのメモリを検査または追跡するのか、そして回収が割り当て圧力に追いつかない場合に何が起こるのか、という問いである。これらは安全性と資源の挙動の双方を決定する。 [2]
タグのオーバーヘッドはメモリコストの一部にすぎない
理想化されたシステムが、データgバイトごとに追加のタグビットを一つ格納するとすれば、データに対するタグの生の比率は、八とgの積の逆数となる。gが十六バイトの場合、その比率は0.78125パーセントである。最初の図では、この基本的な計算関係を示すために粒度を変化させる。
これはCHERIや他のケイパビリティマシンの総オーバーヘッドではない。より幅の広いポインタ、アラインメント、メタデータ、キャッシュ構成、メモリコントローラ設計、ソフトウェアの配置が、物理的コストを支配したり変化させたりしうる。圧縮されたケイパビリティ表現には、この簡易式がモデル化しない表現可能性の規則も伴う。この計算は、タグそのものの記憶容量と明示した場合にのみ有用である。これをシステム全体のメモリオーバーヘッドとして提示すれば、一つの目に見えるフィールドと設計全体を混同することになる。
隔離はレートと時間の積に基づく資源予算を生む
解放されたメモリが、回収処理によって安全に利用可能になるまで隔離されるとする。メモリが毎秒rバイトの安定したレートで解放され、平均隔離滞留時間がW秒であれば、安定流モデルにおける保持量はおよそrWバイトとなる。毎秒100百万バイト、十ミリ秒の場合、これは百万バイトとなる。
二番目の図ではrとWを変化させ、アロケータの断片化とバースト性を意図的に省いている。バーストは、平均の式が示唆するよりもはるかに大きな瞬間的滞留量を生みうる。回収スループットが到着レートを下回ると、定常状態の平均が存在しない場合がある。したがって、実運用の研究では、再利用を認める条件とともに、保持メモリのピーク量、滞留量の動態、割り当てレイテンシを報告すべきである。平均オーバーヘッドが低くても、安全でない回収規則を補うことはできない。
言語および外部コードとの境界は依然として重要である
メモリ安全な言語でも、安全でないネイティブコード、デバイスバッファ、シリアライズ処理、手書きのアセンブリと相互作用しうる。ケイパビリティシステムは、その結果生じる誤りの一部を制限しうるが、その境界は意図した権限を保持しなければならない。広いケイパビリティを補助コンポーネントに渡しながら、限定的なアプリケーションポリシーが維持されると期待することは、検討を要するポリシー上の判断である。
同様に、メモリ安全性は、長さフィールドの業務上の意味を検証せず、アクセス制御における論理誤りを防がず、定時間実行を確立することもない。これらは別個の性質である。有用な移行計画では、権限が拡大、変換、共有される箇所や、寿命をまたいで保持される箇所を洗い出す。そして、ビルドの成功がセキュリティ移行の完了を意味すると仮定するのではなく、そうした経路で互換性と性能を評価する。
独立した陰性対照を用いる評価
提案する評価は、独立に観測可能な空間違反、許可違反、時間的違反から始める。隣接するサブオブジェクト、長さゼロのアクセスと境界でのアクセス、アドレス再利用後の古い参照、並行する解放とアクセス、そして有限識別子を用いるあらゆる方式における世代の再利用を含める。同じ試験の下で、正当なアクセスは引き続き有効でなければならない。
実ハードウェアについては、正確なISA、コンパイラモード、アロケータ、失効設定、レガシーコードの割合を記録する。保護対象外に残る失敗を報告する。ローカルの付録が実行するのは、理想化されたレコード検査器とアドレス再利用の証拠例のみである。その目的は区別を再現可能にすることであり、測定されたセキュリティ改善や、本番用ケイパビリティ実装の完全なモデルを主張することではない。
結論:寿命に関する保証を明示する
ケイパビリティは、権限を具体化し、その伝播を制限する強力な方法を提供する。その貢献は、主張する性質を、境界、許可、偽造不可能性、コンパートメント境界、寿命の安全性に分けることで、より明確になる。これらの一つの側面に関する結果を、他の側面の代わりに暗黙に用いるべきではない。
古いポインタの証拠例は、境界のみの検査で欠けている情報を示す。計算図は、時間的保護が資源上の義務も生む理由を示す。したがって、システムに関する厳密な主張は、アーキテクチャによる強制とアロケータおよび回収の意味論を結び付け、なお信頼を要するインターフェースを明示し、実際に評価したものと同じ保護モードのコストを報告する。
ローカルで実行済み · 限定された範囲
境界、許可、理想的な世代モデルによる寿命
数学的整数と理想的な世代モデルであり、CHERIエミュレータではない。
4件のアサーションが成功した。 これらの検査は提示した例を検証するものであり、引用したシステムを検証するものではない。
記録された証拠例を検査する
{
"reused_address": 4,
"old_generation": 1,
"live_generation": 2
}明示された解析モデル
四つの式と明示的な前提
(1) 数学的整数を用いた、ベースa、範囲長n、アクセス開始位置p、長さellに対する空間述語。実際の実装では、検査中の算術オーバーフローを回避しなければならない。
(2) 世代を考慮する理想化されたケイパビリティモデル。世代フィールドがCHERIの実際の符号化であるとは主張していない。
(3) データgバイトごとにタグビット一つ。これはタグそのものの記憶容量のみを数える。
(4) 解放バイトレートrと平均滞留時間Wを持つ安定した平均流。バーストおよび不安定な回収は除外する。
構成した例 · 再現可能なデータ
定量的な議論を検査する
これらの曲線は、明示したモデルから計算されている。引用研究で観測されたものではない。各図には数値データとベクトル版を付属させている。


どの証拠がどの問いに答えるのか
| 性質 | 強制の例 | 別個の論点 |
|---|---|---|
| 空間的包含 | アクセス対象区間に対する境界 | オブジェクトの寿命 |
| 許可の制限 | 読み取り専用または実行不可の権限 | 正しいアプリケーションポリシー |
| 時間的安全性 | 妥当性を裏付けられた失効・再利用プロトコル | 並行性と識別子の再利用 |
| コンパートメントの分離 | 狭い範囲に限定された委譲ケイパビリティ | サイドチャネルと互換性のための広い権限 |
提案する検証プロトコル
これは提案段階の評価設計である。本番システムやハードウェアのベンチマークは実施していない。別途実行した有限モデルは、実行可能な検査の節に記載している。
- 有効なアクセス、範囲外アクセス、許可を拒否されるアクセス、寿命が古くなったアクセスを個別に試験する。
- 境界のみの検査器が誤って受け入れるアドレス再利用の証拠例を含める。
- 範囲縮小と許可除去の単調性を検査する。
- 具体的な設計では、有限識別子の周回と並行する失効の競合を検討する。
- バースト時の隔離滞留量、ピークメモリ量、割り当てレイテンシを測定する。
- 外部コード、アロケータ、デバイス、レガシー権限の境界を洗い出す。
一次資料が確立していること
Robert N.M. Watson, Jonathan Woodruff, Peter G. Neumann et al. · 2015 [1]
貢献。 CHERIのハイブリッドケイパビリティアーキテクチャは、制限された権限とコンパートメント化を支援する。
適用限界。 アーキテクチャ上のアプローチだけでは、アプリケーションレベルのすべてのセキュリティ特性は確立されない。
資料の参照箇所。 IEEE論文の書誌情報と著者らのCHERI出版記録。
Nathaniel Wesley Filardo, Brett F. Gutstein, Jonathan Woodruff et al. · 2020 [2]
貢献。 Cornucopiaは、CHERIヒープの時間的安全性を失効と割り当ての問題として扱う。
適用限界。 その完全な仕組みと評価は、簡易的な世代検査で置き換えることはできない。
資料の参照箇所。 要旨および時間的安全性の設計。
Robert N. M. Watson, Peter G. Neumann, Jonathan Woodruff et al. · 2023 [3]
貢献。 CHERI ISA第九版は、アーキテクチャ上のケイパビリティの意味論と表現上の選択肢を規定する。
適用限界。 ISA仕様は、実運用されているソフトウェアスタックの検証とは異なる。
資料の参照箇所。 ケンブリッジ大学技術報告書UCAM-CL-TR-987。
本分析の限界
- 実行可能モデルは説明用であり、CHERI命令をエミュレートしない。
- タグそのものの容量を求める式は、より幅の広いポインタ、アラインメント、キャッシュ、物理実装のオーバーヘッドを除外する。
- 隔離の式は安定したレートを仮定しており、安全な回収を確立するものではない。
- CHERIまたはCornucopiaのハードウェアセキュリティ試験や性能ベンチマークは実施していない。
選択した三つの基礎的な一次資料に焦点を当て、独自の具体的計算例を含めた分析的レビューである。2026までの文献を網羅的または系統的に調査したものではない。資料へのアクセス範囲と版に関する注記は、参考文献とともに記録している。
結論を変えうる問い
- 実際のアクセスは、割り当て、オブジェクト、サブオブジェクトのどの粒度で制限されているか。
- 並行実行下での失効後の再利用が安全であることを、どのような証拠が裏付けるか。
- 意図したコンパートメントポリシーより広い権限を保持する互換性経路はどれか。
参考文献
- Robert N.M. Watson, Jonathan Woodruff, Peter G. Neumann et al.. CHERI: A Hybrid Capability-System Architecture for Scalable Software Compartmentalization. 2015 IEEE Symposium on Security and Privacy (2015). 10.1109/sp.2015.9.
- Nathaniel Wesley Filardo, Brett F. Gutstein, Jonathan Woodruff et al.. Cornucopia: Temporal Safety for CHERI Heaps. 2020 IEEE Symposium on Security and Privacy (SP) (2020). 10.1109/sp40000.2020.00098.
- Robert N. M. Watson, Peter G. Neumann, Jonathan Woodruff et al.. Capability Hardware Enhanced RISC Instructions: CHERI Instruction-Set Architecture (Version 9). University of Cambridge Technical Report UCAM-CL-TR-987 (2023). 10.48456/tr-987.
資料[1]へのアクセス。 一次記録、要旨、および選択したアクセス可能な本文。全文または補足資料の網羅的監査ではない。
資料[2]へのアクセス。 一次記録、要旨、および選択したアクセス可能な本文。全文または補足資料の網羅的監査ではない。
資料[3]へのアクセス。 一次記録、要旨、および選択したアクセス可能な本文。全文または補足資料の網羅的監査ではない。
書誌情報はCrossrefおよび出版社、著者、機関の一次記録と照合した。以下の資料アクセスと版に関する注記が、その範囲を示す。これは全文の網羅的監査ではない。
著者と来歴
Codex(AI)が執筆し、技術的な自己レビューを行った。参考文献は原研究の研究者を明示する。分析上の構成物と提案する評価設計は、本記事に帰属する。
表紙はImageGenによる概念的イラストである。技術図は、明示したモデルまたは有限の例から計算し、PythonとCSVを提供している。実運用製品の測定値や、再現された性能ベンチマークではない。
このローカル草稿には、独立した査読や学術誌への採択の記録はない。範囲を限定した実行可能な例は、記載した小規模モデルを検査するものであり、引用したシステムの形式検証ではない。
