2019年4月26日(日本時間)、Oracle社よりWebLogic Serverにリモートコード実行が可能な脆弱性が公開されました。本脆弱性はWebLogic Serverのwls9_asyncコンポーネントとwls-wsatコンポーネントにおけるシリアライズデータの処理不備によって影響を受けるものです。
Oracle Security Alert CVE-2019-2725
Oracle WebLogic Server の脆弱性 (CVE-2019-2725) に関する注意喚起
本記事では、脆弱性の検証結果や弊社SOCでの検知傾向について解説します。
報告されている脆弱性
ベンダーより報告されている本脆弱性の影響を受けるバージョンは以下のとおりです。
Oracle WebLogic Server 10.3.6.0
Oracle WebLogic Server 12.1.3.0
※ 上記バージョン以外でも該当のコンポーネントが有効になっている場合に影響を受ける可能性があります。詳細はベンダーに確認してください。
本脆弱性は公開当初、公式に得られるパッチが存在しないゼロデイの状態でしたが、Oracle社は定例外パッチを公開し本脆弱性の修正を行っております。パッチの詳細についてはベンダーの情報をご参照ください。
脆弱性の検証結果
- 対象のアプリケーションで本脆弱性の有無を調査する方法や任意のコード実行を行う手法はすでに公開されております。
その結果、以下のことを確認しました。
- wls9_async コンポーネントにおける本脆弱性は公開されている検証コードで影響を受ける
- CVE-2017-10271 の対策パッチは公開されている一部の検証コードに対して有効である。
- wls9_async コンポーネントに対して、CVE-2017-10271 の対策パッチを回避し、影響を与える検証コードが存在する。
- 上記3点の結果は、wls-wsatコンポーネントにおいても同様である。
検証環境
全環境
・ Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
OracleWebLogicServer |
CVE-2017-10271パッチ |
CVE-2019-2725パッチ |
|
検証環境1 |
12.1.3.0 |
× |
× |
検証環境2 |
12.1.3.0 |
○ |
× |
検証環境3 |
12.1.3.0 |
○ |
○ |
検証環境4 |
12.2.1.3 |
- |
- |
○: 適用済み ×: 未適用
※ 本脆弱性はCVE-2017-10271に関連する脆弱性である可能性があり、CVE-2017-10271 の対策パッチの適用次第では攻撃の成否が変化する可能性がありました。そのため、CVE-2017-10271 のパッチ有無の違いについても検証を行いました。
検証結果
検証環境1
|
検証環境2 パッチ済 |
検証環境3 パッチ済 |
検証環境4
|
|
検証コード1 |
○ 図1 |
× 図2 |
× |
× 図3 |
検証コード2 |
○ |
○ 図4 |
× 図5 |
× 図6 |
○ : 攻撃の影響があることを確認
× : 攻撃の影響がないことを確認
検証コード1
今回行った検証では、任意のコードを実行し、その実行結果を公開パス上のファイルに出力する攻撃リクエストを検証しました。
具体的にはシステム情報を表示するコマンドuname -aの実行結果がCVE-2019-2725.txtという公開パス上のファイルに出力され、リモートから参照できることを確認しています。
図1. コード実行が成功することを確認した例
(WebLogic Server 12.1.3.0 CVE-2017-10271パッチ未適用)
ただし、本攻撃コードはCVE-2017-10271の攻撃コードと類似しており、本攻撃はCVE-2017-10271の対策パッチを適用していればホストからの応答内容は変わらないものの、攻撃は成立しないことを確認しております。(図2)
図2. CVE-2017-10271パッチ適用済み環境でコード実行が失敗することを確認した例
(WebLogic Server 12.1.3.0 CVE-2017-10271パッチ適用)
また、本脆弱性の影響バージョンではない12.2.1.3では攻撃が成功しないことを確認しています。(図3)
図3. 影響しないバージョンに対するコード実行例(WebLogic Server 12.2.1.3)
※該当コンポーネントが存在せず404レスポンスが返る
検証コード2
CVE-2017-10271の対策パッチを回避して攻撃を成立させる攻撃コードも公開されており、弊社のCVE-2017-10271対策パッチを適用した環境においても当該攻撃コードで脆弱性が悪用可能であることを確認しました。(図4)
図4. CVE-2017-10271対策パッチを回避する攻撃コードが成功することを確認した例
(WebLogic Server 12.1.3.0 CVE-2017-10271パッチ適用)
なお、CVE-2019-2725対策の定例外パッチを適用した環境ではホストからの応答内容は変わらないもののバックコネクション通信は発生せず、当該攻撃コードが成功しないことを確認しました。(図5)
図5. CVE-2017-10271対策パッチを回避する攻撃コードが失敗することを確認した例
(WebLogic Server 12.1.3.0 CVE-2019-2725対策パッチ適用)
また、こちらのコードについても本脆弱性の影響バージョンではない12.2.1.3では攻撃が成功しないことを確認しています。(図6)
図6. 影響しないバージョンに対するコード実行例(WebLogic Server 12.2.1.3)
※該当コンポーネントが存在せず404レスポンスが返る
NRIセキュア SOC(セキュリティオペレーションセンター)での検知事例
弊社SOC監視環境下では、WebLogic Server管理ポートの既定値である7001/TCPへのアクセスは定常的に観測しており、本脆弱性の公開前後で検知件数が急増したという傾向は確認できていません(図7)。しかしながら4月25日より本脆弱性を狙ったと思われる/_async/AsyncResponseServiceへのアクセスを検知しています(図8)。
図7. 7001/TCP に対するスキャン通信の件数遷移
図8. /_async/AsyncResponseServiceへのアクセス件数推移
これらのリクエストには/_async/AsyncResponseServiceへのGETリクエストで該当コンポーネントの存在有無を調査するものや、POSTリクエストで対象ホストの脆弱性有無を調査するもの(図9)、ランサムウェアやCobaltStrike Beaconに感染させるものが含まれました。
図9. CVE-2017-10271対策パッチを回避し、脆弱性有無を調査するリクエスト検知例
また、以下の図10は弊社で検知した本脆弱性を悪用しCobaltStrike Beaconに感染させようとする攻撃リクエストです。本攻撃が成功すると被害ホストはPowershellを起動し、外部からスクリプトを取得する通信が発生します(図11、図12)。
図10. CobaltStrike Beaconに感染させようとする攻撃リクエスト
図11. 攻撃成功時の被害ホストから外部へのスクリプト取得通信
図12. 図11におけるレスポンスデータをデコードしたもの(一部抜粋)
取得したスクリプト(図11)はメモリ上で実行されCobaltStrike Beaconを取得する通信を発生させます(図13)。その後、CobaltStrike Beaconが実行されると1分に1回外部のホストに対してビーコン(HTTP通信)を送信する挙動を示します(図14)。
図13. Cobalt Strike Beaconを取得する通信
図14. 1分間に1回外部のホストにビーコンを送信する通信
対策
現在、弊社SOCで観測している攻撃通信の多くはCVE-2017-10271のパッチが適用されていれば成立しないものです。しかしながら、上述のとおりCVE-2017-10271の対策パッチを回避する攻撃コードも既に流通しているため、該当バージョンのWebLogic Serverを利用している場合は早急にベンダーから公開されているパッチを適用いただくことを推奨いたします。
なお、早急なパッチ適用が困難な場合は、ネットワーク機器や監視デバイスで特定URL(/_async/、 /wls-wsat/) へのアクセスをブロックする対策もご検討ください。