fastjson2 の autoType 許可リスト検証の欠陥によりリモートコード実行に至る
本脆弱性は、既定構成で SupportAutoType が有効でない場合、fastjson2 の AutoType 無効時の検証分岐が FNV-1a 増分ハッシュと既定の受理ハッシュによる前方一致のみを行い、一致後に入力文字列が許可リストのクラス名と実際に等しいかを再検証しないことに起因します。攻撃者は任意の前置詞に対して FNV chosen-prefix のハッシュ衝突を構成し、jar:/file:/http: といった URL 形態の型名を JSON 要求本文の @type フィールドへ注入できます。その文字列はアプリケーションのコンテキストクラスローダーによって読み込まれ解決され、最終的にサーバー側で任意のリモートコード実行が発火します。悪用には認証も利用者の操作も不要で、対象システムに既知の危険クラスが存在する必要もなく、攻撃者が JSON 要求本文を制御できることだけが条件です。
- PR #7695 の修正を参照してください。この修正は ContextAutoTypeBeforeHandler と ObjectReaderProvider に acceptNameSet による許可リスト文字列の再検証を追加し、型名に ':' または '!' が含まれる場合は直ちに拒否することで、FNV chosen-prefix のハッシュ衝突による回避を封じます。暫定的な緩和としては、SafeMode の有効化(JVM 引数 -Dfastjson2.parser.safeMode=true)または noneautotype 版への切り替えによる AutoType の完全無効化があり、あわせて WAF 層で @type キーを含む JSON 要求本文を遮断してください。さらに、デシリアライズ入力への厳格な型許可リストの適用、不要なクラス読み込み経路の廃止、RASP や DAST といったセキュリティ監視による疑わしい @type 入力の継続的な検出を推奨します。


