Spring Frameworkに含まれるリモートコード実行に関する脆弱性(CVE-2018-1270)についての検証レポート
2018/04/10 初版
2018/04/13 更新
2018/04/25 更新
NTTデータ先端技術株式会社
鈴木 涼太
2018年04月05日にPivotal Software社によって公表された、Spring Frameworkに含まれるリモートからの任意のコード実行が行われる脆弱性(CVE-2018-1270)についての検証を実施し、脆弱性の悪用が可能であることを確認しました。
1. 本脆弱性の概要
「Spring Framework」とは、Pivotal Software社からオープンソースにより提供されている、Java Webアプリケーションを開発するためのフレームワークです。
同社は当該フレームワークのMessagingの実装において、リモートから認証を必要としない任意のコード実行が可能となる脆弱性(CVE-2018-1270)が存在することを公表しました。
本脆弱性は、軽量のメッセージングプロトコルSTOMP(Streaming Text Oriented Messaging Protocol)をWebSocket上で利用している状態で、攻撃者から細工されたメッセージを受け取った場合に、Spring Expression Languageにおいて適切な処理が出来ないことに起因しています。
同社では本脆弱性の深刻度をCriticalと評価しています。※1
本脆弱性に関連して、不正に細工したURLを使用することにより、ディレクトリトラバーサルが可能となる脆弱性(CVE-2018-1271)、マルチパート要求によるコンテンツ汚染の脆弱性(CVE-2018-1272)が同社により公表されています。※2
図1. 本脆弱性を悪用した攻撃の例
図1は、本脆弱性に対する攻撃の一例として、インターネットから内部ネットワークへ攻撃者が不正なメッセージを含んだSTOMP over WebSocketのパケットの送信することによる攻撃例を示しています。
2. 本脆弱性の影響を受ける環境
本脆弱性の影響を受ける可能性がある環境は以下の通りです。
- Spring Framework 5.0から5.0.4
- Spring Framework 4.3から4.3.15
- サポート外のバージョンのSpring Framework
3. 本脆弱性を利用した攻撃の検証
攻撃コードとして、概念実証(PoC)コードにより本脆弱性に対する攻撃を試行し、脆弱性を悪用可能であることを検証しました。
3.1. 検証環境
疑似攻撃者 | 疑似被害者 | |
---|---|---|
OS | Kali Linux 2017.01 64bit | CentOS 7.0 64bit |
アプリケーション | 概念実証コード | Spring Boot 2.0.0 Spring Framework 5.0.4 OpenJDK Runtime Environment 1.8.0_102 |
3.2. 攻撃手法
Spring FrameworkによるWebアプリケーションにおいては、STOMP over WebSocketを使用したMessaging機能の使用が可能です。当該機能の実装を利用して攻撃コードを送信します。
図2. 攻撃コードの送信
図2は、標的となるWebアプリケーションが動作するサーバーに対して送信する攻撃コードの内容の一部です。
具体的な実行方法として、標的サーバー上で実行可能となるOSコマンドを、javaによる攻撃コード内に記述し、図2に示されるWebアプリケーション上のフォーム内から攻撃対象サーバーへ送信します。
これにより、攻撃者は実行させたいOSコマンドを任意に攻撃対象サーバー上で動作させることが可能です。
本検証では、攻撃が成功した場合に標的サーバー内のユーザー情報を任意の場所にコピーするファイル操作を行う攻撃を試行します。
3.3. 検証結果
図3に示す結果の通り、攻撃コードの実行により、標的サーバー上でのファイル操作に成功しました。
図3. 標的サーバー上でのファイル操作に成功した結果
4. 本脆弱性に対する対策
4.1. 現在推奨されている対策
2018年4月10日現在、開発元より本脆弱性が修正された
以下バージョンが公開されており、当該バージョンへのアップデートが推奨されています。
- Spring Framework 5.0.5
- Spring Framework 4.3.16
その他の有効な回避策については現在公開されていません。
開発元によれば、メッセージの認証と承認を設けることにより、攻撃を受ける範囲を許可されたユーザーからのみに限定できるとしています。
4.2. 不正アクセス監視機器による対策
4.2.1. 当社が確認している不正アクセス監視機器の対応状況
各製品ベンダーの本脆弱性への対応状況に関する情報、および本検証による各製品での検知結果は以下の通りです。表2に公式シグネチャーの提供状況、表3に当社のカスタムシグネチャー提供状況、また、本検証によって得られた各製品のシグネチャー検知可否の結果を記載します。
種別 | 製品ベンダー/ 製品 |
製品ベンダー提供のシグネチャー | 検知 結果 |
---|---|---|---|
IDS/IPS | IBM QRader Network Security GX/XGS Series |
メーカーからのシグネチャーは現在未提供です。 | - |
McAfee Network Security Platform NS/M Series |
Signature Set 9.8.19.5: ・HTTP : Spring Framework STOMP RCE Vulnerability [0x45230300] |
- | |
WAF | Imperva SecureSphere |
メーカーからのシグネチャーは現在未提供です。 | - |
NGFW | Palo Alto PA Series |
Application and Threat Content: ・Spring Framework Spring-Messaging Remote Code Execution Vulnerability [40625] |
- |
Check Point NGFW Series |
IPS Software Blade: ・Pivotal Spring Spring-Messaging Remote Code Execution (CVE-2018-1270; CVE-2018-1275) |
○ |
種別 | 製品ベンダー/ 製品 |
当社カスタムシグネチャーの提供状況 | 検知 結果 |
---|---|---|---|
IDS/IPS | IBM QRader Network Security GX/XGS Series |
- | - |
McAfee Network Security Platform NS/M Series |
- | - | |
WAF | Imperva SecureSphere |
- | - |
NGFW | Palo Alto PA Series |
- | - |
Check Point NGFW Series |
- | - |
参考文献
- ※1: CVE-2018-1270: Remote Code Execution with spring-messaging
https://pivotal.io/security/cve-2018-1270 - ※2: Multiple CVE reports published for the Spring Framework
https://spring.io/blog/2018/04/05/multiple-cve-reports-published-for-the-spring-framework
機器別当社対応サービス
IDS/IPS
- INTELLILINK IDS/IPSセキュリティ監視・運用サービス
http://www.intellilink.co.jp/business/security/scrutiny_01
WAF
- INTELLILINK WAFセキュリティ監視・運用サービス
http://www.intellilink.co.jp/business/security/scrutiny_05
NGFW
- INTELLILINK UTMセキュリティ監視・運用サービス
http://www.intellilink.co.jp/business/security/scrutiny_06
更新履歴
2018/04/10 | 初版作成 |
---|---|
2018/04/13 | PaloAlto/CheckPointのシグネチャー提供状況を更新 |
2018/04/25 | McAfeeのシグネチャー提供状況、CheckPoint検知検証結果を更新 |
本件に関するお問い合わせ先
NTTデータ先端技術株式会社
お問い合わせフォーム
- ※ 各規格名、会社名、団体名、製品名は、各社の商標または登録商標です。
Tweet