AMF3のJava実装はデシリアライゼーションとXML外部エンティティの参照に対して脆弱

ニュースソース:Vulnerability Note Database

以下は 2017年4月4日に公開されたAMF3 Java implementations are vulnerable to insecure deserialization and XML external entities referencesの記載を要約したものです。


AMF3のJava実装は、デシリアライゼーションとXML外部エンティティの参照に対して脆弱です。
攻撃者は以下の脆弱性を利用し、シリアル化されたJavaオブジェクトを送信し実行させます。

  • CWE-502 :信頼できないデータのデシリアライゼーション
    flash.utils.IExternalizableではなくjava.io.Externalizableからクラスインスタンスを派生させる場合。
  • CWE-913 :動的に管理されるコードリソースの不適切な制御
    パブリックな引数なしのコンストラクタを使用して任意のクラスをインスタンス化し、その後Java Beansセッターメソッドを呼び出す時、逆シリアル化時に任意のコードが実行される可能性がある。
  • CWE-611 :XML外部エンティティ参照(XXE)
    AMF3メッセージに埋め込まれたXMLドキュメントの外部エンティティ参照を許可するものがあり、 サーバー上の機密データ、サービス拒否、またはサーバー側の要求偽装の可能性がある。

開発者と管理者が講じるべき対策

  • 製品を最新のバージョンにアップデートする
    一部のベンダーは、サポート外のバージョンの製品のみが影響を受けると回答しています。
  • 更新されたJDKを使用
    JDK 8アップデート121、JDK 7アップデート131、およびJDK 6アップデート141は、基本的なシリアライズブラックリストフィルタを実装しています。Java 9ではさらなる対策が期待されています。
  • 信頼できない情報源からの逆シリアル化データを疑う
    CERT Oracle Coding Standard for Javaのシリアライゼーションのガイドライン、特にSER12-JとSER13-Jのルールを参照してください。
  • ファイアウォールのルールやファイルのシステム制限を使用
    シリアル化オブジェクトを受け入れるオープンポートを利用する場合、アクセスを制限して問題を軽減できます。