セキュリティ研究者がOracle Weblogic Server(WLS)に新たにリモートから悪用可能な脆弱性を発見した。CVE-2019-2725に割り当てられているこの脆弱性は、ユーザ認証なしでリモートから悪用される可能性があり、全体のCVSSスコアは10のうち9.3であり、重大な脆弱性となる。
Oracleはこの問題の影響を受けるサーバのバージョンが10.3.6.0と12.1.3.0であることを記したセキュリティ警告を発表した。この脆弱性は、簡単に悪用できるため、既に実際に悪用されており、ランサムウェア、Crytocoin Miners、その他の悪質なソフトウェアがインストールされている。Oracle社は可能な限り早急に「アップデートを適用することを強く勧めている」。
その根本的な欠陥は、デシリアライズされたXMLデータの検証が不十分なためである。特別に細工されたSOAPリクエストにより、攻撃者はサーバ上で完全なコード実行権限を獲得することができる。
より具体的には、この脆弱性は/_async/AsyncResponseService
エンドポイント上のWLSの非同期コンポーネントに存在する。このエンドポイントは、非同期の要求・応答機能を処理するために使用される内部エンドポイントである。
AsyncResponseService
エンドポイントはリクエストを受信すると、ハンドラのリストを通して繰り返し処理をして、各ハンドラがリクエストを処理できるようにする。 1つの特別なハンドラ、WorkAreaServerHandler
はWorkContextXmlInputAdapter
を利用し、それはXMLDecoder
を利用する。これが脆弱性が発生するポイントである。
XMLDecoder
は、直列化可能
オブジェクトを処理するために使用されるObjectInputStream
と性質的に非常に似ているが、XMLDecoder
は、バイナリ形式ではなくXML形式を使用して直列化オブジェクトを記述する。入力を適切にサニタイズしないと、任意のJavaオブジェクトをデシリアライズできる。
残念ながら、この脆弱性はWeblogicやJavaにとって、最初のものではない。2017年にWeblogicでも同様の脆弱性が報告された(CVE-2017-10271)。そして、一般的にJavaは、InfoQの記事「The State of Java Serialization」で以前に扱われていたように、デシリアライズの脆弱性に変わったものではない。これらの種類の脆弱性を阻止する必要性が認識され、JEP-290はJava 9の一部として導入およびリリースされた。
Oracleは、この問題を解決するために、直ちにパッチを適用することを薦めている。その他の非公式の推奨事項には、すべての/_async/*
URLへのアクセスをブロックすること、または非同期機能のためにWARファイルおよび関連ファイルを削除することが含まれる。