JVNVU#97538972
Java で実装された複数の Action Message Format (AMF3) ライブラリに脆弱性
Java で実装された複数の Action Message Format (AMF3) ライブラリには、デシリアライズ処理に関する脆弱性および XML 外部実体参照 (XXE) の脆弱性が存在します。
- Atlassian JIRA 4.2.4 から 6.3.0 より前のバージョンまで
- Flamingo amf-serializer by Exadel 2.2.0
- GraniteDS 3.1.1.GA
- Pivotal/Spring spring-flex
- WebORB for Java by Midnight Coders 5.1.1.0
- Flex BlazeDS 4.6.0.23207 および 4.7.2
Java で実装された複数の Action Message Format (AMF3) ライブラリに、次の複数の脆弱性が報告されています。
信頼できないデータのデシリアライズ (CWE-502)
Java で実装された複数の AMF3 ライブラリのデシリアライズ処理では、AMF3 仕様で推奨されている flash.utils.IExternalizable
ではなく java.io.Externalizable
が使用されています。そのため、偽装された RMI サーバやコンテンツを細工された正規の RMI サーバから受信したシリアライズデータをデシリアライズすることで、任意のコードを実行される可能性があります。
報告者が本脆弱性の影響を確認している製品およびバージョンと、それぞれに対応する CVE 番号は次のとおりです。
- Atlassian JIRA 4.2.4 から 6.3.0 より前のバージョンまで - CVE-2017-5983
- Flamingo amf-serializer by Exadel 2.2.0 - CVE-2017-3201
- GraniteDS 3.1.1.GA - CVE-2017-3199
- Pivotal/Spring spring-flex - CVE-2017-3203
- WebORB for Java by Midnight Coders 5.1.1.0 - CVE-2017-3207
動的に操作されるコードリソースの不適切な制御 (CWE-913)
Java で実装された複数の AMF3 ライブラリのデシリアライズ処理において、パラメータ 0個のコンストラクタが存在する任意のクラスのオブジェクトを生成させることが可能です。そのため、任意の Java Beans オブジェクトの setter メソッドを呼び出される可能性があります。
報告者が本脆弱性の影響を確認している製品およびバージョンと、それぞれに対応する CVE 番号は次のとおりです。
- Flamingo amf-serializer by Exadel 2.2.0 - CVE-2017-3202
- Flex BlazeDS 4.6.0.23207 および 4.7.2 - CVE-2017-5641
- GraniteDS 3.1.1.GA - CVE-2017-3200
XML 外部実体参照 (XXE) (CWE-611)
Java で実装された複数の AMF3 ライブラリのデシリアライズ処理には、XML 外部実体参照 (XXE) に関する脆弱性が存在します。そのため、サーバ上の機微なデータを取得されたり、サービス運用妨害 (DoS) 攻撃やサーバサイドリクエストフォージェリ (SSRF) 攻撃が行われたりする可能性があります。
報告者が本脆弱性の影響を確認している製品およびバージョンと、それぞれに対応する CVE 番号は次のとおりです。
- Flamingo amf-serializer by Exadel 2.2.0 - CVE-2017-3206
- Flex BlazeDS4.6.0.23207 - CVE-2015-3269
- GraniteDS 3.1.1.GA - CVE-2016-2340 (JVNVU#95707407)
- WebORB for Java by Midnight Coders 5.1.1.0 - CVE-2017-3208
詳細は、報告者のアドバイザリをご確認ください。
細工されたシリアライズデータに対してデシリアライズ処理を行うことで、任意のコードを実行される可能性があります。
製品ユーザの対策:
アップデートを適用する
使用している製品に対して提供されているアップデートやパッチを適用してください。また、本脆弱性の影響を受けるのはサポートを終了した古いバージョンのみであると回答している開発者もいます。開発者によるサポートが行われている最新バージョンにアップデートしてください。
製品開発者の対策:
最新の JDK を使用する
最新の Java Development Kit (JDK) を使用してください。JDK 8 update 121、JDK 7 update 131、JDK 6 update 141 では、デシリアライズ処理にフィルタ機能が実装されています。また、今後リリースされる予定の Java 9 ではさらなる保護の仕組みが提供される予定です。詳細は JEP 290 をご確認ください。
信用できないデータのデシリアライズ処理に注意する
信頼できない情報元から受け取ったデータのデシリアライズ処理には注意が必要です。Java コーディングスタンダード CERT/Oracle 版の SER12-J と SER13-J をご参照ください。
-
CERT/CC Vulnerability Note VU#307983
AMF3 Java implementations are vulnerable to insecure deserialization and XML external entities references -
code white
AMF - Another Malicious Format -
Japan Vulnerability Note JVNVU#95707407
Granite Data Services に XML 外部実体参照 (XXE) に関する脆弱性 -
JPCERT/CC
Java セキュアコーディングスタンダード CERT/Oracle 版 - シリアライズ (SER)