2018 アップデート
ColdFusion(2018 年リリース)アップデート 8
アップデートの適用後、既存の Web サーバーコネクタをアップグレードする必要があります。
ColdFusion Administrator でアップデートする場合:
証明書に署名を行うコードが最近変更されため、ColdFusion(2018 年リリース)にアップデートできるバージョンはアップデート 4 以降になりました。
これは、アップデートの前提条件となります。
以前のアップデートをインストールするには、「ColdFusion(2018 年リリース)のアップデート」を参照してください。
新機能および変更された機能
ColdFusion(2018 年リリース)アップデート 8(リリース日:2020 年 3 月 17 日)は、セキュリティ情報 APSB20-16 に記載されている脆弱性に対処しています。
背景
このアップデートでは、AJP プロトコルの設定の問題が修正されました。この問題は、Tomcat、JBoss、Wildfly など、AJP を使用する JEE アプリケーションサーバーと ColdFusion 2016 または 2018 を一緒に使用した場合に発生することがあります。
この場合、ColdFusion はアプリケーションサーバーとして Tomcat を使用し、AJP コネクタを使用します。これにより、IIS や Apache などの Web サーバーで通信に AJP プロトコルコネクタを使用できるようになります。AJP は信頼性の高いプロトコルですが、信頼できないクライアントには公開しないでください。このプロトコルでは、ネットワークが安全であることを前提としているため、暗号化されずに通信が行われます。Web サーバーまたはコネクタ構成を使用している場合は、AJP で使用されるポートと IP アドレスへのアクセスを Web サーバーに限定する必要があります。
Web サーバーを使用せず、組み込みの Web サーバー構成を使用している場合は、server.xml から AJP コネクタを完全に削除またはコメントアウトできます。
このアップデートより前では、ColdFusion が実行されているマシンのすべてのインターフェイス(0.0.0.0)に AJP コネクタをバインドできました。今回のアップデートから、address 属性が指定されていない場合、AJPコネクタはデフォルトで localhost アドレス(127.0.0.1 または ::1)にバインドされます。
このアップデートを適用すると、すでに設定済みでない限り、server.xml AJP コネクタにランダムなシークレットが追加されます。また、Tomcat を使用する場合、AJP コネクタにシークレットを設定する必要があります。設定しないと、AJP コネクタが起動しません(server.xml で AJP コネクタに secretRequired=false が追加されている場合を除く)。
前提条件
- 64 ビットコンピューターでは、64 ビット版 ColdFusion の 64-bit JRE を使用します。
- ColdFusion サーバーがプロキシの背後にある場合、サーバーがアップデート通知を取得し、アップデートをダウンロードするためのプロキシ設定を指定します。スタンドアロンインストールの場合は jvm.config の下のシステムプロパティ、JEE インストールの場合は対応するスクリプトファイルを使用してプロキシ設定を指定します。
- http.proxyHost
- http.proxyPort
- http.proxyUser
- http.proxyPassword
- JEE アプリケーションサーバー上で実行している ColdFusion の場合、アップデートをインストールする前に、すべてのアプリケーションサーバーインスタンスを停止します。
インストール
このアップデートをインストールする方法については、 を参照してください。 サーバー アップデートセクション。アップデートに関する質問については、この FAQ をご覧ください。
- アップデートはColdFusion インスタンスの Administrator か、コマンドラインオプションでインストールできます。
- Windows ユーザーは、「スタート/すべてのプログラム/Adobe/Coldfusion 2018/Administrator」を使用して ColdFusion Administrator を起動できます。
- Microsoft 8.1、Windows 、Windows 10、Windows Server R2 2012、および Windows Server 2016 のユーザーは、「管理者として実行」オプションを使用して wsconfig ツール({cf_install_home}/{instance_name}/runtime/bin にある)を起動する必要があります。
- 「ダウンロードおよびインストール」オプションを使用してアップデートをインストールするときに、「{cf_install_home}/{instance_name}/hf-updates/hotfix_008.properties のファイルで書き込みファイル操作を実行するときにエラーが発生しました」というエラーが表示された場合は、フォルダー {cf_install_home}/{instance_name}/hf_updates に書き込み権限があることを確認します。
- コネクタ構成ファイルは、{cf_install_home}/config/ wsconfig /backup にバックアップされます。コネクターの再構成後、worker.properties ファイルに行われたカスタム変更をすべて元に戻します。
更新プログラムを手動でインストールする
- このリンクをクリックして、アップデート JAR をダウンロードします。
- ダウンロードした JAR で、以下のコマンドを実行します。ColdFusion サービスを開始したり停止する特権と ColdFusion ルートディレクトリへのフルアクセスを持つ必要があります。
Windows:<cf_root>/jre/bin/java.exe -jar <jar-file-dir>/hotfix-008-318307.jar
Linux ベースのプラットフォーム:<cf_root>/jre/bin/java -jar <jar-file-dir>/hotfix-008-318307.jar
ダウンロードした JAR の実行には、必ず ColdFusion にバンドルされた JRE を使用してください。スタンドアローン ColdFusion の場合、これは <cf_root>/jre/bin にあります。
ColdFusion サービスおよび他の設定済み Web サーバーを再起動する権限を持つユーザーアカウントからアップデートをインストールします webservers 。
アプリケーションを手動で更新する方法については、このヘルプ記事をご覧ください。
インストール後
このアップデートの適用後、ColdFusion のビルド番号は 2018,0,08,318307 になるはずです。
server.xml と worker.properties の場所
server.xml の場所
server.xml ファイルには Tomcat 関連の構成が定義されています。このファイルは {cf.instance.home}\runtime\conf directory にあります。
server.xml での AJP コネクタの場所
AJP コネクタのプロトコル属性は AJP/1.3 に設定されています。例:
<Connector port="8018" protocol="AJP/1.3" packetSize="65535" redirectPort="8451" tomcatAuthentication="false" maxThreads="500" connectionTimeout="60000"/>
worker.properties ファイルには、サーバーと Tomcat の通信を可能にするシークレットを設定します。
IIS での worker.properties の場所
worker.properties ファイルは、{cf.home}/config/wsconfig/<magic_folder_number>\worker.properties にあります。
Apache での worker.properties の場所
worker.properties ファイルは、APACHE_HOME/conf/worker.properties にあります。
アップデートの適用後、構成に応じて次の操作を行います。
Web サーバー(コネクタ)と ColdFusion が同じマシン上にある場合
アップデートの適用後:
ColdFusion をすでにロックダウンしている場合、必要な操作はありません。ColdFusion インスタンスには requiredSecret 属性が設定済みで、通信に必要なシークレット情報が Webサーバーに存在しています。このことは、server.xml と worker.properties(worker.<INSTANCE_NAME>.secret=YOUR_AJP_SECRET)ファイルで再確認できます。
ColdFusion をロックダウンしていない場合は、すべての ColdFusion インスタンスをアップグレードします。ColdFusion のアップデートにより、これらの ColdFusion インスタンスの AJP コネクタがランダムなシークレットで設定されます。
wsconfig ユーティリティを実行し、設定済みのすべてのコネクタを一覧表示します。各コネクタを選択して、アップグレード コネクタをクリックします。アップグレード コネクタをクリックすると、インスタンスからシークレットがコピーされ、worker.properties ファイルに格納されます。IIS または Apache を再起動し、Web サイトをテストします。
ネットワークに関する問題が発生した場合は、以下の「トラブルシューティング」を参照してください。
Web サーバーと ColdFusion インスタンスが異なるマシンで実行されている場合
ColdFusion インスタンスをアップデートすると、ColdFusion は、インスタンスの AJP コネクタをランダムなシークレットで構成します。
インスタンスのシークレットを worker.properties にコピーします。以下に例を示します。
worker.cfusion.secret=<secret>
複数のインスタンスがある場合は、すべてのインスタンスをアップデートした後に、各インスタンスのシークレットを worker.properties にコピーします。以下に例を示します。
worker.<instance>.secret=<secret_from_instance>
このアップデートをインストールする前は、ColdFusion インスタンスが 0.0.0.0(すべてのインターフェイス)で実行されましたが、インストール後は localhost ループバックアドレスにバインドされます。このため、リモートの Web サーバーは Tomcat と通信できません。
各 ColdFusion インスタンスに Tomcat の IP アドレスを設定し、リモートコネクタ経由で Tomcat にアクセスできるようにします。ColdFusion インスタンスを再起動します。また、Web サーバーなどの信頼できるホストにのみ AJP コネクタへのアクセスを許可するように、ファイアウォールの設定を変更します。
<Connector port="8018" protocol="AJP/1.3" packetSize="65535" redirectPort="8451" tomcatAuthentication="false" maxThreads="500" connectionTimeout="60000" address="YOUR_TOMCAT_IP_ADDRESS"/>
組み込み Web サーバーを使用する場合
Apache/IIS などの外部 Web サーバーを使用せず、Tomcat http コネクタを使用する場合、AJP コネクタは使用されません。この場合、このコネクタを server.xml から削除するか、コメントアウトします。例えば、server.xml で次の行をコメントアウトします。
<Connector port="8018" protocol="AJP/1.3" packetSize="65535" redirectPort="8451" tomcatAuthentication="false" maxThreads="500" connectionTimeout="60000"/>
JEE アプリケーションサーバーを使用する場合
このアップデートでは、AJP プロトコルの設定の問題が修正されました。この問題は、Tomcat、JBoss、Wildfly など、AJP を使用する JEE アプリケーションサーバーと ColdFusion 2016 または 2018 を一緒に使用した場合に発生することがあります。
この場合、ColdFusion はアプリケーションサーバーとして Tomcat を使用し、AJP コネクタを使用します。これにより、IIS や Apache などの Web サーバーで通信に AJP プロトコルコネクタを使用できるようになります。AJP は信頼性の高いプロトコルですが、信頼できないクライアントには公開しないでください。このプロトコルでは、ネットワークが安全であることを前提としているため、暗号化されずに通信が行われます。Web サーバーまたはコネクタ構成を使用している場合は、AJP で使用されるポートと IP アドレスへのアクセスを Web サーバーに限定する必要があります。
Web サーバーを使用せず、組み込みの Web サーバー構成を使用している場合は、server.xml から AJP コネクタを完全に削除またはコメントアウトできます。
このアップデートより前では、ColdFusion が実行されているマシンのすべてのインターフェイス(0.0.0.0)に AJP コネクタをバインドできました。今回のアップデートから、address 属性が指定されていない場合、AJPコネクタはデフォルトで localhost アドレス(127.0.0.1 または ::1)にバインドされます。
このアップデートを適用すると、すでに設定済みでない限り、server.xml AJP コネクタにランダムなシークレットが追加されます。また、Tomcat を使用する場合、AJP コネクタにシークレットを設定する必要があります。設定しないと、AJP コネクタが起動しません(server.xml で AJP コネクタに secretRequired=false が追加されている場合を除く)。
特定のアプリケーションサーバーを使用している場合は、JEE コンテナをアップグレードして回避策を行う必要があります。これらのアプリケーションサーバーの場合、上記よりも手順が少なくなります。
Boss EAP または Wildfly アプリケーションサーバー:
https://access.redhat.com/solutions/4851251
Tomcat サーバー:
使用している Tomcat リリースのバージョンに応じて、最新の Tomcat リリースにアップグレードします。詳しくは、Apache Tomcat のマニュアルを参照してください。
WebLogic および WebSphere サーバー:
詳しくは、公式ドキュメントを参照することをおすすめします。
トラブルシューティング
エラー 503
ColdFusion と Web サーバーが同じマシン上にない場合
次の手順に従います。
1. Apache Tomcat AJP コネクタが正常に起動することを確認します。ColdFusion のログで次のメッセージを確認します。
Mar 16, 2020 6:27:39 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-nio-127.0.0.1-8014"]
または
netstat などのコマンドを使用して、AJP ポートが開いているかどうかを確認します。
Windows:netstat -ano | findstr <AJP_PORT>
Linux:netstat -apn | grep <AJP_PORT>
2. Web サーバーと Tomcat が通信できるかどうか確認します。
ColdFusion と Web サーバーが同じマシン上にある場合
/etc/hosts の設定に従って、Tomcat は 127.0.0.1(IPV4 の場合)、::1(IPv6 の場合)または設定済みの任意のアドレスにバインドされます。この設定は、coldfusion-out.log ファイルで確認できます。
AJP コネクタが 127.0.0.1 にバインドされると、ログには次の情報が記録されます。
Mar 16, 2020 6:27:39 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-nio-127.0.0.1-8014"]
AJP コネクタが 0:0:0:0:0:0:0:0:0:1(IPv6)にバインドされると、ログに次の情報が記録されます。
Mar 16, 2020 6:27:39 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-nio-0:0:0:0:0:0:0:1-8014"]
Tomcat が稼働している場合は、Web サーバーと Tomcat の間でネットワークの問題が発生する可能性があります。例えば、IPv4 ループバック(127.0.0.1)と Web サーバーが IPv6 ループバックアドレスで接続を試みます。
IPv6 ループバックアドレスで Tomcat を実行する場合は、次のように server.xml で AJP コネクタに address 属性を追加し、ColdFusion インスタンスを再起動します。
<Connector protocol="AJP/1.3" address="::1" port="8014" redirectPort="8447" packetSize="65535" secret="a3cbab43-dbe0-4372-90c9-ef5ddf2e84cf" tomcatAuthentication="false"/>
Web サーバーが Tomcat インスタンスへの接続に使用するアドレスを変更することもできます。この方法は、server.xml でインスタンスごとに address 属性を変更する必要がないので、同じマシン内に多くのインスタンスが存在するクラスタの場合に便利です。
Web サーバーがすべてのインスタンスに接続する際に使用する worker.properties(worker.cfusion.host=127.0.0.1)から直接アドレスを変更できます。
エラー 403
次の手順に従います。
- コネクタをまだアップグレードしていない場合は、wsconfig -upgrade コマンドを使用して、すべてのインスタンスのコネクタをアップグレードします。
- 適切なシークレット値を使用してもエラー 403 が発生する場合は、Tomcat でサポートされていない追加の要求属性が Web サーバーまたはそのコネクタで設定されている可能性があります。SSL 通信に必要な組み込み要求属性の一部が Tomcat によってすでに処理されています。allowedRequestAttributesPattern=".*" を AJP コネクタタグに追加し、ColdFusion インスタンスを再起動して、Web サイトにアクセスできるかどうか確認します。アクセスできる場合は、これらの要求属性を確認し、RegEx として属性に追加する必要があります。詳しくは、Tomcat AJP コネクタのマニュアルを参照してください。
アンインストール
アップデートをアンインストールするには、以下のいずれかの操作を行います。
- ColdFusion Administrator で、「サーバーアップデート/アップデート/インストール済みアップデート」に移動して「アンインストール」をクリックします。
- コマンドプロンプトからアップデートのアンインストールを実行します。例:java -jar {cf_install_home}/{instance_home}/hf_updates/hf-2018-00008-318307/uninstall/uninstaller.jar
上記のアンインストールオプションを使用してもアップデートをアンインストールできない場合、アンインストーラーが破損している可能性があります。ただし、次の操作を実行すれば、手動でアップデートをアンインストールできます。
- {cf_install_home}/{instance_name}/lib/updates からアップデート jar を削除します。
- {cf_install_home}/{instance_name}/hf-updates/{hf-2018-00008-318307}/backup ディレクトリから {cf_install_home}/{instance_name}/ にすべてのフォルダーをコピーします。