• 2022年3月30日 18:30(GMT+8):アラート通知の発行

  • 2022年3月31日 更新:Proof Of Concept(POC)および自己検出方法を追加

  • 2022年4月6日 更新:CVE識別番号、公式Patchの方法- 2022年3月31日 更新:Proof Of Concept(POC)および自己検出方法を追加

ポイントの概要

2022年3月29日、TeamT5のサイバーインテリジェンスチームは、SpringフレームワークのRCEに関するゼロデイ脆弱性のアラートを受信しました。現在も当社は脆弱性の調査を続けていますが、これまでの情報に基づき、当社はこの脆弱性の危険性は非常に深刻であると評価しています

  1. Springフレームワークは、Javaアプリケーションの開発において幅広く使用されていることから、この脆弱性はさまざまなサービスに危害を及ぼす可能性があります。

  2. Spring Core RCEゼロデイ脆弱性(別名SpringShell、Spring4Shell)は、JDK 9.0以降のバージョンに存在しています。

  3. これまでの解析時点で公式の修正パッチは公開されていません。当社は、すべての業務提携パートナーおよび顧客が自身のコードライブラリをチェックし、以下の緩和策を講じることを強くおすすめします。

具体的な内容

pic1.png

方向性

説明

一般的な脆弱性と露出(CVE)

本稿執筆時点でこの脆弱性はCVE識別番号を取得していない。

リスクレベル

非常に深刻

影響を受けるバージョン

JDK 9.0以降のバージョン、派生したフレームワークspring-beans-*.jarを使用している、CachedIntrospectionResults.classが存在している場合

概念実証(PoC)

概念実証(PoC)は公開されている

修正パッチ

本稿執筆時点で公式の修正パッチは公開されていない

これまでの情報に基づいた観察で、当社はこの脆弱性はインパクトが非常に深刻であると評価しており、Log4jの脆弱性に近いリスクレベルになる可能性があります。Springフレームワークは、Javaプラットフォームで最も人気がある軽量アプリケーションのフレームワークで、多くの企業や組織がインターネット向けのサービス(internet-facing service)で使用しています。これは、Javaを使用している製品やWebページサービスのすべてがこの脆弱性の影響を受ける可能性があることを意味しています。

SpringShellは、リモートコード実行(RCE)攻撃につながる脆弱性です。公開されている情報によると、攻撃者はこの脆弱性の利用を一度成功させるだけで、任意にファイルをアップロードする権限を得ることができます。

TeamT5は、業務提携パートナーおよび顧客向けに、この脆弱性に関する情報を引き続きアップデートしていきます。当社の業務提携パートナーおよび顧客は、TeamT5のソリューション「ThreatVision」と「ThreatSonar」で、潜在的な脅威に対抗することができます。

PoC

インターネット上では、この脆弱性について多くの利用方法が公開されていますが、実際の実行結果は以下のとおりです:
Payload:

/spring-rce-zeroday-vulnerability_PAYLOAD.png

実際の実行結果:

2.jpg

SpringのWebアプリケーションで、Springに対応するパス(下図参照)に特定のpayloadが送信されることで、任意のパスのファイルに書き込みが可能となり、Webshellをアップロードすることで、リモートコード実行(RCE)が可能となります。上の図はpayloadを実行した後に生成されたファイルです。

3.jpg

利用中のサービスが影響を受けているかチェックする方法

SpringのWebアプリケーションで、Springに対応するパスに、特定のQueryを送信することでWebサイトに脆弱性がないかテストできます。

テストするQueryは以下の通りです:
curl -v host:port/path?class.module.classLoader.URLs%5B0%5D=0

下図はQueryの実行後で、HTTP Status 400が返ってきた場合、脆弱性が存在する可能性が高いです。

4.jpg

緩和策

1.JDKのバージョン番号を確認します。

JDKのバージョン番号を確認するには、組織のシステムのサーバでjava -versionのコマンドを実行し、使用中のバージョン番号を確認します。

5.png
  • バージョン番号が8以前の場合、この脆弱性の影響はありません。

  • バージョン番号が9以降の場合、脆弱性が存在します。潜在的な攻撃を防ぐため、以下の一時的な処置をご参照ください。

2. 一時的な処置:WAFでブロック

本稿執筆時点で公式の修正パッチは公開されていません。当社は一時的な処置(WAF保護)を行うほか、公式の修正パッチの公開に注意することを強くおすすめします。

WAFでブロック

WAF(Webアプリケーションファイアウォール)に以下の文字列をフィルタリングするルールを追加します。

  • class.*, Class.*, *.class.*, *.Class.*

キーワード

キーワード: Spring4Shell, SpringShell, Spring, zeroday vulnerability, 0-day vulnerability, remote control execution vulnerability, JAVA