JFrogは6月14日(米国時間)、公式ブログ「CVE-2022-25845 - Fastjson RCE vulnerability analysis」において、Java用のオープンソースのJSONライブラリ「Fastjson」に報告された脆弱性「CVE-2022-25845」に関する分析結果を公開した。この脆弱性を悪用されると、悪意のある攻撃者によってリモートから任意のコードを実行される危険性がある。

Fastjsonは、JavaプログラムでJSON形式のデータを扱うためのライブラリである。JavaオブジェクトをJSON表現に変換したり、逆にJSON文字列をJavaオブジェクトに変換するために使用したりすることができる。問題となった脆弱性は、このFastjsonでサポートされている「AutoType」と呼ばれる機能に関連したものだという。Fastjsonでは、JSONデータからJavaオブジェクトに逆シリアライズする際に通常は任意のJavaのクラスを指定してメソッドを呼び出すが、AutoTypeを有効にすることで、変換するクラスが動的に決定されるようにできる。AutoTypeはデフォルトで有効に設定されている。

CVE-2022-25845は、AutoTypeを使用した逆シリアライズにおいて特定のクラスが指定されていない場合に発生する脆弱性だという。攻撃者は悪意のある任意のクラスを作成してクラスパスに配置することで、逆シリアライズ時にそのクラスを読み込んで実行させることが可能になる。

この脆弱性に対して、当初Fastjsonの開発者はAutoTypeをデフォルトで無効にするという軽減策を実施するが、その後新たにこの制限を回避して攻撃が可能になる脆弱性が発見された。JFrogのレポートでは、実際に攻撃コードが動作する仕組みが解説されている。

  • CVE-2022-25845を利用してリモートからWindowsの電卓アプリを起動した様子(引用: JFrog Blog)

    CVE-2022-25845を利用してリモートからWindowsの電卓アプリを起動した様子 引用:JFrog Blog

Fastjsonを最新版(本稿執筆時点ではバージョン1.2.83)にアップデートすることでこの脆弱性の影響を回避することができる。すぐにアップデートできない場合には、Fastjsonに用意された「safeMode」を有効にすることで影響を軽減できるという。

CVE-2022-25845のCVSS v3のベーススコアは8.1であり、深刻度は"Important(重要)"に分類されている。Fastjsonを使用しているJavaアプリケーションでは、できるだけ早く対策を実施することが推奨される。