mursのColdFusionメモ

頭の中から抜け落ちていく情報をメモがわりに書き溜めていくブログです。

ColdFusion 2023 Update 1、2021 Update 7、2018 Update 17 リリース

2023年7月14日(日本時間7月15日未明)に、さらに更新された新しいUpdate(CF2023 Upd2、CF2021 Upd8、CF2018 Upd18)がリリースされました。この投稿は古いので新しい投稿を確認してください

2023年7月11日(日本時間7月12日未明)に、ColdFusion 2023と2021、2018に向けた新しいUpdateがリリースされました。*1

community.adobe.com

今回のUpdateについて

機能修正などは行われず、3月のColdFusion 2021 Update 6、2018 Update 16のリリース以降に新たに確認された脆弱性の修正が追加されています。3月のUpdateに続き、緊急度・優先度が最も高い脆弱性の修正が行われています。外部からのリクエストを受け付けているサイトは、PoCが出まわる前にUpdateを適用してください。開発元でも直ちに適用(例えば72時間以内)に適用されることが推奨されています。

Updateは過去の修正も含むため、例えばColdFusion 2021 Update 7を適用すると、Update 1~6の修正も含まれます

日本語の情報はまだ公開されていません

まもなく公開されると思われます。公開されたら追記します

その他

アドビのセキュリティ速報のページ内に、ColdFusionが使用するJavaを最新にすることを推奨する記載がありますが、内容に一部誤りがあります。ColdFusion 2023はJava 17のみをサポートしています。ColdFusion 2021 / 2018 はJava 11のみをサポートしていますので、最新のJavaに更新する際は、Java 11の最新リビジョンに更新してください(Java 17を適用しない)

Adobe recommends updating your ColdFusion JDK/JRE to the latest version of the LTS releases for JDK 17 where applicable. Applying the ColdFusion update without a corresponding JDK update will NOT secure the server. See the relevant Tech Notes for more details.
google翻訳)アドビでは、必要に応じて、ColdFusion JDK/JREJDK 17 用の最新バージョンの LTS リリースに更新することをお勧めします。対応する JDK アップデートなしで ColdFusion アップデートを適用しても、サーバーは保護されません。詳細については、関連するテクニカルノートを参照してください。

helpx.adobe.com

*1:ColdFusion 2016以前のバージョンは既にメーカーサポートが終了しており、それらバージョンのUpdateはリリースされません。セキュリティ等への備えが必要なサイトを運営されている場合は、メーカーサポートが提供されているColdFusion 2023や2021へのバージョンアップが推奨されます。

cfjetty on Linuxの自動起動

ColdFusion2023のリリース以来、久しぶりの投稿になってしまった。また、情報をまとめたら、忘れてしまう前にブログに残しておこう。

ということで、今回は、Linux環境でcfjettyを自動起動させる設定。 Linuxでcoldfusionの自動起動は用意されているんだけど、cfjettyはなぜか用意されていない(昔のCF11まではあったんだけど、systemdになってからなくなっている)。

無い物は作ればよいだけなんだけど、いつも忘れてしまうので、メモに残す。

まずは、ColdFusion 2023を CUI でインストールする。GUIモードでインストールすると、インストール途中の『システム init 上で ColdFusionを開始』の選択が出てこないからだ。 もし、LinuxGUI上でインストーラーを起動して、GUIモードで立ち上がったときは、一旦、インストールをキャンセルしたのち、コンソールモードで起動するように入力する。

コンソールモードで起動するには -i consoleを付ける
ColdFusion_2023_GUI_WWEJ_linux64.bin -i console

GUIモードで入れてしまった場合は、↓のFAQの記事を参考に、ColdFusion2023を自動起動するように設定すると良い。 cfassociates.samuraiz.co.jp

