Spring Security の脆弱性 CVE-2025-22234 が FIX:タイミング攻撃を可能にするバグが混入

Spring Security Vulnerability Exposes Valid Usernames to Attackers

2025/04/25 gbhackers — Spring Security で発見されたセキュリティ脆弱性 CVE-2025-22234 により、広く使用されているフレームワークの深刻な弱点が露呈した。この脆弱性は spring-security-crypto パッケージの複数のバージョンに影響するものであり、ログイン応答時間の顕著な差を分析する攻撃者が、有効なユーザー名を判別できるようになるため、タイミング攻撃の攻撃経路となると、HeroDevs のレポートが指摘している。

Spring Security は、大半のエンタープライズ・アプリケーションの基盤となる Java フレームワークであり、認証/認可などの、さまざまなセキュリティ対策を実現している。このフレームワークは、Spring エコシステムと緊密に統合されており、その柔軟性と堅牢なコンフィグ・オプションが高く評価されている。

しかし、今回の最新の脆弱性は、これらの保護機能を損なうものであり、パフォーマンスとセキュリティの微妙なバランスを浮き彫りにしている。

CVE-2025-22234:脆弱性の詳細

この問題のコアは、spring-security-crypto パッケージに存在する、別の脆弱性 CVE-2025-22228 を修正するために設計された、最近のパッチに起因している。残念なことに、このアップデートにより、DaoAuthenticationProvider におけるタイミング攻撃に対する緩和策が、想定外のレベルで弱体化してしまった。

具体的に言うと、BCrypt パスワード・エンコーダーを使用する場合において、72 文字を超えるパスワードを取り込んだリクエストに対しては、エンコーダーは例外をスローする。

このシステム動作の違いにより、攻撃者は認証プロセスの所要時間を測定し、対象となるユーザー名がシステム内に存在するかどうかを推測できるという。

CVEProductAffected VersionsFixed InPatch Status
CVE-2025-22234Spring Security5.7.16, 5.8.18, 6.0.16, 6.1.14, 6.2.10, 6.3.8, 6.4.4NES v5.7.18, v5.8.21Patch Available

これまでの Spring Security では、ユーザー名の有効性に関わらず、常にパスワード・チェックが実行されていた。この戦略により、ログイン・レスポンス時間の一貫性が確保され、有効なユーザー名と無効なユーザー名の区別を、攻撃者に許さない仕組みが構成されていた。

しかし、前述の新しい動作により、検知し得る差異が生じ、情報漏洩のリスクが高まっている。

技術的な影響
  • 影響を受けるバージョン: DaoAuthenticationProvider と BCryptPasswordEncoder を使用する、Spring Security のバージョン 5.7.16/5.8.18/6.0.16/6.1.14/6.2.10/6.3.8/6.4.4。
    .
  • 攻撃シナリオ:さまざまなユーザー名でログイン試行を送信する攻撃者は、レスポンス時間の測定を可能にする。このレスポンス時間が速い場合には、ユーザー名が無効であることが示され、また、遅い場合にはユーザー名が有効であることが示されるため、ユーザー名の列挙が容易になる。
    .
  • 修正:すでに Never-Ending Support (NES) のリリース v5.7.18/v5.8.21 により、この脆弱性は修正されている。ユーザーに対して強く推奨されるのは、速やかなアップデートである。

最新のパッチ適用済み Spring Security バージョンへと、速やかにアップグレードすることが最善の防御策となる。また、開発者は、ユーザー名の有効性やパスワードの長さに関わらず、一貫したレスポンス時間を確保するために、システムをテストする必要がある。

先月に修正された脆弱性 CVE-2025-22228 が原因で、新たな脆弱性 CVE-2025-22234 が発生したとのことです。ご利用のチームは、十分にご注意ください。なお、オリジナルの脆弱性 CVE-2025-22228 については、2025/03/20 の「Spring Securityの2つの深刻な脆弱性 CVE-2025-22223/22228 が FIX:認証バイパスの可能性」で詳しく触れています。よろしければ、Spring Security で検索と併せて、ご参照ください。