30秒で判断
対応すべき人:
- protobufjs(
protobufjsnpm パッケージ)7.5.5 未満または 8.0.1 未満を使用している - 外部から取得した
.proto定義ファイルを動的にコンパイル・使用している - 信頼できないユーザー提供の proto 定義を読み込んでいる
対応不要な人:
- protobufjs 7.5.5 以降、または 8.0.1 以降を使用している
- 自社管理の静的な
.protoファイルのみを使用しており、外部から定義を取得していない
確認コマンド:
# protobufjs のバージョン確認
npm list protobufjs
# または
cat node_modules/protobufjs/package.json | grep '"version"'
概要
protobufjs(npm: protobufjs)7.5.5 未満・8.0.1 未満において、攻撃者が制御する Protobuf 定義の type フィールドに任意の JavaScript コードを埋め込むことができます。この定義を使ってオブジェクトをデコードすると、埋め込まれたコードが実行されます(Remote Code Execution)。
具体的には、protobufjs が .proto ファイルや JSON 記述子をコンパイルして JavaScript 関数を生成する際に、type フィールドの値を適切にサニタイズせずに生成コードに組み込んでしまいます。
外部から .proto 定義を取得している API サーバー、マイクロサービス間通信のスキーマ管理ツール、または gRPC サービスで動的にスキーマを読み込む構成が影響を受けます。
CVSSベクトル
| 項目 | 値 | 説明 |
|---|---|---|
| Attack Vector | Network | ネットワーク経由で攻撃可能 |
| Attack Complexity | Low | 特別な条件不要 |
| Privileges Required | None | 認証不要 |
| User Interaction | None | ユーザー操作不要 |
| Scope | Unchanged | スコープ変化なし |
| Confidentiality | High | 機密性への影響大 |
| Integrity | High | 完全性への影響大 |
| Availability | High | 可用性への影響大 |
影響を受けるソフトウェア
| パッケージ | 影響バージョン | 修正バージョン |
|---|---|---|
| protobufjs (npm) | < 7.5.5 | 7.5.5 |
| protobufjs (npm) | >= 8.0.0 かつ < 8.0.1 | 8.0.1 |
修正バージョンと回避策
推奨対応: protobufjs を 7.5.5 または 8.0.1 以降へアップデートします。
npm update protobufjs
# または明示的にバージョンを指定
npm install protobufjs@^7.5.5
回避策:
- 外部から取得した
.proto定義を信頼する前に内容を検証する - 定義ファイルを静的に管理し、外部からの動的取得を避ける
なお、type フィールドへの不正な値の注入が前提となるため、完全に自社管理の .proto ファイルのみを使用している場合は実質的な影響は限定的です。
関連リンク
データソース: NVD (NIST), GitHub Advisory Database
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