これで、/etc/systemd/system/ 内に cf2023.service ファイルが作成されて、サービスが登録されている。なので、このファイルを複製してcfjettyの起動を作ってしまおう。

  1. cf2023.service ファイルをコピーして、cfjetty2023.service という名前にする

  2. vi等でファイルを編集する
     Description=Adobe ColdFusion 2023 を Description=Adobe ColdFusion Jetty 2023 に
     ExecStartを ExecStart=/opt/ColdFusion2023/cfusion/jetty/cfjetty start に
     ExecStopを ExecStop=/opt/ColdFusion2023/cfusion/jetty/cfjetty stop に変更する

  3. ファイルを保存したら、systemdは定義ファイルを自動認識するので確認する
     systemctl list-unit-files --type=service | grep cf
      cf2023.service enabled enabled
      cfjetty2023.service disabled enabled

  4. あとは、サービスとして登録して、起動してみる(すでに起動している場合は、手動で止めて(/opt/ColdFusion2023/cfusion/jetty/cfjetty stop)から起動する)
     systemctl enable cfjetty2023
       Created symlink /etc/systemd/system/multi-user.target.wants/cfjetty2023.service → /etc/systemd/system/cfjetty2023.service.  systemctl start cfjetty2023

  5. ステータスを確認して、起動できていたらOK
     systemctl status cfjetty2023

  6. あとはOSをシャットダウンや再起動して、自動起動されることを確認する

cfjetty2023.service の記載例
[Unit]
Description=Adobe ColdFusion Jetty 2023
After=multi-user.target

[Service]
ExecStart=/opt/ColdFusion2023/cfusion/jetty/cfjetty start
ExecStop=/opt/ColdFusion2023/cfusion/jetty/cfjetty stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Adobe ColdFusion 2023 リリース

徐々にCF2023のコンテンツが出始めました。今回のバージョンもGUIインストーラーが提供されて良かった(体験版ダウンロードからダウンロード可能です)

www.adobe.com

21時過ぎに公式のフォーラムでアナウンスがありました。ということでColdFusion 2023リリースです。

community.adobe.com

キーに紐づく設定メモ① neo-runtime.xml

とりあえず、メモ。詳細は後日。

  • 「サーバーの設定 > 設定」
Key 設定項目
TIMEOUTREQUESTS リクエスタイムアウト 有効/無効 true/false
TIMEOUTREQUESTTIMELIMIT リクエスタイムアウト 数値
isPerAppSettingsEnabled アプリケーションごとの設定の有効化 true/false
ENABLEHTTPSTATUS HTTP ステータスコードの有効化 true/false
空白抑制の有効化
cfcTypeCheckEnabled CFC 型チェックの無効化 true/false
DISABLESERVICEFACTORY ColdFusion Java 内部コンポーネントへのアクセスの無効化 true/false
preserveCaseForSerialize シリアル化用の構造体キーで大文字小文字が保持されます。 true/false
secureJSON シリアル化 JSON への接頭辞付加 true/false
secureJSONPrefix (↑付加される接頭辞) 入力値
maxOutputBufferSize 最大出力バッファーサイズ 入力値
enableInMemoryFileSystem メモリ内ファイルシステムの有効化 true/false
inMemoryFileSystemLimit メモリ内仮想ファイルシステムのメモリ 入力値
inMemoryFileSystemAppLimit メモリ内仮想ファイルシステムのアプリケーションごとのメモリ制限 入力値
設定ファイルの変更の確認 有効/無効
設定ファイルの変更の確認 間隔
グローバルなスクリプト保護
allowExtraAttributesInAttrColl AttributeCollection での追加属性の許可 true/false
dumpunnamedappscope 名前なしアプリケーションの作成を無効にする true/false
allowappvarincontext サーブレットコンテキストへのアプリケーション変数の追加を許可 true/false
cFaaSGeneratedFilesExpiryTime CFaaS の間に作成された一時ファイルをクリアする期間 入力値
ORM 検索インデックスディレクト
CFFormScriptSrc デフォルト ScriptSrc ディレクト 入力値
googleMapKey Google Map API キー 入力値
onServerStart( ) メソッドを含むコンポーネント 有効/無効
serverCFC コンポーネント 入力値
enableNullSupport null 値サポートの有効化 true/false
useJavaAsRegexEngine Java正規表現エンジンとして使用 true/false
maxThreadCountForParallelCalls 並列関数のデフォルトの最大スレッド数 入力値
compileextforinclude CFInclude タグで許可されるファイル拡張子 入力値
blockedExtForFileUpload CFFile アップロードに対してブロックされるファイル拡張子 入力値
applicationCFCSearchLimit Application.cfc および Application.cfm の検索順序 1,2,3
corePoolSize コアプールサイズ 入力値
maxPoolSize 最大プールサイズ 入力値
keepAliveTime キープアライブ時間 入力値
Cloud Services Core Pool Size
maxPoolSizeCloudServices 最大プールサイズ 入力値
keepAliveTimeCloudServices Keep Alive Time 入力値
missing_template 見つからないテンプレートハンドラ 入力値
site_wide サイト全体のエラーハンドラ 入力値
maxUnzip 最大解凍率 入力値
POSTPARAMETERSLIMIT POST リクエストパラメーターの最大数 入力値
POSTSIZELIMIT 送信データの最大サイズ 入力値
throttle-threshold リクエストのスロットルしきい値 入力値
total-throttle-memory リクエストのスロットルメモリ 入力値
REST 確認を許可 入力値
generate mobile key 入力値
isServerMobileEnabled Enable mobile's server workflow 入力値
Enable CORS 入力値
serverMobileContext Mobile server context 入力値
  • 「サーバーの設定 > リクエストの調整」
