Spring4Shell - PoC
CVE - 2022 - 22965
影響を受けるバージョン :
- Spring Framework バージョン 5.3.0 から 5.3.17、5.2.0 から 5.2.19、およびそれ以前のバージョン
- Java JDK 9
- Apache Tomcat バージョン 10..0.20未満、9.0.62未満、8.5.78未満
- 従来のWARとしてパッケージ化され、spring-webmvcまたはspring-webflux依存関係を持ち、スタンドアロンのServletコンテナにのみデプロイされたアプリケーションが影響を受けます
説明
- 問題はclassLoaderの操作によって悪用される可能性があります
- リクエストパラメータからオブジェクトを設定するために使用される不適切なデータバインディング(Request Mappingアノテーション)がこの脆弱性を引き起こします
- 攻撃者は任意のクラスをロードし、アプリケーションによって実行可能な任意のコードを注入できます
- 同様の脆弱性(CVE-2010-1622)は以前に開示されており、
class.classLoaderおよびclass.protectionDomainを制限するパッチが適用されていました
- しかしJDK9では、
class.module.classLoaderを使用してクラスオブジェクトの子プロパティにアクセスすることでその制限を回避する新しいメソッドclass.getMethod()が導入されました
影響
- この脆弱性の悪用に成功すると、脆弱なマシン上で任意のコード実行が可能になります。
テストアプリケーション
docker build . -t spring4shell-poc-app
または、Dockerイメージを[gokul2/spring4shell-poc]から取得
docker pull gokul2/spring4shell-poc-app
docker run -p 8080:8080 spring4shell-poc-app