eSecurity Planetのコンテンツおよび製品に関する推奨は、編集上の独立性を保っています。パートナーへのリンクをクリックいただくと、収益が発生する場合があります。 詳細はこちら
protobuf.jsで発見された6件の脆弱性により、攻撃者が任意のコードを実行したり、サービスをクラッシュさせたり、クラウド・AI・メッセージング・開発環境全体のソフトウェアサプライチェーンを侵害したりできる可能性があります。
Cyeraの研究者によると、この脆弱性はGoogleのProtocol BuffersのJavaScript実装として広く使用されているライブラリに影響します。Protocol Buffersは、無数の分散システム間の通信を支えるデータシリアライゼーションフレームワークです。
このライブラリは週に5,000万回以上ダウンロードされており、多くのエンタープライズアプリケーションに直接または間接的に組み込まれています。
Cyeraの研究者Vladimir Tokarev氏は分析の中で、「スキーマから派生したデータを汚染することで、攻撃者がリモートコード実行またはサービス拒否を達成できる6件の脆弱性を[protobuf]で発見した」と述べています。
重要ポイント
- protobuf.jsの6件の脆弱性により、リモートコード実行、サービス拒否攻撃、プロトタイプ汚染、コードインジェクションが可能になるおそれあり
- 週5,000万回以上ダウンロードされ、クラウドサービス・AIプラットフォーム・CI/CDパイプライン・メッセージングアプリで広く使用されているライブラリへの影響
- CI/CDの侵害、WhatsAppボットの継続的なクラッシュ、Google Cloud Functionsのサービス停止など、現実的な攻撃シナリオを実証
- 組織は直ちにパッチ済みバージョンへアップグレードし、直接依存・推移的依存の両方で脆弱なインスタンスを確認すべき
protobuf.jsの脆弱性の詳細
この脆弱性は、protobuf.jsバージョン7.5.5以前、およびバージョン8.0.0と8.0.1に影響します。
6件の脆弱性を総合すると、リモートコード実行(RCE)、サービス拒否(DoS)、プロトタイプ汚染、コードインジェクション攻撃にさらされるリスクがあります。
この調査結果が懸念されるのは、protobuf.jsが推移的依存として導入されることが多く、組織が直接インストールや追跡をすることなくこのライブラリに依存している可能性があるためです。
Cyeraは、protobuf.jsがGoogle Cloudクライアントライブラリ、OpenTelemetry、Milvus、Temporal、人気のメッセージングフレームワークなど広く使用されている技術に含まれており、潜在的な攻撃対象領域が拡大していると指摘しています。
問題の核心は、protobuf.jsがスキーマ関連の入力をどのように処理するかにあります。
フィールド名、型名、ディスクリプタ、設定値は、一部の環境では攻撃者が操作できる可能性があるにもかかわらず、信頼済みメタデータとして扱われていました。
攻撃者によるprotobuf.jsの悪用手法
特に懸念されるのが、pbjsコマンドラインツールのコードインジェクションの脆弱性であるCVE-2026-44295です。
攻撃者は悪意のあるスキーマ名を細工し、コード生成時に生成されたJavaScriptファイルに書き込むことができます。
それらのファイルがビルド・テスト・デプロイプロセス中に後からインポートされると、インジェクションされたコードが信頼済みCI/CD環境内で実行される可能性があり、ソースコード・署名証明書・クラウド認証情報・その他の機密資産が漏洩するおそれがあります。
研究者たちはまた、リモートコード実行(RCE)につながる可能性のあるプロトタイプ汚染の攻撃チェーンも特定しました。
脆弱な環境では、攻撃者がNode.jsアプリケーション内の別の箇所でプロトタイプ汚染を悪用し、protobuf.jsをコード実行のガジェットとして利用できます。
protobuf.jsはFunction()コンストラクタを使用してJavaScript関数を動的に生成するため、攻撃者が制御する値が生成されたコードに組み込まれ、アプリケーションによって実行される可能性があります。
サービス拒否(DoS)リスク
また、本調査では本番サービスを停止させる可能性のあるサービス拒否リスクも明らかになりました。
ある脆弱性により、攻撃者は深くネストされた再帰的なprotobufメッセージを送信でき、デコード中にJavaScriptのコールスタックを枯渇させることができます。
Cyeraはこれを、Baileyフレームワーク上に構築されたWhatsAppボットに対して実証しており、1つの悪意あるメッセージによってボットが継続的なクラッシュ・再起動ループに陥ることを示しました。
研究者たちは、protobufベースのPub/Subイベントを処理するGoogle Cloud Functionsに対しても同様の動作を再現し、1つの悪意あるペイロードが手動で削除またはデッドレターキューにルーティングされるまで、繰り返しサービス障害を引き起こせることを示しました。
これらの調査結果は総合的に、広く使用されているシリアライゼーションライブラリの脆弱性が、クラウドインフラ・AIシステム・ソフトウェアサプライチェーン・顧客向けサービス全体にどのように波及するかを示しています。
protobuf.jsリスクの低減策
protobuf.jsはサードパーティの依存関係を通じて間接的に展開されることが多いため、組織は環境を慎重に見直し、コード実行・サービス停止・サプライチェーン侵害のリスクを限定するための追加の安全対策を実施する必要があります。
- protobuf.jsの最新バージョンへのアップグレードを行い、直接依存・推移的依存の両方で脆弱なインスタンスを監査してください。
- インターネットに公開されたサービス、API、メッセージキュー、および信頼されていないprotobufペイロードを処理するアプリケーションへのパッチ適用を優先してください。
- 外部ソースの.protoファイル、JSONディスクリプタ、スキーマレジストリはすべて信頼されない入力として扱い、使用前に承認済みスキーマを検証またはホワイトリストに登録してください。
- コード生成リスクへの露出を低減するため、ビルド時スキーマコンパイルを優先し、動的スキーマロードを制限し、pbjsを使用するCI/CDパイプラインを強化してください。
- 不正な形式または深くネストされたprotobufメッセージによるサービス拒否攻撃を防ぐため、メッセージサイズ・再帰深度・入力検証の制御を実施してください。
- Node.js環境全体でデコード失敗、繰り返すサービスクラッシュ、異常なスキーマアクティビティ、プロトタイプ汚染試行の兆候を監視してください。
- チームがprotobuf関連の攻撃やサービス停止を特定・封じ込め・修復できるよう、インシデント対応および復旧計画をテストしてください。
これらの対策は、悪用リスクを低減し、全体的な耐障害性の向上に役立ちます。
拡大する攻撃対象領域
組織がスキーマ・メタデータ・自動化・AI生成コードへの依存を強める中、セキュリティチームはこれらの入力を全体的な攻撃対象領域の一部として扱う必要があります。
サイバーレジリエンスは、信頼済みデータが重要システムのどこを流れるかを把握し、そのデータがアプリケーションの動作に影響を与える前にガードレールを実装することにかかっています。
本事例が示すように、信頼済み依存関係の脆弱性はエコシステム全体に急速に波及する可能性があり、ソフトウェアサプライチェーンセキュリティはセキュリティチームにとって重要な優先事項となっています。
翻訳元: https://www.esecurityplanet.com/threats/six-protobuf-js-vulnerabilities-expose-rce-and-dos-risks/