PoC Exploit Releases for Spring WebFlux Authorization Bypass – CVE-2024-38821
2024/11/01 SecurityOnline — Spring WebFlux の脆弱性 CVE-2024-38821 (CVSS 9.1) に対する、技術的詳細と PoC エクスプロイト・コードが公開された。この脆弱性は、特定の条件下における限定的なリソースへのアクセスを、攻撃者に対して許すものであり、Spring の WebFlux モジュールに依存するアプリケーションに深刻な脅威をもたらす。

この脆弱性は、Spring WebFlux が静的リソースを処理する方法に起因すると、サイバーセキュリティ研究者である Mouad Kondah は述べている。彼は、セキュリティ・フィルターがバイパスされる場合において、細工した URL パスを悪用する攻撃者は、保護されたファイルへのアクセスを可能にすると説明している。たとえば、URL パスを “/index.html” から “//index.html” へと操作することで、Spring Security フィルターで使用される厳格なパス一致ルールがバイパスされ、機密性の高いリソースの漏えい の可能性が生じる。

この脆弱性が影響を及ぼす WebFlux アプリケーションは、permitAll 以外の認可ルールで静的リソースを利用するものである。つまり、画像/HTML ファイル/YAML ファイルなどの静的リソースの提供を担当する、Spring の ResourceWebHandler に依存するアプリケーションは危険に直面することになる。この問題の核心は、URL パスの操作が使用された際に、WebFilterChainProxy などのクラスを通じて実装された Spring のセキュリティ・フィルターが、不正アクセスを正しく遮断/停止しないところにある。
一連の攻撃は、セキュリティ・フィルターを回避するリクエストから始まる。それにより、攻撃者のリクエストが DispatcherHandler に到達する。Kondah が示しているのは、それぞれのマッピングにおいて、DispatcherHandler が適切なハンドラを見つけようとする様子である。そして、すべてのセキュリティ・フィルターが回避された場合には、無制限のアクセスが発生する可能性がある。この一連の流れにより、リクエストは ResourceWebHandler に到達し、ResourceWebHandler は細工されたパスを処理し、適切な認証を必要とすることなく、機密性の高いリソースを漏えいさせることになる。
興味深いことに、このシナリオで脆弱なのは、静的リソースのみとなる。Spring の非静的リソースでは、PathPatternPredicate のような厳格な述語による、追加のパス検証が採用されており、事前定義されたパターンと一致しない、操作されたパスは検証により拒否されると、Kondah は説明している。この厳格なフィルタリングにより、攻撃者が非静的リソースへの不正アクセスを試みた場合には、400 NOT FOUND エラーが発生し、意図しないアクセスは効果的にブロックされる。なお、Kondah は、CVE-2024-38821 の PoC エクスプロイト・コードを、自身の GitHub リポジトリで公開している。
この脆弱性を緩和するために推奨されるのは、最新のセキュアなバージョンへと、Spring を更新することだ。具体的に言うと、修正バージョン (5.7.13/5.8.15/6.0.13/6.1.11/6.2.7/6.3.4) へのアップグレードが推奨され、それにより悪用のリスクを払拭できる。なお、パッチが適用されたバージョンの一部は、エンタープライズ・サポートを通じてのみ提供されるとのことだ。
この Spring WebFlux の脆弱性 CVE-2024-38821 ですが、第一報は 2024/10/28 の「Spring WebFlux の認証バイパスの脆弱性 CVE-2024-38821 が FIX:直ちにアップデートを!」となっています。そこから、わずか数日で PoC が登場することになりました。ご利用のチームは、十分に ご注意ください。よろしければ、Spring WebFlux で検索も、ご参照ください。
You must be logged in to post a comment.