Anthropicが開発するRust製protobufライブラリ「buffa」に見つかったサービス拒否(DoS)脆弱性は、フロンティアAI研究機関によるメモリセーフなコードであっても、アロケーション予算をめぐる欠陥とは無縁ではないことを示しています。
CVE-2026-55407(CVSS 4.0: 6.3、Moderate)として追跡されているこのバグは、Endor LabsのAI SATエンジンによって発見されました。単純なパターンマッチングに頼るのではなく、攻撃者が制御可能なワイヤーデータが無制限のアロケーション経路を通過する様子を追跡することで見つかったものです。
この欠陥はbuffa/src/encoding.rs内のdecode_unknown_fieldに存在します。preserve_unknown_fields=true(デフォルト設定)でデコードされるメッセージはすべてこの関数を経由して信頼できない入力を処理するため、buffaでデコードされるメッセージはすべて潜在的な標的となり得ます。
buffa自身のドキュメントではアロケーションに関するリスクを認識してはいたものの、緩和策の負担を呼び出し側に転嫁しており、入力サイズの制限を推奨するにとどまっていました。
このアドバイスはフラットな攻撃経路には有効ですが、グループ増幅型の攻撃経路には通用しません。64MiBの入力上限を設定していても、なお1.4GBものメモリ急増を許してしまうためです。これは、メモリ上限に余裕を持たせたプロセスであってもOOM(メモリ不足)によって強制終了させるのに十分な量です。
メモリ上限を256MiBに設定したDockerコンテナでのテストにより、クラッシュが実際に発生することが確認されました。単一の不明なグループ内にゼロ値のvarintを大量にネストさせた64MiBのペイロードによってOOM-kill(終了コード137)が引き起こされ、フラット型・増幅型の両方の攻撃経路が有効であることが検証されました。
研究者はCVSSスコアの前提条件についても強調しています。Anthropicは、監視対象のレプリカと自動再起動を伴うデプロイモデルを前提にこの問題を6.3と評価しており、このモデルでは単一ワーカーのOOMはスループットの低下に留まるとされています。
しかし、単一インスタンスでの運用、ファイル取り込みパイプライン、あるいはデフォルトのメッセージ制限を用いた標準的なgRPC構成では、影響度がHighからCriticalに達する可能性があります。小規模かつ再現性のある、認証不要のトリガーによって、ワーカーを無限にクラッシュ・再起動させるループに追い込むことができるためです。
Anthropicはbuffaおよびconnectrpc 0.8.0でこの問題を修正し、設定可能なメッセージあたりの不明フィールド数の上限(デフォルト: 100万フィールド、オーバーヘッドを約40MBに制限)を導入しました。
Endor Labsによると、すぐにアップグレードできないユーザーは、preserve_unknown_fields=falseでコードを再生成することで、脆弱なコード経路自体を完全に取り除くことができるとのことです。
研究者は、CVSS評価指標をめぐって当事者間で最終的な深刻度の見解が完全には一致しなかったものの、詳細な技術的議論を含む協力的な開示プロセスを実施したAnthropicのセキュリティチームを称賛しています。
今回の事例は、従来のgrepベースの脆弱性調査では成果が得られないメモリセーフな言語において、データフローに基づく静的解析がいかに価値を持つかを浮き彫りにしています。
1件のフラグが立てられたデータフローを追跡した結果、ある分岐からさらにはるかに危険な増幅型の攻撃経路が発見されました。このことは、自動化ツールが表面化させた経路に対して人間による手作業のフォローアップを組み合わせた場合に、その価値が最大限に発揮されることを裏付けています。
翻訳元: https://cyberpress.org/anthropic-buffa-library-flaw/