Spring Security の脆弱性 CVE-2024-38810 が FIX:アプリに未認証アクセスの可能性

CVE-2024-38810: Spring Security Flaw Leaves Applications Open to Unauthorized Access

2024/08/20 SecurityOnline — Spring Security で、深刻度の高い脆弱性 CVE-2024-38810 が発見された。この脆弱性の影響を受けるアプリケーションにおいては、機密データへの不正アクセスが生じる可能性があるという。この脆弱性は、Spring Security のバージョン 6.3.0/6.3.1 に影響を及ぼす。



Spring Security のパワフルなメソッド・セキュリティ機能により、開発者は@PreAuthorize/@PostAuthorize などのアノテーションを使って、アプリケーション・メソッドへのアクセスを制御できる。ただし、対象となるオブジェクトが @AuthorizeReturnObject/@AuthorizationAdvisorProxyFactory/@Bean などでラップされている場合には、すべてのセキュリティ・アドバイスが正しく適用されるとは限らない。

この脆弱性は、@PreFilter/@PostFilter/@PreAuthorize/@PostAuthorize などの重要なセキュリティ・アノテーションが、それらのラップされたオブジェクトに対して、期待されるセキュリティ制限を実施できない可能性があることを意味している。その結果として、アプリケーションは不正アクセスやデータ漏洩の脆弱な状態に陥る。

この脆弱性は、Josh Cummings により報告されたものだ。

この脆弱性は、以下に示す、すべての条件を満たすアプリケーションだけに影響を及ぼす:

  1. 自動プロキシ作成にAnnotationAwareAspectJAutoProxyCreator を使用している。
  2. アプリケーション・コンテキストに、少なくとも1つのFactoryBean が存在する。
  3. EnableMethodSecurity を使用してメソッドのセキュリティが有効化されている。
  4. AuthorizeReturnObjectAuthorizationAdvisorProxyFactory により対象オブジェクトがラップされている。
  5. ラップされたオブジェクトに対して、@PreFilter@PostFilter@PreAuthorize@PostAuthorize が使用されている。

影響を受ける Spring Security のバージョンを使用しているユーザーに推奨されるのは、バージョン 6.3.2 へと、ただちにアップグレードすることである。このアップデートにより、欠落していたアノテーション・チェックが修正され、セキュリティ・アドバイスの適切な実施が保証される。