GoogleのProtocol Buffers脆弱性、スキーマをシェルに変える攻撃を可能に

CyeraのリサーチャーがProtobuf.jsで6件の脆弱性を発見。攻撃者が制御するスキーマデータを実行可能コードに変換できる欠陥も含まれており、下流のソフトウェアサプライチェーンにも影響が及ぶ可能性があります。

GoogleのProtocol Buffers形式を実装した広く利用されているJavaScriptライブラリが、信頼できないデータを過度に信頼する設計になっており、影響を受けるアプリケーションがリモートコード実行などの攻撃にさらされています。

Cyeraのリサーチャーは「protobuf.js」に影響する6件の脆弱性を公開しました。いずれも、ライブラリにおけるスキーマとメタデータの処理に起因しています。攻撃者は入力検証の不備を悪用することで悪意あるデータを挿入し、アプリケーションの動作に影響を与えることが可能です。

Protocol Buffersは、異なるアプリケーション間の情報交換を効率化するために、データをコンパクトな構造化フォーマットにパッケージングする技術です。protobuf.jsライブラリは週に5,000万回以上ダウンロードされているとされており、gRPCツール、Google Cloudライブラリ、その他のフレームワークといった依存関係を通じて間接的にアプリケーションに組み込まれることが多く、組織による追跡が困難な状況にあります。

リサーチャーらは、リモートコード実行、サービス拒否(DoS)、プロトタイプ汚染、プロトタイプインジェクション、コード生成の問題を対象とする6件のCVEを公開しました。

「これらの脆弱性の悪用には通常、特定の条件が必要ですが、そうした条件はデータやAIのエコシステムにおいてますます一般的になっています。サービス、リポジトリ、クラウドプラットフォーム、サードパーティ統合にまたがって、データ、スキーマ、設定ファイルが日常的にやり取りされているためです」と、CyeraのリサーチャーであるAssaf MoragとVladimir Tokarevはブログ投稿で述べています。

protobuf.jsおよびプロジェクトのコマンドラインコード生成ツールであるprotobufjs-cliの両方にパッチが提供されています。

最も深刻な脆弱性は、CVE-2026-44291として追跡されているコード生成の欠陥です。

Cyeraによると、protobuf.jsはエンコーダおよびデコーダ関数を動的に生成し、JavaScriptのFunction()コンストラクタを使ってコンパイルしています。特定の条件下では、攻撃者がスキーマに由来する情報を操作することで、メッセージを記述するはずのデータを実行可能コードに変換できる可能性があります。

リサーチャーらは、プロトタイプ汚染を利用してprotobuf.jsに攻撃者が制御する値を正規のprotobuf型として受け入れさせる攻撃チェーンを実証しました。その値は生成されたコードに組み込まれ、Node.jsプロセス内で実行されます。

影響は実行時のアプリケーションにとどまりません。CVE-2026-44295として追跡される別のコードインジェクションの問題は、pbjsコマンドラインツールに影響します。細工されたスキーマ名が生成されたJavaScriptファイルに埋め込まれ、そのファイルが後でインポートされた際に実行される可能性があります。

悪用を成功させるには、protobufスキーマやディスクリプタに影響を与える能力といった特定の前提条件が必要ですが、リサーチャーらは、現代のソフトウェアがリポジトリ、クラウド環境、API、サードパーティ統合にまたがってスキーマ、ディスクリプタ、設定ファイルをやり取りする機会が増えており、その前提条件が以前ほど限定的でなくなっていると指摘しています。

残りの脆弱性は深刻度が低いものです。リサーチャーらは、継承されたオブジェクトプロパティを改ざんすることでアプリケーションの動作を変更できるプロトタイプインジェクション(CVE-2026-44292)の欠陥のほか、悪意を持って細工された入力によってアプリケーションをクラッシュさせたりリソースを枯渇させたりするサービス拒否(DoS)の脆弱性(CVE-2026-44289CVE-2026-44290CVE-2026-44294)も特定しています。

サプライチェーンリスク拡大、パッチ適用を推奨

リサーチャーらは、protobuf.jsが推移的依存関係として組み込まれるケースが多く、ライブラリの存在を認識しないまま攻撃にさらされる組織もあると指摘しています。スキーマが自動化された開発パイプラインやソフトウェアサプライチェーンを通過するにつれ、従来は受動的なデータとみなされていたコンポーネントが攻撃の経路になりうることが明らかになっています。

「開発チームは日常的にコードの貢献を受け入れ、サードパーティのコンポーネントを統合し、CI/CDパイプラインを通じてファイルを自動的に処理しています」と研究者らは説明しています。「特定の条件下では、悪意あるprotobufスキーマがこのワークフローに導入され、最終的に信頼された構築環境内で実行される可能性があることが判明しました。」

この段階での侵害は、製品、顧客、ビジネス運営に下流への影響をもたらす可能性があると、リサーチャーらは付け加えています。

この脆弱性は、protobuf.jsのバージョン7.5.5以前および8.0.0と8.0.1、さらにprotobuf.js-cliの脆弱なリリースに影響します。パッチはprotobuf.js 7.5.6と8.0.2で提供されており、protobuf.js-cliのユーザーはバージョン1.2.1または2.0.2へのアップグレードが推奨されています。

翻訳元: https://www.csoonline.com/article/4182306/google-protocol-buffers-flaw-turns-schemas-into-shells.html

ソース: csoonline.com