Key 設定項目
requestLimit 同時テンプレートリクエストの最大数 入力値
flashRemotingLimit 同時 Flash Remoting リクエストの最大数 入力値
webserviceLimit 同時 Web サービスリクエストの最大数 入力値
CFCLimit 同時 CFC 関数リクエストの最大数 入力値
cfthreadpool 同時レポートスレッドの最大数 入力値
QUEUETIMEOUT CFTHREAD に使用できるスレッドの最大数 入力値
QUEUE_TIMEOUT キューで実行待ちのリクエストのタイムアウト 入力値
numSimultaneousReports リクエストキューのタイムアウトページ 入力値
  • 「サーバーの設定 > キャッシュ機能」
Key 設定項目
templateCacheSize キャッシュされるテンプレートの最大数 入力値
serverCacheType サーバー全体のキャッシュエンジン 0:Ehcache、1:JCS…
trustedCacheEnabled 信頼できるキャッシュ true/false
inRequestTemplateCacheEnabled 要求にテンプレートをキャッシュ true/false
componentCacheEnabled コンポーネントキャッシュ true/false
saveClassFiles クラスファイルの保存 true/false
cacheWebServerPath Web サーバーパスのキャッシュ true/false
enableInternalQueryCache 内部キャッシュを使用してクエリを保存する true/false

ColdFusionで主に互換性の維持のために用意されたJVM引数のメモ

ColdFusionは現時点で最新バージョンは2021(正式には「ColdFusion 2021リリース」)で2020年11月11日にリリースされた。大まかに2年に一回くらいの割合でメジャーバージョンアップがされている。 前バージョンとの互換性も重視されていて、新しいバージョンで動作が変更される際などには、元のバージョンの動きを維持する引数が用意されている場合がある。

ライブラリがバージョンアップされたことで動きが変わったなどの場合、または、不具合の修正やセキュリティ強化としてそれまでの動作と変更された場合などはその限りではない。

その情報がまとまった場所になく、頭の中にしか入っていないので、ここにメモしておこう。 (2022.10 更新)

有志によって作成されている cfdocs.org にも同じようにJVM引数を紹介しているページがあるので、こちらも参考にしてください cfdocs.org

