| 概要 | MessagePack for C# is a MessagePack serializer for C#. Prior to 2.5.301 and 3.1.7, MessagePack-CSharp's JSON conversion helpers contain multiple recursion paths that do not consistently enforce a depth limit. These paths are in the JSON conversion component rather than normal typed MessagePack deserialization. MessagePackSerializer.ConvertFromJson recursively processes nested JSON arrays and objects in FromJsonCore() without consulting MessagePackSecurity.MaximumObjectGraphDepth. TinyJsonReader.ReadNextToken() recursively consumes comma and colon separator characters, allowing even malformed JSON with long separator runs to consume one stack frame per character. MessagePackSerializer.ConvertToJson applies depth checks to arrays and maps, but the typeless extension branch for ext-100 recursively calls ToJsonCore() without applying MessagePackSecurity.DepthStep(ref reader). Each path can allow attacker-controlled input to exhaust the process stack and trigger an uncatchable StackOverflowException instead of failing with a catchable parse or serialization exception. This vulnerability is fixed in 2.5.301 and 3.1.7. |
|---|---|
| 公表日 | 2026年6月23日7:16 |
| 登録日 | 2026年6月27日4:12 |
| 最終更新日 | 2026年6月26日1:16 |
| CVSS3.1 : HIGH | |
| スコア | 7.5 |
|---|---|
| ベクター | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
| 攻撃元区分(AV) | ネットワーク |
| 攻撃条件の複雑さ(AC) | 低 |
| 攻撃に必要な特権レベル(PR) | 不要 |
| 利用者の関与(UI) | 不要 |
| 影響の想定範囲(S) | 変更なし |
| 機密性への影響(C) | なし |
| 完全性への影響(I) | なし |
| 可用性への影響(A) | 高 |
| 構成1 | 以上 | 以下 | より上 | 未満 | |
| cpe:2.3:a:messagepack:messagepack:*:*:*:*:*:c\#:*:* | 2.5.301 | ||||
| cpe:2.3:a:messagepack:messagepack:*:*:*:*:*:c\#:*:* | 3.0.3 | 3.1.7 | |||
| タイトル | MessagePackにおける再帰制御に関する脆弱性 |
|---|---|
| 概要 | MessagePack for C# は C# 用の MessagePack シリアライザーです。バージョン 2.5.301 および 3.1.7 より前の MessagePack-CSharp の JSON 変換ヘルパーには、深さ制限を一貫して適用しない複数の再帰パスが含まれています。これらのパスは通常の型付き MessagePack デシリアライズではなく、JSON 変換コンポーネントに存在します。MessagePackSerializer.ConvertFromJson は FromJsonCore() 内でネストされた JSON 配列やオブジェクトを MessagePackSecurity.MaximumObjectGraphDepth を参照せずに再帰的に処理します。TinyJsonReader.ReadNextToken() はカンマやコロンの区切り文字を再帰的に処理し、長い区切り文字の連続による不正な JSON であっても各文字ごとにスタックフレームを消費します。MessagePackSerializer.ConvertToJson は配列やマップに対して深さチェックを適用しますが、拡張タイプ ext-100 の型なし拡張ブランチは MessagePackSecurity.DepthStep(ref reader) を適用せずに ToJsonCore() を再帰的に呼び出します。これらのパスはいずれも攻撃者が制御する入力によってプロセスのスタックを枯渇させ、キャッチできない StackOverflowException を発生させる可能性があり、キャッチ可能な解析やシリアライズ例外で失敗する代わりにスタックオーバーフローが発生します。この脆弱性はバージョン 2.5.301 および 3.1.7 で修正されました。 |
| 想定される影響 | ・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 ・当該ソフトウェアが扱う情報について、書き換えは発生しません。 ・当該ソフトウェアが完全に停止する可能性があります。 |
| 対策 | ベンダ情報を参照して適切な対策を実施してください。 |
| 公表日 | 2026年6月22日0:00 |
| 登録日 | 2026年6月26日11:57 |
| 最終更新日 | 2026年6月26日11:57 |
| MessagePack |
| MessagePack 2.5.301 未満 |
| MessagePack 3.0.3 以上 3.1.7 未満 |
| No | 変更内容 | 変更日 |
|---|---|---|
| 1 | [2026年06月26日] 掲載 |
2026年6月26日11:57 |