Whatever message this page gives is out now! Go check it out!

ColdFusion (2023 release) Update 24

Last update:
Sep 8, 2026

Security recommendations

For all security updates, Adobe recommends applying the security configuration settings outlined on the ColdFusion Security page and reviewing the respective Lockdown guide.
Note:
The updates below are cumulative and contain all updates from previous ones. If you are skipping updates, you can apply the latest update, not those you are skipping. Further, you must take note of any changes that are implemented in each of the updates you are skipping.
View ColdFusion (2023 release) Updates for more information.

What's new and changed

ColdFusion (2023 release) Update 24 (release date: September 08, 2026) resolves critical, important, and moderate vulnerabilities that could lead to arbitrary code execution, arbitrary file system read, privilege escalation, security feature bypass, and memory exposure.
View the security bulletin, APSB26-119, for more information.

SQL table and Stored-Procedure Identifier validation

Affects: cfgridupdate and cfstoredproc
ColdFusion now validates the table identifiers and stored-procedure names used by these tags, to prevent SQL injection through those values. It checks that the following are plain SQL identifiers (letters, digits, _, $, #, @, and a dot only where a schema/owner is allowed):
  • <cfgridupdate>tablename, tableowner, tablequalifier
  • <cfstoredproc> — the procedure name, and each <cfprocparam> bind-variable name (dbvarname)
If one of these values contains anything unexpected, the tag now rejects the request instead of building the SQL.
Note: The equivalent check for <cfinsert> and <cfupdate> already existed. This update extends the same protection to <cfgridupdate> and <cfstoredproc>.
<!--- Fine — plain identifiers, works as before --->
<cfstoredproc procedure="get_customers" datasource="mydb">
    <cfprocparam type="in" dbvarname="@region" value="#form.region#" cfsqltype="cf_sql_varchar">
</cfstoredproc>

<!--- Now rejected — the procedure name is not a plain identifier --->
<cfstoredproc procedure="get_customers; DROP TABLE audit--" datasource="mydb">
</cfstoredproc>
If a legitimate value is being blockedThe recommended fix is to use plain identifiers (and keep passing user input through value=/cfsqltype, which is already safe). If you have a genuine reason to allow non-standard identifiers, there are opt-out flags — secure by default; leave them off in production:
FlagTurns off validation for
-Dcoldfusion.sql.allowUnsafeTableIdentifiers=true<cfinsert>, <cfupdate>, <cfgridupdate>
-Dcoldfusion.sql.allowUnsafeStoredProcIdentifiers=true<cfstoredproc>
Add these to your JVM arguments only if absolutely required.

XSLT collection() / uri-collection() blocking

Affects: XmlTransform() when it runs an XSLT stylesheet
What's New
To prevent stylesheets from reading arbitrary files or reaching internal systems, ColdFusion already blocked the XSLT functions doc(), document(), unparsed-text(), result-document, and environment-variable(). This update adds two more to that list:
  • collection()
  • uri-collection()
By default, these are now blocked inside XmlTransform().
Standard transforms are unaffected.
<!--- Fine — a normal transform --->
<cfset result = XmlTransform(myXmlDoc, myStylesheet)>
If a stylesheet uses collection(), the transform now fails with a message stating that external collection resolution is disabled by security policy.
Prefer to rewrite the stylesheet to avoid collection(). If a trusted, internal deployment genuinely needs it, you can re-enable it (off by default):
-Dcoldfusion.xml.saxon.allowCollection=true
This is the collection() counterpart to the existing -Dcoldfusion.xml.saxon.allowDocFunction and -Dcoldfusion.xml.saxon.allowUnparsedText overrides. Only enable it if your stylesheets are fully trusted.

JVM flags reference

Flag
DescriptionDefault
-Dcoldfusion.xml.saxon.allowCollectionRe-enables the XSLT collection() and uri-collection() functions inside XmlTransform(). When left at default, calls to these functions fail with a security-policy error. Enable only for fully trusted stylesheets.false (functions blocked)
-Dcoldfusion.xml.saxon.allowUnparsedTextRe-enables the XSLT unparsed-text() function inside XmlTransform(), which lets a stylesheet read arbitrary text files. When left at default, calls to this function fail with a security-policy error. Enable only for fully trusted stylesheets.false (function blocked)
Other flags:
Flag
DescriptionDefault
-Dcoldfusion.xml.saxon.allowDocFunctionRe-enables the XSLT doc() / document() functions inside XmlTransform().false (functions blocked)
-Dcoldfusion.sql.allowUnsafeTableIdentifiersDisables identifier validation for <cfinsert>, <cfupdate>, and <cfgridupdate> table name/owner/qualifier attributes.false (validation active)
-Dcoldfusion.sql.allowUnsafeStoredProcIdentifiersDisables identifier validation for <cfstoredproc> procedure name and dbvarname bind-variable names.false (validation active)

AJAX widget HTML input sanitization

ColdFusion AJAX widgets can render application-supplied values in HTML, plain-text, and URL contexts. When dynamic or untrusted content is passed to a field that renders HTML, sanitize the value using GetSafeHTML() before passing it to the tag or attribute. URL/navigation fields require separate URL-scheme validation rather than HTML sanitization.
For detailed guidance on affected AJAX tags and attributes, sanitization requirements, URL handling, and AntiSamy policy configuration, view ColdFusion AJAX Widgets HTML Input Sanitization Guide for Developers.

Configurable deserialization limits

ColdFusion 2023 Update 24 introduces three configurable limits in the existing cfserialfilter.txt deserialization filter file. These settings allow administrators to control the maximum size and complexity of deserialized data while retaining the secure, fail-closed defaults.
Configuration keyGetterDefaultPurpose
maxarray=getMaxArrayLength()100,000Maximum length permitted for a single array or recordset
maxdepth=getMaxDepth()64Maximum element nesting depth
maxelements=getMaxTotalElements()200,000Maximum cumulative elements across the entire packet
The default values are hardcoded and fail-closed. maxarray applies to a single <array length='N'> or <recordset rowCount='N'>, while maxelements limits the cumulative number of elements processed across the complete packet.

Prerequisites

  1. On 64-bit computers, use 64-bit JRE for 64-bit ColdFusion.
  2. If the ColdFusion server is behind a proxy, specify the proxy settings for the server to get the update notification and download the updates. Specify proxy settings using the system properties below in the jvm.config for a stand-alone installation, or corresponding script file for JEE installation.
    • http.proxyHost
    • http.proxyPort
    • http.proxyUser
    • http.proxyPassword
  3. For ColdFusion running on JEE application servers, stop all application server instances before installing the update.

ColdFusion JDK flag requirements

COLDFUSION 2023 (version 2023.0.0.330468) and above

For Application Servers

On JEE installations, set the following JVM flag, " -Djdk.serialFilter= !org.mozilla.**;!com.sun.syndication.**;!org.apache.commons.beanutils.**;!org.jgroups.**;!com.sun.rowset.**; !com.mysql.cj.jdbc.interceptors.**;!org.apache.commons.collections.**;", in the respective startup file depending on the type of Application Server being used.
For example:
  • Apache Tomcat Application Server: edit JAVA_OPTS in the ‘Catalina.bat/sh’ file
  • WebLogic Application Server: edit JAVA_OPTIONS in the ‘startWeblogic.cmd’ file
  • WildFly/EAP Application Server: edit JAVA_OPTS in the ‘standalone.conf’ file
Set the JVM flags on a JEE installation of ColdFusion, not on a standalone installation.

Installation

ColdFusion Administrator

In Package Manager > Packages, click Check for Updates in Core Server.
After it detects an update, click Update. The core package gets updated the the latest update.
All installed packages also get updated.
Restart ColdFusion for the changes to take effect.

Install the update in offline mode manually

  1. Download the hotfix installer from the link. (MD5: aad04a4d433eafbdd94031d20a3b3126)
  2. Download the packages zip (MD5c787ae31c2fa6b9af1ff0d30d8f89549) file from this link and extract its contents to a location accessible to all ColdFusion server instances.
     
  3. Update "packagesurl" in cfusion/lib/neo_updates.xml of cfusion and all its child instances to point to <InstallerRepositoryUnzippedPath>/bundles/bundlesdependency.json present inside the downloaded folder.
You must have privileges to start or stop ColdFusion service and full access to the ColdFusion root directory.
  • Windows: <cf_root>\jre\bin\java.exe -jar <InstallerRepositoryUnzippedPath>\bundles\updateinstallers\hotfix-024-330957.jar
     
  • Linux-based platforms: <cf_root>/jre/bin/java -jar  <InstallerRepositoryUnzippedPath>/bundles/updateinstallers/hotfix-024-330957.jar
If the core server hotfix installation is successful and if there are errors or issues with packages, packages can be installed/updated from the package manager client(cfusion\bin\cfpm.bat|cfpm.sh).
Ensure that the JRE bundled with ColdFusion is used for executing the downloaded JAR. For standalone ColdFusion, this must be at, <cf_root>/jre/bin.
Install the update from a user account that has permissions to restart ColdFusion services and other configured webservers.
For further details on manually updating the application, see the help article.
 
Note:
If you are on Java 17.0.8 or higher and want to apply the Hotfix manually, use the flag java -Djdk.util.zip.disableZip64ExtraFieldValidation=true -jar hotfix.jar.
However, if you are applying the update from the Administrator, you do not require any flag.

Post installation

Note:
After applying this update, the ColdFusion build number should be 2023,0,24,330957

Uninstallation

To uninstall the update, perform one of the following:
  • In ColdFusion Administrator, click Uninstall in Server Update Updates Installed Updates.
  • Run the uninstaller for the update from the command prompt. For example, java -jar {cf_install_home}/{instance_home}/hf_updates/hf-2023-00024-330957/uninstall /uninstaller.jar
If you can't uninstall the update using the above-mentioned uninstall options, the uninstaller could be corrupted. However, you can manually uninstall the update by doing the following:
  1. Delete the update jar from {cf_install_home}/{instance_name}/lib/updates.
  2. Copy all folders from {cf_install_home}/{instance_name}/hf-updates/{hf-2023-00024-330957}/backup directory to {cf_install_home}/{instance_name}/
Note:
Uninstalling this update only removes the core update itself. Any ColdFusion packages that were updated as part of this release remain at their latest compatible versions. If you need to revert package versions, you must do so separately; uninstalling the core update does not roll back package versions automatically.
Q: If I uninstall ColdFusion 2023 Update 24, will all the packages installed with it be rolled back?
 A: No. Package rollback depends on the minimum core dependency of each package:
 
  • Packages with a minimum core dependency of update 24 (that is, they specifically require this core level) are rolled back when you uninstall this core update.
  • Packages with a minimum core dependency of update 23 or update 22 remain installed at their latest compatible versions and are not rolled back automatically when you uninstall the core update.

Connector configuration

2023 UpdateConnector recreation required
Update 24
No
However, upgrading from Update 4 and earlier requires you to recreate the connector. View the following for more information on creating and configuring connectors:
Update 23
No
However, upgrading from Update 4 and earlier requires you to recreate the connector. View the following for more information on creating and configuring connectors:
Update 22
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 21
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 20
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 19
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 18
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 17
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 16
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 15
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 14
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 13
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 12
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 11
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 10
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 9
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 8
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 7No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 6
No
However, upgrading from Update 4 and earlier requires you to recreate the connector.
View the following for more information on creating and configuring connectors:
Update 5Yes
Update 4No
Update 3No
Update 2No
Update 1No

Package updates

UpdatePackages updated
Update 24
Yes
  • adminapi
  • administrator
  • chart
  • eventgateways
  • websocket
Update 23
Yes
  • adminapi
  • administrator
  • ajax
  • debugger
  • pmtagent
  • websocket
Update 22
Yes
  • administrator
  • debugger
  • websocket
Update 21
Yes
  • administrator
  • ajax
  • exchange
  • feed
  • mail
  • websocket
Update 20
Yes
  • administrator
  • axis
  • ccs
  • exchange
  • mail
  • sharepoint
Update 19
Yes
  • adminapi
  • administrator
  • CCS
Update 18
Yes
  • image
  • htmltopdf
  • pdf
  • print
  • search
Update 17
Yes
  • administrator
  • ccs
  • document
  • htmltopdf
  • pdf
  • presentation
  • print
  • report
  • scheduler
  • search
  • spreadsheet
  • websocket
Update 16
Yes
  • feed
Update 15
Yes
The following packages are updated:
  • adminapi
  • administrator
  • axis
  • document
  • exchange
  • htmltopdf
  • image
  • pdf
  • presentation
  • print
  • report
  • saml
  • scheduler
  • search
  • sharepoint
  • spreadsheet
Update 14
Yes
The following packages are updated:
  • adminapi
  • administrator
  • document
  • htmltopdf
  • pdf
  • presentation
  • print
  • report
  • scheduler
Update 13
Yes
The following packages are updated:
  • htmltopdf
  • administrator
  • ajax
  • ccs
Update 12
Yes
The pmtagent package is updated.
Update 11Yes
Update 10No
Update 9No
Update 8Yes
Update 7Yes
Update 6No
Update 5Yes
Update 4No
Update 3No
Update 2No
Update 1No

Share this page

Was this page helpful?
We're glad. Tell us how this page helped.
We're sorry. Can you tell us what didn't work for you?
Thank you for your feedback. Your response will help improve this page.

On this page