ハマログ

株式会社イーツー・インフォの社員ブログ

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

2015年11月、Apache Commons Collections (ACC)ライブラリに脆弱性が発表されました。

JVNVU#94276522 Apache Commons Collections ライブラリのデシリアライズ処理に脆弱性
CWE-502: Deserialization of Untrusted Data

現在はライブラリの修正版が発表されており、ライブラリ入れ替えで対応可能です。

Release notes for v3.2.2

COLLECTIONS-580	Serialization support for unsafe classes in the functor package is disabled by default as this can be exploited for remote code execution attacks. To re-enable the feature the system property "org.apache.commons.collections.enableUnsafeSerialization" needs to be set to "true". Classes considered to be unsafe are: CloneTransformer, ForClosure, InstantiateFactory, InstantiateTransformer, InvokerTransformer, PrototypeCloneFactory, PrototypeSerializationFactory, WhileClosure.

ただし、意図的にシリアライズを利用しているプログラムを実行すると、例外が発生するようになりました。

11 21, 2015 9:45:14 午後 org.apache.catalina.startup.Catalina start
情報: Server startup in 13232 ms
java.lang.UnsupportedOperationException: Serialization support for org.apache.commons.collections.functors.InstantiateFactory is disabled for security reasons. To enable it set system property 'org.apache.commons.collections.enableUnsafeSerialization' to 'true', but you must ensure that your application does not de-serialize objects from untrusted sources.
	at org.apache.commons.collections.functors.FunctorUtils.checkUnsafeSerialization(FunctorUtils.java:183)
	at org.apache.commons.collections.functors.InstantiateFactory.writeObject(InstantiateFactory.java:158)

セキュリティ上の理由により、Serializationが標準でOFFになっています。有効化するために、システムプロパティ「org.apache.commons.collections.enableUnsafeSerialization」をtrueに設定する必要があります。

Eclipseの対応
該当プロジェクトを選択した状態で、Run->Debug Configrationを選択します。
表示されたウィンドウからサーバを選択して、ArgumentsタブのVM Argumentsに値を入力します。

20151121 221742

サーバの対応
VM引数に、次の値を設定します。

-Dorg.apache.commons.collections.enableUnsafeSerialization=true

これで正常に動作するようになりました。ただしシリアライズが有効になっているため、脆弱性の原因とならないよう設定をおこないましょう。

ApacheCommonsCommons CollectionsJavaJavaEE

  kaneko tomo   2015年11月21日


関連記事

Laravel5のページナビをカスタマイズする

LaravelのPagination機能を使うと、超簡単にページナビゲーションを…

mediatombで自前DLNAサーバーを構築してみる

単車の乗り換え(トリッカー→CB400SF)を検討中の藤田です。 前回、iTun…

Laravelでのログイン処理のかきかた

こんにちは、かねこです。 はじめに Laravelでの認証処理の実装方法について…


← 前の投稿

次の投稿 →