30秒で判断
- 対応すべき人:
google.golang.org/protobufを利用し、外部入力をprotojson.UnmarshalでパースしているGoサービスの開発・運用者 - 対応不要な人: protobuf/protojson を使っていない、または信頼できない入力を protojson でデコードしない構成
- 確認コマンド:
go list -m -u all | grep google.golang.org/protobuf
概要
protojson.Unmarshal 関数は、特定の不正な形式のJSONを処理する際に無限ループに陥る可能性があります。この状態は、google.protobuf.Any 値を含むメッセージへアンマーシャルする場合や、UnmarshalOptions.DiscardUnknown オプションが設定されている場合に発生し得ます。攻撃者が細工した入力を送り込むことで、サービスのハングやリソース枯渇(DoS)につながる可能性があります。
Go製のマイクロサービスやAPIで広く利用されるライブラリであり、gRPC-JSONゲートウェイなど外部入力を受け取る経路を持つ場合は影響範囲が広くなります。
CVSSベクトル
| 項目 | 値 |
|---|---|
| CVSSスコア | 7.5(HIGH) |
| 攻撃元区分 (AV) | Network |
| 攻撃条件の複雑さ (AC) | Low |
| 必要な権限 (PR) | None |
| 影響(可用性) | High |
影響を受けるソフトウェア
| 製品 | パッケージ | 影響バージョン |
|---|---|---|
| Go protobuf | google.golang.org/protobuf | 修正版より前(1.33.0 未満相当) |
修正バージョンと回避策
google.golang.org/protobufを修正版へアップデートしてください。- アップデートが難しい場合は、信頼できない入力を
protojson.Unmarshalでデコードしない、入力サイズ・タイムアウトを設ける等の緩和を検討してください。
関連リンク
データソース: NVD (NIST), OSV (Google), GitHub Advisory Database, JVN iPedia (IPA/JPCERT/CC) AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
