ログファイル内のスコープが指定されていない変数の表示

背景

ColdFusion の直近のセキュリティアップデート(ColdFusion(2023 リリース)アップデート 7 および ColdFusion(2021 リリース)アップデート 13)では、スコープインジェクションの脆弱性に対処したホットフィックスがリリースされました。詳しくは、テクニカルノートを参照してください。

パッチの概要

アドビでは、スコープが指定されていない変数をログファイル内で特定して是正措置を講じるためのパッチを、ColdFusion(2023 リリース)および ColdFusion(2021 リリース)用にリリースしました。

このパッチは、ColdFusion(2023 リリース)アップデート 6 以降と ColdFusion(2021 リリース)アップデート 12 以降に適用されます。アップデート 6 以降およびアップデート 12 以降を使用することをお勧めします。

パッチを適用する理由

このパッチを適用すると、スコープが指定されていないすべての変数をアプリケーションの実行時にログファイル unscoped.log 内で検索して表示できるようになります。

パッチの適用とログファイルの表示の方法

  1. パッチを cfusion/lib/updates にコピーします。
  2. ColdFusion を再起動します。

ログファイルの表示

jvm.args または Application.cfc で searchimplicitscopes=TRUE フラグを設定します。アプリケーションを実行すると、ログファイル unscoped.log が /cfusion/logs に生成されます。

ColdFusion 2023 のアップデート 6ColdFusion 2021 のアップデート 12 については、Application.cfc または Application.cfm. で既に変更されている場合を除き、デフォルトで searchimplicitscope=TRUE が既に設定されています。

ログファイルの内容

"Information","http-nio-8500-exec-1","04/08/24","17:13:17","testapp","/Users/user/codebase/cf-main/cfusion/wwwroot/scope/scope_testing1.cfm:REQUEST.SCOPETESTING,scope:UrlScope"
"Information","http-nio-8500-exec-2","04/08/24","17:16:51","testapp","/Users/user/codebase/cf-main/cfusion/wwwroot/debugging/index.cfm:AJAX_ENABLED,scope:FormScope"
"Information","http-nio-8500-exec-2","04/08/24","17:16:51","testapp","/Users/user/codebase/cf-main/cfusion/wwwroot/debugging/index.cfm:ENABLED,scope:FormScope"
"Information","http-nio-8500-exec-1","04/08/24","17:13:17","testapp","/Users/user/codebase/cf-main/cfusion/wwwroot/scope/scope_testing1.cfm:REQUEST.SCOPETESTING,scope:UrlScope" "Information","http-nio-8500-exec-2","04/08/24","17:16:51","testapp","/Users/user/codebase/cf-main/cfusion/wwwroot/debugging/index.cfm:AJAX_ENABLED,scope:FormScope" "Information","http-nio-8500-exec-2","04/08/24","17:16:51","testapp","/Users/user/codebase/cf-main/cfusion/wwwroot/debugging/index.cfm:ENABLED,scope:FormScope"
"Information","http-nio-8500-exec-1","04/08/24","17:13:17","testapp","/Users/user/codebase/cf-main/cfusion/wwwroot/scope/scope_testing1.cfm:REQUEST.SCOPETESTING,scope:UrlScope"
"Information","http-nio-8500-exec-2","04/08/24","17:16:51","testapp","/Users/user/codebase/cf-main/cfusion/wwwroot/debugging/index.cfm:AJAX_ENABLED,scope:FormScope"
"Information","http-nio-8500-exec-2","04/08/24","17:16:51","testapp","/Users/user/codebase/cf-main/cfusion/wwwroot/debugging/index.cfm:ENABLED,scope:FormScope"

ログファイルの解釈方法

ColdFusion では、アプリケーションが実行されるたびに、スコープが指定されていない変数がログに記録され、それらの変数は暗黙的なスコープから検索されます。ただし、変数が宣言されていても実行時に参照されない場合、その変数はログには記録されません。

テンプレート {{Y}} の変数 {{X}} はスコープを指定する必要があるとログファイルに示されている場合は、テンプレート {{Y}} に含まれる {{X}} のすべてのインスタンスを手動で検索してリファクタリングします。

例えば、

"Information","http-nio-8600-exec-6","03/19/24","19:40:56","cfadmin","/Users/user/codebase/cf_14_hotfix/cfusion/wwwroot /TEST/settings/mappings.cfm:SORTCOLUMN" では、

  • SORTCOLUMN が {{X}}
  • /Users/user/codebase/cf_14_hotfix/cfusion/wwwroot /TEST/settings/mappings.cfm が {{Y}}

次のステップ

このパッチは、アプリケーション内のスコープが指定されていない変数のレポートをコミュニティが生成できるようにすることを目的としています。パッチを使用し、必要な変更を特定したら、フラグを FALSE に戻し、パッチを削除します。

注意:

このパッチはアプリケーションのパフォーマンスに影響を与える可能性があることに留意してください。

ドキュメント履歴

  • 2024/04/10:ログファイルの変更点は次のとおりです。
    • ログファイルには、変数が存在するスコープの名前が含まれています。
    • cfinclude タグを使用してインクルードされたファイルは、ログに記録されます。

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

新規ユーザーの場合