
CVE-2025-22235はSpring Bootのセキュリティ脆弱性で、EndpointRequest.to()メソッドを使用してセキュリティルールを設定する際に誤ったマッチャーが生成される可能性があり、公開されていないアクチュエータエンドポイントのパス(例:/null/**)のセキュリティ保護が無効になります。
EndpointRequest.to("health")でセキュリティルールを設定する際、healthエンドポイントがmanagement.endpoints.web.exposure.includeで設定されていない場合、Spring Bootは誤ったパスマッチャー/null/**を生成し、そのパス配下のすべてのリクエストが認証チェックをバイパスします。
management.endpoints.web.exposure.include=info(infoエンドポイントのみ公開され、healthエンドポイントは公開されていません)EndpointRequest.to("health")を使用して公開されていないエンドポイントを参照しますmvn spring-boot:run
http://localhost:8080/null に直接アクセスすると、ログインなしでアクセスでき、認証バイパス脆弱性の存在が証明されます。
http://localhost:8080/info などの他の保護されたエンドポイントにアクセスすると、ログインが要求されます。
.requestMatchers(EndpointRequest.to("health")).permitAll() // 漏洞触发点
.requestMatchers("/null").authenticated() // 应该受保护但被绕过
@GetMapping("/null")
public String sensitiveEndpoint() {
return "未登录看到此页面,说明存在CVE-2025-22235认证绕过漏洞!";
}
以下の修正版にアップグレードします:
EndpointRequest.to()が参照するエンドポイントが有効化され、Web経由で公開されていることを確認します/nullパスのリクエストを処理しないようにします脆弱性の根本原因は、EndpointRequest.to()メソッドが公開されていないエンドポイントを処理する際に、誤ったパスマッチャーを生成することです。エンドポイント名がmanagement.endpoints.web.exposure.includeで設定されていない場合、Spring Bootはnullを含むパスパターンを作成するため、セキュリティルールが無効になります。
本デモプロジェクトはセキュリティ研究および教育目的のみに使用してください。本番環境では使用しないでください。本プロジェクトの使用によるリスクは利用者自身が負担します。