注目★★★★★GitHub Advisory
MessagePack-CSharp に無限再帰の脆弱性、ネストしたデータで DoS 可能
30秒で把握
- 1MessagePackReader.TrySkip() が深さ制限をバイパス・未知フィールド処理中の再帰でスタック枯渇
- 2外部ペイロード入力時に多段ネスト配列で StackOverflowException 発生・プロセス強制終了
- 3UntrustedData で防げず・MessagePack ライブラリを至急パッチ更新・深さチェック再実装検証
要約
MessagePack-CSharp の MessagePackReader.TrySkip() がネストされた配列やマップを深さ制限なく再帰的に処理し、MaximumObjectGraphDepth の保護をバイパスする脆弱性が報告された。未知のマップキーや無視フィールドのスキップ処理中に攻撃者が制御可能な深くネストされたデータを埋め込むと、スタックオーバーフローが発生し、キャッチできないため処理を強制終了させられる。信頼できない MessagePack ペイロードを逆シリアライズするアプリケーションが影響を受け、単一要素配列やマップの多段ネストで プロセス全体が停止する可能性がある。UntrustedData オプションはスキップ経路には適用されないため、この脆弱性は軽減されない。
あなたへの影響
MessagePack-CSharp を使用するアプリケーション、特に API やサービス層で外部からの MessagePack データを受け取るチームは、早急にライブラリを最新版にアップデートし。
推奨:ネストされたデータ入力に対する追加検証の追加を検討すべき。