注目★★★★★GitHub Advisory
MessagePack-CSharp に DateTime 解析時のスタックオーバーフロー、プロセス強制終了の恐れ
30秒で把握
- 1MessagePack-CSharp の ReadDateTime() で細工ペイロードによるスタック過剰割り当て・プロセス強制終了が可能
- 2DateTime 逆シリアル化時に攻撃者が拡張ヘッダーの長さ宣言を悪用、既存のセキュリティ設定では軽減不可
- 3信頼できないデータを扱う場合はライブラリ更新を適用し、逆シリアル化フロー設定の見直しが必要
要約
MessagePack-CSharp の `MessagePackReader.ReadDateTime()` に脆弱性が存在し、攻撃者が細工した MessagePack ペイロードにより任意サイズのスタック領域を確保させられる。タイムスタンプ拡張ヘッダーで宣言された長さが検証前に `stackalloc` で使用されるため、小さなペイロードで意図的に大きなバッファ確保を誘発可能だ。その結果、キャッチ不可能な `StackOverflowException` が発生しプロセスが強制終了される。信頼できないデータの DateTime 逆シリアル化を行うアプリケーションが影響を受け、`MessagePackSecurity.UntrustedData` や `MaximumObjectGraphDepth` ではこの単一フレーム割り当て問題は軽減されない。
あなたへの影響
MessagePack を使って外部ソースから DateTime データを受け取る場合。
推奨:ライブラリの更新が公開されたら即座にパッチを適用し、本番環境での逆シリアル化処理が信頼できないデータを処理していないか設定を再確認すべき。