Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2022-22978 — Spring SecurityのRegexRequestMatcher(CVE-2022-22978)における認可バイパスの概念実証。CRLFインジェクションを使用し、分析と緩和手順を含みます。 | Kitploit
ツール/GitHubGitHub/raghvendra1207/cve-2022-22978
認証と認可脆弱性分析エクスプロイトウェブアプリケーション悪用学習と教育ラボと実践
GitHubraghvendra1207/cve-2022-22978

CVE-2022-22978

Spring SecurityのRegexRequestMatcher(CVE-2022-22978)における認可バイパスの概念実証。CRLFインジェクションを使用し、分析と緩和手順を含みます。

リポジトリを見る
53年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE 2022-22978: RegexRequestMatcherにおける認証バイパス 🥶

概要

調べた情報によると、これはSpring SecurityフレームワークのRegexRequestMatcherクラスに関連する脆弱性です。具体的には、正規表現にドット(.)が含まれるRegexRequestMatcherを使用するアプリケーションは、\r(%0a)、\n(%0d) の文字を使用してバイパスされる可能性があります。これにより、攻撃者は認証なしで許可されていないパスにアクセスできるようになります。

影響を受けるSpring Securityフレームワークのバージョン:

  • 5.5.x は 5.5.7 より前
  • 5.6.x は 5.6.4 より前
  • それ以前のサポート終了バージョン。

分析

この脆弱性を静的に分析するために、Spring Securityのソースコードにアクセスする必要があります。具体的には、Github上で脆弱性のあるバージョン5.6.3と修正されたバージョン5.6.4のコミットを比較する機能を使用します。次のリンクを参照: Comparing 5.6.3...5.6.4 · spring-projects/spring-security (github.com)

img1

RegexRequestMatcherクラスの変更を確認します。バージョン5.6.4では、このクラスはデフォルトの.の代わりにPattern.DOTALLを使用していることがわかります。

ここで:

  • Pattern: java.util.regexパッケージ内の3つのクラスの1つであり、正規表現を処理する機能を持ちます。
  • Pattern.DOTALL: このフラグを使用すると、正規表現の.が\n、\rなどの改行文字も含むすべての文字にマッチするようになります。
  • Pattern.CASE_INSENSITIVE: 大文字小文字を区別しません。

img2

デフォルトでは、正規表現の.は\n、\rなどの改行文字を除くすべての文字にマッチします。そのため、ある文字列のパターンを検証する正規表現関数がある場合、文字列内に改行文字が含まれていると正規表現はマッチしません。これを回避するには、Pattern.DOTALLフラグを使用できます。

ただし、誰かが意図的に\nの代わりに%0d、\rの代わりに%0aを使用した場合、上記の正規表現は依然としてマッチしません。そのため、バージョン5.6.4では、RegexRequestMatcherTests.javaにこのケースをチェックする追加のコードが追加されました。具体的には、%0dと%0aをそれぞれ\nと\rに変換してから正規表現でチェックします。

img3

デモ

手順1: Spring Initializr を使用して、Spring SecurityとSpring Webの2つの依存関係を含むSpring Boot Webアプリケーションを作成します。

img4

手順2: /admin/* パスへのリクエストがあるときに This is a CVE-2022-22978 demo という文字列を出力するコントローラーを作成します。

img5

手順3: ユーザーが /admin/<任意> パスにアクセスするたびに認証メカニズムを設定します。regexMatchers("/admin/.*").authenticated() を使用します。これが、攻撃者が認証なしで /admin/<任意> ページの内容を表示するために悪用する脆弱性です。

img6

手順4: 構成ファイルで、脆弱性を含むSpring Securityのバージョンを宣言します。ここではバージョン 5.6.3 を選択します。

img7

手順5: gradlew bootRun コマンドでアプリケーションを実行します。プログラムはデフォルトでApache Tomcatを使用し、ポート8080でリッスンします。/admin/xyz (または /admin/ で始まる任意のパス) にアクセスします。

img8

結果として 403 Forbidden が返され、認証されていないためアクセスできないことがわかります。

ここで、Spring Security (バージョン 5.6.3) の regexMatchers 関数の脆弱性を悪用します。この関数は \r(%0d) や \n(%0a) などの改行文字にマッチしません。そのため、ペイロード /admin/%0dxyz を使用して、認証なしで上記のパスにアクセスできます。

img9

同様に、ペイロード /admin/%0axyz も機能します。

img10

このように、非常にシンプルなペイロードだけでCVE-2022-22978の脆弱性を悪用することに成功しました。

修正方法

  • Spring Securityのバージョンを次のいずれかにアップデートします:
    • 5.5.7+
    • 5.6.4+
    • 5.7+
  • デモ: 修正済みバージョン、具体的には 5.7.1 を使用します。

img11

同じペイロード /admin/%0dxyz を使用してWebアプリケーションを攻撃してみます。

img12

このとき、アプリケーションは攻撃者が期待する応答を返しません。

使用方法

root@kitploit:~
git clone https://github.com/ducluongtran9121/CVE-2022-22978-PoC.git
cd CVE-2022-22978-PoC
gradlew bootRun

必要条件

root@kitploit:~
Java 18
Gradle 7.4.1
ツールをダウンロード