CVE-2026-108698 / CVE-2026-108699: hyper-mcp 0.8.3 以前の OCI プラグイン署名検証における TOCTOU Race Condition 脆弱性概要 hyper-mcp は OCI レジストリから WebAssembly プラグインを読み込み、読み込み前に各プラグインの署名を Cosign を用いて検証します。しかし、検証プロセスでは、署名がローダーが実際に使用するマニフェストに対して暗号学的にバインドされていません。 内の は、 を使用して参照を解析し、返された を保持します。その後、 を呼び出し、レジストリごとに個別に解決される名前である、元の変数化されたラベル(mutable tag)を含む参照文字列を使用します。Cosign は独自の子プロセスとして実行され、同じラベルに対して独立した参照を行います。ローダーは Cosign プロセスの終了状態のみを確認し、Cosign によって検証されたダイジェストを戻し読みしないため、そのダイジェストを と比較することはありません。Cosign がゼロで終了した後、ローダーはメモリ上に残っているマニフェストからレイヤーの blob をフェッチし、最初の WebAssembly レイヤーを Extism ランタイムに読み込みます。 影響範囲 影響を受けるバージョン: hyper-mcp 0.8.3 及びそれ以前のバージョン 影響: WebAssembly プラグインの読み込み時、署名検証が実際に使用されるマニフェストに対して適切にバインドされないため、悪意のあるプラグインの読み込みにつながる可能性があります。 修正方針 修正ステータス: 調整された開示(Coordinated Disclosure)が進行中であり、VulnCheck に提出済み。CVE は未割り当て。 推奨事項: 最新バージョンにアップデートし、署名検証が実際に使用されるマニフェストに対して適切にバインドされることを確認してください。 詳細な攻撃手順 1. 設定された変数化ラベルの識別: 対象は のように、変数化されたラベルを使用してプラグインを読み込んでいます。 2. マニフェスト A(ペイロード)の準備: 単一レイヤーが攻撃者が制御する WebAssembly モジュールである OCI イメージを構築し、レジストリにプッシュします。レジストリはマニフェストおよび対応するレイヤー blob を提供できます。WebAssembly は Extism で読み込み可能であればよいため、ホスト、パス、環境、メモリ capability はプラグイン設定の任意の値をとることができます。 3. マニフェスト B(デコイ)の準備: 有効な Cosign 秘密鍵による署名済みシグネチャを含むイメージを構築、または再利用します。デフォルトのポリシーでは、署名者IDおよび発行者は制限されないため、B には正当なパブリッシャーからの署名は必要ありません。 コード例 ```