ColdFusion シリアルフィルターファイル

ColdFusion シリアルフィルターを使用すると、Java クラスまたはパッケージで WDDX パケットを逆シリアル化できるようになります。

cfserialfilter.txt ファイルは、安全でない WDDX 逆シリアル化に起因する攻撃を確実に防ぎます。一方、既存の serialfilter.txt では、Java の逆シリアル化を特定の Java クラスまたはパッケージに禁止することで、ブロックします。

セキュリティ対策として、ColdFusion の正常な動作に必要ないくつかのクラスを除き、ColdFusion 内部クラスの WDDX 逆シリアル化が禁止されました。

デフォルトでは、ColdFusion が逆シリアル化を許可しているパッケージは次のとおりです。

java.util.Locale;java.util.Collections$EmptySet;java.util.HashMap;coldfusion.server.ConfigMap;coldfusion.util.FastHashtable;coldfusion.saml.SpConfiguration;coldfusion.saml.IdpConfiguration;coldfusion.runtime.CaseSensitiveStruct;coldfusion.scheduling.mod.ScheduleTagData;coldfusion.runtime.ArgumentCollection;coldfusion.util.CaseInsensitiveMap;coldfusion.runtime.AttributeCollection;coldfusion.sql.QueryTable;coldfusion.archivedeploy.Archive;coldfusion.scheduling.ScheduleTagData;coldfusion.osgi.to.ScheduleTagTO;

cfserialfilter.txt を使用すると、クラスの許可リストをカスタマイズできます。

上記で指定したクラス以外のクラスはすべて、逆シリアル化がブロックされ、同じクラスが wddx.log に記録されます。

serialfilter.txt で ColdFusion が逆シリアル化をデフォルトで禁止しているパッケージは次のとおりです。

!org.mozilla.**;!com.sun.syndication.**;!org.apache.commons.beanutils.**;!org.jgroups.**;!com.sun.rowset.**;

アプリケーションで追加のパッケージを使用した場合に起こること

cfserialfilter.txt で逆シリアル化が禁止されているパッケージやクラスをアプリケーションで使用する場合、アプリケーションは想定どおりには動作せず、<CF_HOME>/logs/wddx.log にエラーが記録されます。

セキュリティ上の理由により、com.sun.rowset.JdbcRowSetImpl は逆シリアル化がブロックされます。このクラスまたはパッケージを cfusion/lib/cfserialfilter.txt ファイルに追加すると、この動作がオーバーライドされ、逆シリアル化が可能になります。

外部 Java パッケージまたはクラスの特定方法

  1. お使いの ColdFusion バージョンのパッチを次の場所からダウンロードします。

  2. ダウンロードしたファイルを <CF_HOME>/lib/updates にコピーし、ColdFusion を再起動します。

  3. アプリケーションを実行します。

    パッケージまたはクラスのリストが <CF_HOME>/logs/wddx.log ファイルに記載されています。

  4. パッケージやクラスのリストを取得した後、パッチを削除します。

追加のパッケージやクラスが特定された後に行うべきこと

アップデートを適用する場合は、次の手順を実行します。

  1. アップデートを適用します。

  2. 特定されたパッケージやクラスの逆シリアル化の脆弱性がパブリックドメインで報告されている場合は、それらのパッケージやクラスを許可リストに追加しないことをお勧めします。

  3. <CF_HOME>/lib にある cfserialfilter.txt ファイルを開きます。

  4. クラスまたはパッケージに逆シリアル化を許可する場合は、そのクラスまたはパッケージを次の形式で追加します。

    • Class: java.<.package_name>.<class_name>
    • Package: java.<package_name>.**
  5. cfserialfilter.txt ファイルを使用して、パッケージやクラスに逆シリアル化を禁止することもできます。それには、次の形式に従います。
    • Class: ! java.<.package_name>.<class_name>
    • Package: ! java.<package_name>.**
    注意:

    パッケージまたはクラスがリストされる順序が重要になります。例えば、java.util.**, パッケージに許可したうえで、さらにそのパッケージ内のクラス java.util.Date; をブロックするには、!java.util.Date;java.util.**; と指定します。この例で順序が逆になっていると、デフォルトで、パッケージ内のすべてのクラスが許可されます。

  6. ColdFusion を再起動します。

ドキュメントの改版履歴

  • 2024年3月12日(PT):アップデート 7 より前は、wddx 逆シリアル化が許可されるパッケージのリストが cfserialfilter.txt ファイルから取得されていました。アップデート 7 では、許可されるパッケージのリストがコードでデフォルトの許可リストとして使用されるようになったので、wddx 逆シリアル化の脆弱性に誤ってさらされることがなくなります。また、このアップデートでは、新しいパッケージ coldfusion.osgi.to.ScheduleTagTO がデフォルトの許可パッケージリストに追加されました。
    cfserialfilter.txt は、wddx 逆シリアル化に対して安全であると考えられるパッケージや新規パッケージのカスタマイズされたリストを指定するために、引き続き使用できます。cfserialfilter.txt に追加されたパッケージは常に優先されることに注意してください。
  • ColdFusion 2023(アップデート 3)および ColdFusion(2021)アップデート 9 への言及は削除されました。
  • cfserialfilter のデフォルトが更新されました。

ヘルプをすばやく簡単に入手

新規ユーザーの場合

Adobe MAX 2025

Adobe MAX Japan
クリエイターの祭典

2025 年 2 月 13 日
東京ビッグサイト