見出し画像

Spring Framework に特定条件で Java コードが実行される脆弱性

こちらのnoteは、セキュリティ専門家松野によるニュース解説ラジオ「今日の10分セキュリティラジオ」4月11日の放送内容を一部抜粋しご紹介します

・今回の解説ニュース
・ Spring Framework の脆弱性はどのような影響を及ぼすのか
・「Spring4Shell」と、多くの被害を生んだ「Log4Shell」との違いは?

今回の解説ニュース

CVE-2022-22965が割り当てられている、任意のJavaコードが実行できるJavaフレームワークの脆弱性について発表されています。通称「Spring4Shell」とも呼ばれている、本脆弱性の内容や、昨年末に公表されたLog4jとの違いについて説明します。

今回の脆弱性は、Java言語でWebアプリケーションなどを作成するために用いられるフレームワーク「Spring Framework」のバージョン5.3.0から5.3.17と、5.2.0から5.2.19に存在しています。攻撃者に脆弱性を悪用されることにより、システム内で任意のJavaコードが実行される可能性があるということです。

対策として、対策済みバージョンとしてリリースされたSpring Framework 5.3.18および5.2.20にアップデートする事が必要です。アップデートが難しい場合の回避策として、Tomcatのアップグレード、Java 8へのダウングレード、使用可能なフィールドの制限が挙げられています。なお、CVE-2022-22963が割り当てられている、Spring Cloud Functionで任意のコードが実行できる脆弱性とは別の脆弱性であるということです。

情報システムに対する基本的なBCP対策とは

今回の脆弱性は、システム内で任意のJavaコードが実行される可能性があると言われていますので、システムが乗っ取られたり、マルウェアの感染に悪用されたりする可能性がありますが、攻撃を成功させるためには複数の条件が必要であることが言われています。少し技術的な内容になりますが、できるだけわかりやすく説明します。

一般的に、任意のコードが実行できる脆弱性は、脆弱性の存在しているソフトウェアに割り当てられている権限で、任意の操作ができることになります。今回のCVE-2022-22965では、Spring Frameworkと連携するJavaの実行環境であるTomcatが作成するログの設定をJavaコードで書かれたファイルとして出力するように変更できるため、システム内で任意のJavaコードが実行できることになります。

ただし、今回の脆弱性を悪用するためは
・JDK 9以上を使用している
・Apache Tomcatをサーブレットコンテナとして使用している
・WAR形式でデプロイされている
・プログラムがspring-webmvcあるいはspring-webfluxに依存していること
が必要と言われています。あくまでも現時点(2022年4月11日) での内容であり、他の条件でも攻撃が成功する可能性があるため、今後公開される情報も注視してください。

その他のトピック

今回の「Spring4Shell」と、多くの被害を生んだ「Log4Shell」との違いは?
(全文はこちら)

Voicyで毎週ニュース解説を配信中!