【活用ガイド】

JVNDB-2015-005930

Apache Commons Collections ライブラリのデシリアライズ処理に脆弱性

概要

Apache Commons Collections (ACC) ライブラリのデシリアライズ処理には脆弱性があります。Java アプリケーションが ACC ライブラリを直接使用している場合やクラスパス指定でアクセスできる範囲に ACC ライブラリが設置されている場合、任意のコードを実行させられる可能性があります。

Apache Commons Collections (ACC) ライブラリ
http://commons.apache.org/proper/commons-collections/

信頼できないデータのデシリアライズ (CWE-502)
2015年1月に開催された AppSec California 2015 において、Gabriel Lawrence 氏と Chris Frohoff 氏は、信頼できないデータをデシリアライズしてしまう脆弱性について講演し、任意のコードを実行可能であることを示しました。シリアライズ機能の使い方が適切でないすべての Java アプリケーションや Java ライブラリが本脆弱性の影響を受けます。

信頼できないデータのデシリアライズ (CWE-502)
http://cwe.mitre.org/data/definitions/502.html

Gabriel Lawrence 氏と Chris Frohoff 氏の講演
http://frohoff.github.io/appseccali-marshalling-pickles/

2015年11月に Foxglove Security の Stephen Breen 氏は、この問題が Apache Commons Collections (ACC) ライブラリに存在すること、特に、信頼できないデータのデシリアライズに InvokerTransformer クラスを使用している場合に任意のコードを実行させられる可能性があることを指摘しました。ACC ライブラリを使用するソフトウェアである、WebSphere、Jenkins、WebLogic、OpenNMS なども影響を受けます。

Foxglove Security の Stephen Breen 氏
(What Do WebLogic, WebSphere, JBoss, Jenkins, OpenNMS, and Your Application Have in Common? This Vulnerability.)
http://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/

Jenkins
https://wiki.jenkins-ci.org/display/SECURITY/Jenkins+Security+Advisory+2015-11-11

WebLogic
http://www.oracle.com/technetwork/topics/security/alert-cve-2015-4852-2763333.html?elq_mid=31793&sh=&cmid=WWSU12091612MPP001C179

ACC ライブラリ バージョン 3.2.1、4.0 の両方が本脆弱性の影響を受けます。

バージョン 3.2.1、4.0
https://blogs.apache.org/foundation/entry/apache_commons_statement_to_widespread

Apache Software Fondation は本脆弱性に関する公式見解をブログに掲載しました。ここには、対策に関するアドバイスや関連情報へのリンクなども掲載されています。また、本脆弱性に関するエントリ (COLLECTIONS-580) がバグ管理システム上に作られています。

公式見解
https://blogs.apache.org/foundation/entry/apache_commons_statement_to_widespread

本脆弱性に関するエントリ (COLLECTIONS-580)
https://issues.apache.org/jira/browse/COLLECTIONS-580

ACC 以外に、Groovy や Spring などについても同様の問題の調査が行われています。Lawrence 氏と Frohoff 氏の発表資料には、Java だけでなく Python や Ruby などで書かれたアプリケーションやライブラリにおいても同様の問題が存在すると記載されています。使用するプログラミング言語やライブラリにかかわらず、ソフトウェアを設計する段階から、データのシリアライズ機能について十分に考慮することが重要です。
CVSS による深刻度 (CVSS とは?)

基本値: 7.5 (危険) [IPA値]
  • 攻撃元区分: ネットワーク
  • 攻撃条件の複雑さ: 低
  • 攻撃前の認証要否: 不要
  • 機密性への影響(C): 部分的
  • 完全性への影響(I): 部分的
  • 可用性への影響(A): 部分的

影響を受けるシステム

* Apache Commons Collections ライブラリを直接使用している Java アプリケーション

* クラスパス指定でアクセスできる範囲に Apache Commons Collections ライブラリを設置している Java アプリケーション

(複数のベンダ)
  • (複数の製品)

想定される影響

Apache Commons Collections ライブラリを使用している Java アプリケーションや Java ライブラリは、任意の Java コードを実行させられる可能性があります。
また、ACC ライブラリを直接使用していなくても、クラスパス指定でアクセスできる範囲に ACC ライブラリが存在する場合は、任意の Java コードを実行させられる可能性があります。
対策

2015年11月16日現在、本脆弱性の完全な対策は不明です。

[ワークアラウンドを実施する]
次のワークアラウンドの実施を検討してください。

 * ファイアウォールやファイルシステムのアクセス制御を活用する
 たとえば Jenkins などのように、ネットワークからシリアライズされたデータを
 受け取るアプリケーションに対しては、そのアプリケーションが待ち受けている
 ポートに接続可能な範囲を制限することによって、本脆弱性の影響を軽減できる
 可能性があります。

 * アプリケーションの設計を見直す
 Apache Commons Collections ライブラリの対策版リリースの準備が進められて
 います。しかし、現状提案されているパッチはシリアライズ機能をデフォルトで
 無効にするだけのものです。当該ライブラリのシリアライズ機能が必要な場合に
 は、この機能を有効にするコードを追加するとともに、安全にデシリアライズす
 るようアプリケーションの設計を見直す必要があります。

 * Apache Software Fondation の公式見解では次のように述べられています:
 "However, to be clear: this is not the only known and especially not
 unknown useable gadget. So replacing your installations with a hardened
 version of Apache Commons Collections will not make your application
 resist this vulnerability."
 (しかし次のことに注意: 攻撃に使えるクラスは今回指摘されたもの以外にも存在
 するかもしれません。したがって Apache Commons Collections ライブラリを
 対策版に置き換えるだけでは本脆弱性の完全な対策とはならないでしょう。)

 * 信頼できない相手からのデータをデシリアライズしない
 信頼できない相手から受け取ったデータをデシリアライズするのは危険です。
 シリアライズ処理に関するベストプラクティスについては、SEI CERT Oracle
 Coding Standard for Java の SER12-J および SER13-J を参照ください。

 SEI CERT Oracle Coding Standard for Java
 https://www.securecoding.cert.org/confluence/x/N4CjAQ

 SER12-J
 https://www.securecoding.cert.org/confluence/x/ZwBzCg

 SER13-J
 https://www.securecoding.cert.org/confluence/x/pwBzCg
ベンダ情報

Apache Software Foundation CloudBees IBM オラクル シスコシステムズ 日本電気
  • NEC製品セキュリティ情報 : NV16-002
日立
CWEによる脆弱性タイプ一覧  CWEとは?

  1. その他(CWE-Other) [IPA評価]
共通脆弱性識別子(CVE)  CVEとは?

参考情報

  1. JVN : JVNVU#94276522
  2. US-CERT Vulnerability Note : VU#576313
  3. 関連文書 : What Do WebLogic, WebSphere, JBoss, Jenkins, OpenNMS, and Your Application Have in Common? This Vulnerability.
  4. 関連文書 : AppSecCali 2015: Marshalling Pickles - how deserializing objects will ruin your day
更新履歴

[2015年11月17日]
  掲載
[2015年11月19日]
  ベンダ情報:IBM (1970575) を追加
[2015年12月22日]
  ベンダ情報:シスコシステムズ (cisco-sa-20151209-java-deserialization) を追加
[2016年03月15日]
  ベンダ情報:日本電気 (NV16-002) を追加
[2016年03月29日]
  ベンダ情報:日立 (HS16-010) を追加
[2016年03月30日]
  ベンダ情報:日立 (日立ディスクアレイシステムにおけるSVP セキュリティホール) を追加