Apache Commons Collections ライブラリの非直列化処理に脆弱性
1週間以上前の話で,なんだか今更なんだけど,全く仕事に絡んでないこともないので,覚え書きの形で残しておく。 なお,今回のケースは Java 以外にも広がるかもしれないので,類似情報に注意しておいた方がいいだろう。
脆弱性の内容
発端はこれ。
この際に PoC(Proof-of-Concept; 概念実証コード)も公開されている。
更に両氏は今月になって,この PoC を使って Apache Commons Collections ライブラリを使用するいくつかのミドルウェアおよび Groovy, Spring が攻略可能であることを示した。
影響を受ける製品
- Apache Commons Collections ライブラリのバージョン 3.2.1 および 4.0
- Groovy や Spring の一部バージョン
- 上記ライブラリまたはフレームワークが classpath に読み込まれている状態で,シリアル化された Java オブジェクトを外部から受け付けている環境
- WebLogic, WebSphere, JBoss, Jenkins, OpenNMS 等のミドルウェア製品
さらに
- Java 以外にも Python, Ruby などで書かれたアプリケーションやライブラリにも同様の脆弱性がある可能性が指摘されている
影響度(CVSS)
CVSSv2 基本評価値 7.5 (AV:N/AC:L/Au:N/C:P/I:P/A:P)
基本評価基準 | 評価値 |
---|---|
攻撃元区分(AV) | ネットワーク(N) |
攻撃条件の複雑さ(AC) | 低 (L) |
攻撃前の認証要否(Au) | 不要(N)1 |
情報漏えいの可能性(機密性への影響, C) | 部分的(P) |
情報改ざんの可能性(完全性への影響, I) | 部分的(P) |
業務停止の可能性(可用性への影響, A) | 部分的(P) |
CVSS については解説ページを参照のこと。
対策・回避策
回避策としては以下のとおり。
- 外部入力に認証をかける(今回の PoC には認証をバイパスする機能はない)
- 外部入力にシリアル化された Java オブジェクトを受け付けない,または受け付けるオブジェクトを限定する
- PoC 対象のクラス(ACC ライブラリであれば
InvokerTransformer
クラス)を使用しない。
さらに根本的な対策としてアプリケーションの設計の見直しが推奨されている。
ベンダの対応
- WebLogic : 最新版は対策済み(回避策)
- WebSphere : 最新版は対策済み
- JBoss : 最新版は対策済み(一部パッチ準備中),危険なクラスを削除
- Jenkins : 最新版は対策済み
- OpenNMS : Port 1099 の遮断で回避
- Groovy : 最新版は対策済み
- Spring : 最新版は対策済み
参考
- JVNVU#94276522: Apache Commons Collections ライブラリのデシリアライズ処理に脆弱性
- Vulnerability Note VU#576313 - Apache Commons Collections Java library insecurely deserializes data
- AppSecCali 2015: Marshalling Pickles by frohoff
- frohoff/ysoserial : 概念実証コード
- What Do WebLogic, WebSphere, JBoss, Jenkins, OpenNMS, and Your Application Have in Common? This Vulnerability.
- Apache Commons statement to widespread Java object de-serialisation vulnerability : The Apache Software Foundation Blog
- 主要Javaアプリケーションサーバに影響するJavaライブラリの脆弱性を正しく理解する | トレンドマイクロ セキュリティブログ
- Javaライブラリに脆弱性、主要ミドルウェア全てに影響 - ITmedia エンタープライズ
- Javaライブラリにリモートコード実行の脆弱性–JBoss、WebSphere、WebLogicなどに影響 - ZDNet Japan
- Apache Commonsのcollectionsの脆弱性に関連するリンク集をまとめてみた。 - piyolog
- commons-collectionsのInvokerTransformer脆弱性について - R42日記
- SpringとGroovyにも直列化オブジェクト脆弱性 - R42日記
- JVNDB-2015-005968 Oracle WebLogic Server の WLS Security コンポーネントにおける任意のコマンドを実行される脆弱性 - JVN iPedia - 脆弱性対策情報データベース : 対策版リリース
- IBM (参考) Apache Commons の脆弱性が Lotus Widget Factory に与える影響について (CVE-2015-7450) - Japan : この記事では,影響度を CVSSv3 基本評価値で 9.8 (
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
) と評価している。 CVSSv3 では基本評価値 9.0 以上で「緊急」レベルとみなせる