Java セキュリティ・フレームワーク “pac4j” の脆弱性 CVE-2023-25581 が FIX:ただちにアップデートを!

Popular Java Security Framework ‘pac4j’ Vulnerable to RCE (CVE-2023-25581)

2024/10/13 SecurityOnline — 広く利用されている Java セキュリティ・フレームワーク pac4j に存在する深刻な脆弱性が、GitHub Security Lab (GHSL) のセキュリティ研究者 Michael Stepankin (@artsploit) により発見された。この脆弱性 CVE-2023-25581 (CVSS:9.2) の悪用に成功した攻撃者は、影響を受けるシステム上での任意のコード実行の可能性を手にする。

pac4j が提供する包括的なツール・スイートは、Java アプリケーションにおける認証/承認を簡素化するように設計されており、Web アプリケーションと Web サービスのセキュリティ確保を達成するものだ。この重要はフレームワークのバージョン 4.0.0 未満に、重大な欠陥があることが Stepankin の分析により判明した。

この脆弱性は、pac4j がユーザー・プロファイル属性を処理する方法に起因する。Stepankin は、「”org.pac4j.core.profile.InternalAttributeHandler#restore” メソッドは、信頼できないデータをデシリアライズしてしまう。その結果として、このフレームワークは、ユーザー ・プロファイル内に格納されている、シリアライズされた Java オブジェクトを適切に検証できない」と説明している。

Stepankin は、「{#sb64} で始まり Base64 でエンコードされた、悪意のオブジェクトをユーザー・プロファイル属性が、攻撃者により挿入されると、この脆弱性が悪用される可能性が生じる。この属性が、復元メソッドにより処理されると、悪意のオブジェクトがデシリアライズされ、リモート コード実行 (RCE) にいたる可能性が生じる。つまり、プログラムを欺くことで、任意の Java クラスをデシリアライズさせることが可能になる」と警告している。

pac4j-core により、RestrictedObjectInputStream を用いてデシリアライズされるオブジェクト・タイプは制限されているが、この制限だけで、悪用を完全に防止することは不可能である。この研究者が強調しているように、広範なタイプの Java パッケージが許可されており、さまざまなガジェット・チェーンでの悪用の可能性が残されている。つまり、この脆弱性を悪用する攻撃者は、各種のオブジェクト・タイプを用いて、リモート・コード実行へとつなげる可能性を手にしているのだ。

この脆弱性のもたらす結果には、リモート・コード実行がある。つまり、影響を受けるシステム上で攻撃者は、データ窃取やサービス中断を引き起こすだけではなく、さらなるネットワーク侵害へとつなげていく可能性を得る。

幸いなことに、pac4j バージョン 4.0.0 以降は、脆弱性 CVE-2023-25581 の影響を受けない。Stepankin と GHSL チームが、バージョン 4.0.0 未満のユーザーに推奨するのは、迅速なアップグレードである。