Tenable ブログ
ブログ通知を受信する重大なOracle WebLogic Serverの欠陥のパッチが未提供
Oracleによる2018年4月のCritical Patch Updateで対処されるべきであった多数の問題の1つに、Oracle WebLogic Server(WLS)Java Enterprise Edition(EE)アプリケーションサーバーのバージョン10.3.6.0、12.1.3.0、12.2.1.2、12.2.1.3に影響する欠陥の修正があります。この脆弱性は、 CVE-2018-2628 (CVSS ベーススコア:9.8)と呼ばれています。T3プロトコルでネットワークアクセスを行う攻撃者は、この重大な問題を悪用することができます。T3プロトコルは、WebLogicサーバーと別の種類のJavaプログラム間で情報を転送するために使われます。しかし、パッチには効果がなく、この問題はまだ悪用できる状況にあります。
影響の評価
最近、そのOracleの脆弱性が検出されたことにより、攻撃者はインターネットでTCP(Transmission Control Protocol)ポートをスキャンして、悪用できるOracle WLSを探しています。Oracle WLSシステムを見つけたリモートの攻撃者は、それを標的として任意のコマンドを実行できます。
脆弱性の詳細
悪用
この脆弱性は新しいものではありません。FoxGlove Securityの驚くべき記事が公開されて以来、WebLogicはたくさんのJavaのデシリアライゼーションによる脆弱性の影響を受けています:「WebLogic、WebSphere、JBoss、Jenkins、OpenNMS、そして皆さんのアプリケーションに共通するものは何でしょうか?この脆弱性です。」実際、Tenable®は、T3を利用したデシリアライゼーション攻撃に関して、次の5つのResearchアドバイザリーを発表しています。
- https://www.tenable.com/security/research/tra-2016-09
- https://www.tenable.com/security/research/tra-2016-21
- https://www.tenable.com/security/research/tra-2016-33
- https://www.tenable.com/security/research/tra-2017-07
- https://www.tenable.com/security/research/tra-2017-16
WebLogicのT3プロトコルは、シリアライズされたJavaオブジェクトを使って通信しているため、特にこの種のバグの影響を受けやすくなっています。このような脆弱性は、プログラムがシリアライズ(通信用に別の形式に変換すること)されたデータを使用しようとする場合に発生します。シリアライズされた信頼されていないJavaオブジェクトをプログラムがデシリアライズすると、シリアライズされたオブジェクトがコードフローを制御し、コードの実行を完全に乗っ取ることができます。Oracleは、デシリアライズすべきでないオブジェクトのリスト(ブラックリスト)を作成してこの攻撃を「修正」する作業を何も行っていません。
しかし、パニックになる前に、CVE-2018-2628が実際にどのようなものなのかを見てみましょう。これは、ブラックリストバイパスという脆弱性です。つまり、攻撃者はブラックリストをかわして、標的とするクラスパス上で任意のオブジェクトをデシリアライズできます。そして、そこに盲点があります。Oracleは、公表されているすべてのJavaデシリアライズ RCE ガジェットの影響をうまく軽減させています。そのため、OracleがリリースしたCVE-2018-2628のパッチは効果的とはいえないものの、パッチを適用したサーバーはリモートコード実行(RCE: Remote Code Execution)の影響をすべて受けるわけではない可能性もあります。
例として、 エクスプロイト DBの概念実証を見てみましょう。12.2.1.3に対するエクスプロイトを実行すると、WebLogicのログに次の内容が出力されます。
<Apr 30, 2018 8:23:49,869 AM PDT> <Warning> <RMI> <BEA-080003> <A RuntimeException was generated by the RMI server: weblogic.common.internal.RMIBootServiceImpl.authenticate(Lweblogic.security.acl.UserInfo;) java.lang.ClassCastException: com.sun.proxy.$Proxy160 cannot be cast to weblogic.rjvm.ClassTableEntry. java.lang.ClassCastException: com.sun.proxy.$Proxy160 cannot be cast to weblogic.rjvm.ClassTableEntry. at weblogic.rjvm.MsgAbbrevInputStream.readClassDescriptor(MsgAbbrevInputStream.java:423) at weblogic.utils.io.ChunkedObjectInputStream$NestedObjectInputStream.readClassDescriptor(ChunkedObjectInputStream.java:288) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1855) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1749) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2040) 以下省略。完全なスタックトレースは、ログファイルを参照 |
このログから、最初のconnect-backは正常にデシリアライズされていることがわかります。しかし、ysoserial(安全でないJavaオブジェクトのデシリアライズを悪用するペイロードを生成する概念実証ツール)は CommonsCollections1を実行するように構成されているので、かつてRCEを許していたオブジェクトはシリアライズもデシリアライズもできず、攻撃者はRCEを実現できません。
Oracleは、2017年に脆弱性のあるApache Commons Collectionsをクラスパスから削除しました。
同じように、ツイート で、ysoserialペイロード、 Jdk7u21の使用に関して述べられています。これは、Java実行環境のデシリアライゼーションエンドポイントです。しかし、これも、 2013年にJava 7で、2014年にJava 8でパッチが提供されました。そのような古いJavaバージョンを使っている方は、このエクスプロイトが問題になるかもしれません。
普及率
今のところ、CVE-2018-2628で特定された脆弱性を使って攻撃を受けたサーバーの報告はありません。しかし、この脆弱性はますます注目を集めているため、近いうちに攻撃が報告される可能性が高まっています。この脆弱性は、認証が必要ないので、簡単に悪用できます。この脆弱性による攻撃が成功すれば、Oracle WLSを乗っ取ることができます。影響を受けるバージョンを使用している場合、広い範囲に影響を与える可能性があります。Oracle WebLogicサーバーは、かつて標的にされたことがある点にも留意すべきです。以前は、特定された脆弱性 CVE-2017-10271が脅威アクターによって使用され、仮想通貨マイニングプログラムを配信していました。
緊急措置が必要
Oracleは、2018年4月のCritical Patch Updateとして修正プログラムを発行しています。この問題を対処するものと考えられていました。残念ながら、これには効果がありません。パッチの更新は的外れではありますが、他の多数のセキュリティ問題への対処がなされているため、更新は適用すべきです。
それまでの間は、脆弱性を抱えるシステムを特定し、組織のセキュリティポリシーに沿ってリスク管理を行う必要があります。Tenableは、この脆弱性の検知をサポートするいくつかの方法を提供しています。
影響を受けているシステムの特定
この Nessus®プラグインは、リモートホストにインストールされているOracle WLSのバージョンが以下の脆弱性による影響を受けているかどうかを検知します:
プラグインID 109201 109429 |
説明/対策 |
次のNessusプラグインは、すべてのT3デシリアライゼーション攻撃を対象とします。
Tenable.io® Container Security でも、これらの問題および影響を受けるWebLogicのバージョンを自動的に検知します。
詳細情報
- Oracle Critical Patch Updateアドバイザリー - 2018年4月
- 最新のアタックサーフェスを総合的に管理する初のサイバーエクスポージャープラットフォーム、 Tenable.ioの詳細情報
- 今すぐTenable.io Vulnerability Managementの60日間無料トライアルをお試しください!
このブログ投稿に貢献してくださった Jacob Baines氏に深く感謝します。
関連記事
- Plugins