Springライブラリの新たな脆弱性:リスクの確認方法と対策について

Javaコミュニティで最も人気のあるライブラリの一つであるSpringライブラリにおいて、リモートコード実行(RCE)に関連する2つの脆弱性が最近公開されました。これらの脆弱性に対するリスクの有無や、必要な対策を容易に把握できるよう、「Spring4Shell」および「Spring Cloud Function」に関する詳細をまとめました。
脆弱性1 - 「Spring4Shell」(CVE-2022-22965)
2022年3月29日、Spring Core(SC)を標的としたエクスプロイトの概念実証(PoC)のスクリーンショットを含む一連のツイートがコミュニティで発見されました。これにより、最新リリースである5.3.17を含むすべてのSpring Coreバージョンにおいて、リモートコード実行が可能であることが判明しました。
どのようなアプリケーションが危険にさらされていますか?
現在、この新しいエクスプロイトに対して脆弱であることが確認されているのは、Tomcat上でホストされているアプリケーションのみです。組み込みTomcatサーブレットコンテナや、Tomcat以外でホストされているアプリケーションに対して、このエクスプロイトが成功したという実証例はまだありませんが、将来的にこれらのフレームワークに対しても脅威が及ぶ可能性は否定できません。
Springは、この脆弱性に関する公式声明を発表しました。現時点での理解に基づくと、脆弱性の影響を受けるには以下の条件を満たす必要があると説明されています。
- JDK 9以上
- サーブレットコンテナとしてApache Tomcatを使用
- (Spring Bootの実行可能jarではなく)従来のWARとしてパッケージ化されている
- spring-webmvcまたはspring-webfluxの依存関係
- Spring Frameworkバージョン5.3.0〜5.3.17、5.2.0〜5.2.19、およびそれ以前のバージョン
「Spring4Shell」のエクスプロイトはどのように機能しますか?
このエクスプロイトは、メソッドシグネチャでPOJO(Plain Old Java Objects)を使用するリクエストにおいて、「データバインディング」(org.springframework.web.bind.WebDataBinder)を利用します。

ここでFooクラスはPOJOクラスであり、以下のように定義できます。クラスローダーによってロードされる限り、実際のクラスの内容は重要ではありません。

このようなメソッドでリクエストが処理される際、クラスを解決するためにクラスローダーが使用されます。クラスローダーは、すべての可能な型を事前にメモリにロードすることなく、実行時にクラスをロードする役割を担います。新しいクラスが使用される際に、どの.jarファイルをロードすべきかを判断します。
この脆弱性に関する最新かつ詳細な情報(修正プログラムや回避策を含む)は、Springのブログ記事から直接ご確認いただけます。
脆弱性2 - Spring Cloud Function(CVE-2022-22963)
2022年3月27日、Cyber Kendraは、パッチが存在しないSpring Cloud Functionのゼロデイリモートコード実行(RCE)脆弱性に関する詳細を公開しました。この脆弱性には、CVE-2022-22963: Spring Expression Resource Access VulnerabilityというIDが割り当てられています。
どのようなアプリケーションが危険にさらされていますか?
この脆弱性は、以下の条件に該当するアプリケーションに影響を及ぼしました。
- JDK 9以降
- Spring Cloud Functions バージョン 3.1.6以下、3.2.2以下、またはサポート対象外のすべてのバージョン
この脆弱性はどのように悪用されるのか?
Spring Cloud Functionでは、開発者が「spring.cloud.function.routing-expression」プロパティを使用してルーティング処理を設定できます。これは通常、設定ファイルやコードを通じて行われます。この強力な機能は「Spring Expression Language (SpEL)」を受け入れます。今回のゼロデイ脆弱性により、このプロパティがHTTPリクエストヘッダーを通じて設定可能であることが判明しました。つまり、攻撃者はRoutingFunctionエンドポイントへのHTTPリクエストにSpELコードを直接埋め込むことで、任意のコードを実行できてしまうのです。
ユーザーはリスクを軽減するためにどのような対策をとるべきでしょうか?
Springはリリースしました。バージョン3.1.7および3.2.3では、HTTPヘッダー経由での当該プロパティ設定を禁止することで、この脆弱性に対処しています。いずれかのバージョンにアップグレードすれば、追加の対策は不要です。
開発者がより安全なコードを書くための支援について詳しく知りたいですか?デモを予約するか、無料のセキュアコーディングガイドラインをでご確認ください。
出典
- https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/
- https://www.rapid7.com/blog/post/2022/03/30/spring4shell-zero-day-vulnerability-in-spring-framework/
AI主導の開発をリリース前にガバナンスする
AIを活用したリスク測定、コミット時のセキュアコーディングポリシーの強制、そしてSDLC全体を通じたセキュアなデリバリーの加速を実現します。
他のブログ記事を見る
セキュアコーディング、AIガバナンス、ソフトウェアリスク管理に関する専門的なコンテンツをご覧ください。
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed
AIを活用した開発をリリース前にセキュアに
開発者のリスクを可視化し、ポリシーを適用することで、ソフトウェア開発ライフサイクル全体における脆弱性を未然に防ぎます。



.avif)