JVM引数 内容 有効バージョン 参考サイト
-Dcoldfusion.session.protectfixation="false" セッションIDの振り直し処理を元(の固定化された状態)に戻す 9+SecurityPatch~ クラスタ環境ColdFusionで別サーバー・インスタンスに切り替わった際の動作 - ColdFusion Associate
-Dcoldfusion.trim.dbresult=true クエリオブクエリのWHERE検索で対象データの末尾の空白を無視して検索するように戻す 11Upd9~ https://tracker.adobe.com/#/view/CF-4100830
-Dcoldfusion.xml.usexslt1=true XSLT 1での呼び出しに戻す 10~ https://www.samuraiz.co.jp/coldfusion/upgrade/img/ColdFusion_migration_2017.pdf#page=57
-Dfile.usesystemencoding=true .cfmや.cfcファイルのエンコードの自動判別を止め、以前のVer.に戻す 11 Upd3~ ファイルエンコードの自動判別に伴う問題について - ColdFusion Associate
-Dcoldfusion.literal.preservetype=false データ型の保持を無効にして、以前のVer.に戻す 2018~ データ型についての注意(デフォルトの動作が変わりました) - ColdFusion Associate
-Dcoldfusion.rmi.enable = true
-Dcoldfusion.rmi.enablelcds = true
無効化されたLC DataManagementのリモートアクセスを有効化(無効のまま推奨!) 11Upd19~2018 https://helpx.adobe.com/jp/coldfusion/kb/coldfusion-11-update-19.html
-Dcoldfusion.number.allowdotsuffix=true cfifの演算子比較(is, gt 等)で、"1."や"2."などピリオドで終わる文字列を以前と同じ数字に変換する 2021β   https://tracker.adobe.com/#/view/CF-4214261 ;
-Dcoldfusion.datemask.useDasdayofmonth=true DateFormatのマスクの大文字Dを以前のバージョンに戻す 2021Upd1~ https://cfassociates.samuraiz.co.jp/index.cfm/faq/coldfusion2021/cf2021-dateformat/
-Dcoldfusion.xml.allowPathCharacters=true XML機能でパスに/や\が含まれているとブロックされる動作を元に戻す 2021Upd5~、2018Upd15~ ColdFusion(2021 リリース)アップデート 5
-Dcoldfusion.cfclient.enable=true
-Dcoldfusion.cfclient.allowNonCfc=true
無効化されたcfclientを動作を元に戻す(無効のまま推奨!) 2021Upd6~、2018Upd16~ ColdFusion(2021 リリース)アップデート 6

また、互換性は関係なく、Javaのシステム引数でColdFusionでも使用する場合があるものも紹介します

JVM引数 内容 有効バージョン 参考サイト
-Duser.language=ja -Duser.country=JP クラウドなど英語がデフォルトの環境でColdFusionを日本語版として動かす MX~ Javaデフォルトロケールがja_USとなった場合のja_JPへの戻し方 - ColdFusion Associate
-Dhttps.proxyHost=プロキシホストのURL
-Dhttps.proxyPort=プロキシのポート番号
-Dhttps.proxyUser=プロキシへの接続ユーザー
-Dhttps.proxyPassword=接続ユーザーのパスワード
ColdFusionサーバーからのhttpリクエスト時にプロキシを経由する 11(Java 7)~ JVM引数: proxyの設定について - ColdFusion Associate
-DDEBUGGER_SERVER_PORT=portNumber
-DDEBUGGER_TRACE=true
ColdFusion デバッグ用サーバーのポートの固定
〃のトレース情報
Set up ColdFusion to use the Debugger
-Djdk.lang.Process.allowAmbiguousCommands=true Java11.0.11以降+CF2021でColdFusionの拡張セキュリティを有効にすると
起動時にODBCパッケージでハングするのを回避
Solved: Re: ColdFusion 2021 conflict between Sandbox Secur... - Adobe Support Community - 12179670

※覚えている範囲のメモなので、間違っていたり情報が古くなっていたらすみません。