定番の脆弱性 › CVE-2022-22965

Spring4Shell(CVE-2022-22965)

この解説はAIを使用して作成しています。誤りを含む可能性があり、内容は保証できません。必ず公式情報をご確認ください。

公開日:

過去の事例 この記事は過去に話題になった脆弱性の解説です。現在の状況は公式情報でご確認ください。

基本情報(データから表示)

通称Spring4Shell
CVE番号CVE-2022-22965
いつ起きたかNVD に登録された日: 2022-04-01
KEV に追加された日: 2022-04-04
製品VMware Spring Framework
深刻度(CVSS)9.8 緊急CVSS v3.1
NVD による評価
詳細(ベクター)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
ランサムウェアでの悪用不明(確認されていない)
弱点の種類(CWE)CWE-94

何が起きた

アプリを作るための枠組み「Spring Framework」の、Spring MVC や Spring WebFlux を使ったアプリに弱点がありました。JDK 9 以降で動いている場合、「データバインディング」という仕組みを通じて、攻撃者が好きに選んだプログラムを実行できてしまう(リモートコード実行)可能性があります。知られている攻撃方法は、アプリが Tomcat の上で WAR という形で動いている場合に限られますが、データによると、弱点の性質上、ほかの攻撃方法がある可能性もあります。この脆弱性は、実際に悪用が確認されたものとしてKEVに載っています。

攻撃の流れ

データをもとに、AIを使用して作成した図です。実際の攻撃は、これと異なる場合があります。

攻撃の流れ: 1. 攻撃者が、ネットワーク越しにアプリへ細工した要求を送る → 2. JDK 9以降、TomcatでWARとして動くアプリが、データバインディングで値を取り込む → 3. 攻撃者が選んだプログラムが実行される1攻撃者が、ネットワーク越しにアプリへ細工した要求を送る2JDK 9以降、TomcatでWARとして動くアプリが、データバインディングで値を取り込む3攻撃者が選んだプログラムが実行される攻撃の流れ: 1. 攻撃者が、ネットワーク越しにアプリへ細工した要求を送る → 2. JDK 9以降、TomcatでWARとして動くアプリが、データバインディングで値を取り込む → 3. 攻撃者が選んだプログラムが実行される1攻撃者が、ネットワーク越しにアプリへ細工した要求を送る2JDK 9以降、TomcatでWARとして動くアプリが、データバインディングで値を取り込む3攻撃者が選んだプログラムが実行される

誰が影響を受ける

JDK 9 以降で動いている、Spring MVC または Spring WebFlux のアプリが対象です。知られている攻撃方法は、Tomcat の上で WAR として動かしている場合に使えます。初期設定どおり Spring Boot の実行可能な jar として動かしている場合は、この攻撃方法では影響を受けません。影響を受ける Spring Framework のバージョンは、このデータからは不明です。

何をすればいい

古い事例ですが、今でも修正されていない Spring Framework を使ったアプリが動いていないか確認してください。jar で動かしていても、ほかの攻撃方法がある可能性があるため、メーカー(VMware)の案内に従って更新し、詳しくは公式情報を確認してください。

用語メモ

フレームワーク
アプリを作るときに使う、よく使う機能をまとめた土台となるソフトウェアです。
データバインディング
利用者から送られてきた値を、プログラムの中のデータに自動で当てはめる仕組みです。
Tomcat
Javaで作られたWebアプリを動かすためのソフトウェア(アプリケーションサーバー)です。
WAR
Javaで作ったWebアプリを、Tomcatなどに置いて動かすためにまとめたファイルの形式です。

元データ(英語)

Spring Framework JDK 9+ Remote Code Execution Vulnerability

概要(CISA KEV)

Spring MVC or Spring WebFlux application running on JDK 9+ may be vulnerable to remote code execution (RCE) via data binding.

説明(NVD)

A Spring MVC or Spring WebFlux application running on JDK 9+ may be vulnerable to remote code execution (RCE) via data binding. The specific exploit requires the application to run on Tomcat as a WAR deployment. If the application is deployed as a Spring Boot executable jar, i.e. the default, it is not vulnerable to the exploit. However, the nature of the vulnerability is more general, and there may be other ways to exploit it.

公式情報