Join our Newsletter — 33% off our NHI Course
Home› Guides› Adobe ColdFusion Hardening Guide
Guide Incident Response & Forensics

Adobe ColdFusion Hardening Guide

← All guides
By NHI Mgmt Group, edited by Lalit Choda Updated 27 October 2026 12 min read
On this page

Adobe ColdFusion servers are often old, internet-facing and forgotten, and attackers keep returning to them because deserialization and access control flaws turn an exposed Administrator into code execution. The CISA Known Exploited Vulnerabilities catalogue lists 16 ColdFusion entries, from 2010 directory traversal in the administrator console to 2023 deserialization flaws marked as used in ransomware campaigns. This guide sets out how authentication and administration work in ColdFusion, the settings from Adobe's own lockdown guide that close the common entry points, and what to log and hunt for so that compromise is found and contained. It is for application server administrators, incident responders and security engineers who inherit ColdFusion estates. If you are already responding to a suspected web shell, start with the Web Shell Response Playbook and return here to harden the rebuilt server.

Key takeaways

  • Patch ColdFusion and the JDK together. Adobe's bulletins state that applying the ColdFusion update without the matching JDK or JRE update will not secure the server.
  • The Administrator and AdminAPI must not be reachable from the internet. Block /CFIDE at the web server and restrict "Allowed IP Addresses for ColdFusion Internal Components"; KEV describes CVE-2024-20767 as exploitable through an internet-exposed admin panel.
  • Run the Secure Profile and the lockdown tool. Adobe's auto-lockdown installer applies a dedicated service account, file permissions, connector rules and recommended Administrator settings, and rolls back if it fails.
  • The password seed protects stored credentials. Data source and service passwords are encrypted with the seed in seed.properties, so a server compromise means rotating every database and service credential it held.
  • Assume compromise on unpatched exposed servers. With exploitation going back years, an internet-facing server that missed updates needs a hunt for web shells before it is trusted again.

How identity and access work in Adobe ColdFusion

ColdFusion has two separate access planes, and hardening must cover both. The application plane is whatever the developers built: CFML pages and components, their own sign-in logic and sessions. The server plane is the ColdFusion Administrator, the AdminAPI, Remote Development Services (RDS), the Performance Monitoring Toolset (PMT) and internal servlets, which control the whole server.

ComponentWhat it exposesLockdown guide setting
ColdFusion Administrator (/CFIDE/administrator)Full server configuration, data sources, scheduled tasksBlock /CFIDE at the web server; restrict Allowed IP Addresses for ColdFusion Internal Components (section 4.29)
AdminAPIProgrammatic administrationCovered by the same internal components IP restriction
Remote Development ServicesRemote file and data source access for IDEsKeep RDS disabled and remove the RDSServlet mapping (4.26)
Exposed servicesRemote service accessLeave "Allowed IP Addresses for Exposed Services" empty (4.29)
Built-in web server (default port 8500)Direct access bypassing the front-end web serverChange the port, bind to 127.0.0.1, use TLS, or disable it if unused (2.3.8, 5.1 to 5.3)
PMT endpoints/pms, /connector, /__cf_connector_heartbeat__Block if PMT is not used (5.8)
Internal servlets and mappingsCFSecurityAnalyzerServlet, JSDebugServlet, /gatewayComment out or remove unused ones (4.6, 5.11)

For the application plane, the lockdown guide sets ColdFusion session defaults that apply to every application unless it overrides them: "Use UUID for CFToken", a session variable default timeout of 20 minutes or less and a maximum under two days, cookies marked HTTPOnly and Secure (where all sites use HTTPS), and a SameSite default of lax or strict (section 4.5). Application sign-in logic is the developers' responsibility; review it against the Application Security Guide.

Admin roles and privileged access

A fresh install can be administered with a single shared password. Adobe's lockdown guide moves away from that model.

  • Named administrator accounts: choose "Separate user name and password authentication" (4.25) and add a user account for each person who signs in to the Administrator (4.28). Separate accounts let you limit which parts of the Administrator each user can use and attribute changes to a person.
  • No concurrent sessions: uncheck "Allow concurrent login sessions for Administrator Console" (4.25).
  • Network restriction first: the IP allow list for internal components is the control that stops internet attackers reaching the Administrator at all. Pair it with web server rules blocking /CFIDE, /WEB-INF, /Application.cfc and /jakarta, plus /cf_scripts where not needed (5.8, 2.6.14).
  • Least privilege service account: run ColdFusion under a dedicated low-privilege account (the guide creates cfuser on Linux), never as root, SYSTEM or a domain account. Code execution through a deserialization flaw runs "in the context of the current user", so this account decides how bad a compromise is.
  • Sandbox security: where several applications share a server, use sandboxes to restrict file system, tag and function, data source and network access per application (4.27).
  • Operating system administrators: whoever can log on to the host can read password.properties and seed.properties. Treat host admin rights as ColdFusion admin rights and manage them through your privileged access process. See the Privileged Access Management Guide.

Integrations, API tokens and service accounts

A ColdFusion server is usually a hub of stored credentials: database logins in data sources, mail server accounts, scheduled tasks that call other systems, and keys embedded in application code. After exploitation, these are what attackers harvest (T1552.001 Credentials In Files).

CredentialWhere it livesHardening
Data source passwordsColdFusion configuration, encrypted using the Password SeedSet a random seed (4.25); give database accounts only the rights the application needs and never use sa or root (4.10)
Seed and password files{cf.instance.root}/lib/password.properties, seed.properties, runtime/conf/Restrict file permissions to the service account and administrators (5.13)
Connector shared secretWeb server connector configurationSet by the auto-lockdown tool so only the web server can talk to ColdFusion (2.6)
Mail server accountMail settingsUse TLS to the mail server and log all sent mail (4.7)
Keys and tokens in CFML codeApplication source, Application.cfcMove to a secrets manager; scan source for secrets
Scheduled task credentialsScheduled task definitionsInventory, log task execution (4.21), remove unused tasks

Each of these is a non-human identity with no person attached, which is why they survive staff changes and rebuilds. Record an owner for each, store new secrets outside the server where possible, and plan a full rotation for the day a server is found compromised. See the Secrets Management Guide.

Logging and detection

The lockdown guide's logging settings (4.21) are the starting point: a non-default log directory, at least 10 archived files, "Use operating system logging facilities" so logs reach syslog or the Windows event log, and "Enable logging for scheduled tasks". Forward those logs and the front-end web server logs off the host, because an attacker running as the service account can alter local files.

SignalSourceWhat it suggestsATT&CK
Requests to /CFIDE, AdminAPI or PMT paths from outside the admin networkWeb server and WAF logsScanning or exploitation of the server planeT1190
New or modified .cfm, .cfc or .jsp files in the webrootFile integrity monitoringWeb shell placed after exploitationT1505.003
Writes in a webroot the lockdown made read-onlyFile integrity monitoring, OS auditPermission change or exploitation as a privileged accountT1505.003
Shell or scripting processes spawned by the ColdFusion Java processEDR, Sysmon, auditdCode execution through deserializationT1190
Reads of password.properties, seed.properties or broad directory listingsEDR, OS auditCredential harvesting and discoveryT1552.001, T1083
Administrator sign-ins, new scheduled tasks, data source changesColdFusion logsPersistence through the AdministratorT1505.003

Responding to a suspected compromise

  1. Contain: remove the server from internet exposure, but keep it running if you need memory evidence.
  2. Preserve: copy web server logs, ColdFusion logs, the webroot and configuration directories, and a list of running processes and network connections.
  3. Scope: compare the webroot against a known-good build, check scheduled tasks and data sources for additions, and review outbound connections from the server.
  4. Rotate: change every data source, mail and integration credential, the Administrator accounts and the password seed, and any key held in application code.
  5. Rebuild: install a current ColdFusion release and JDK on a clean host, apply the lockdown, then redeploy code from source control rather than copying from the compromised server.

For the forensic steps in detail, see the Web Shell Response Playbook and the Incident Response Guide.

Metrics

  • Number of ColdFusion servers in the inventory, and how many run a supported version with the current update and JDK.
  • Days from an Adobe priority 1 ColdFusion bulletin to deployment on every server.
  • Servers where /CFIDE answers from the internet (target zero, tested from outside).
  • Percentage of servers with the Secure Profile and lockdown applied, and with file integrity monitoring on the webroot.
  • Data source accounts with more than the required database rights.

Hardening baseline

Patching rules from Adobe's bulletins

BulletinKey CVEsFixed inNote
APSB23-25CVE-2023-26360 (exploited in very limited attacks), CVE-2023-26359ColdFusion 2018 Update 16, 2021 Update 6Update JDK to current LTS; serial filter on JEE installs
APSB23-40CVE-2023-29300 (9.8), CVE-2023-29298 (exploited in limited attacks)2018 Update 17, 2021 Update 7, 2023 Update 1CVE-2023-29300 listed in KEV with known ransomware use
APSB24-14CVE-2024-20767 (arbitrary file read, public proof of concept)Further addressed in 2023 Update 12 and 2021 Update 18KEV ties it to internet-exposed admin panels

Two rules apply to every bulletin. Update the JDK or JRE to the release in Adobe's support matrix alongside ColdFusion. And on JEE deployments (ColdFusion running inside Tomcat, WebLogic or WildFly rather than standalone), set the -Djdk.serialFilter JVM flag with the values in the bulletin, in JAVA_OPTS or JAVA_OPTIONS in the application server's start-up file. Adobe says to set it on JEE installations only. Unsupported releases receive no fixes at all (NIST SA-22): plan migration for any server on a ColdFusion version outside Adobe's support.

Configuration settings

  • Install profile: Production Profile plus Secure Profile (2.3.3, 4.30).
  • Debugging off: keep "Allow Remote Inspection", "Allow Line Debugging" and other debugging options unchecked (4.18 to 4.22).
  • Internal Java components: check "Disable access to internal ColdFusion Java components" (4.1).
  • Uploads and requests: set "Blocked file extensions for CFFile uploads" to * or a list of executable extensions, limit post size and parameter count, and set "Timeout Requests After" to 5 seconds or less (4.1).
  • Non-default script source: change the "Default ScriptSrc Directory" (4.1).
  • File system: make wwwroot read-only except WEB-INF/cfclasses, WEB-INF/rest-skeletons and WEB-INF/cfc-skeletons (5.4).
  • Remove what you do not use: example data sources and the bookclub collection (4.10, 4.12), Event Gateway Services (4.23), and unused packages found with cfpm scan (3.4).

Rollout

  1. Inventory: find every ColdFusion instance, including test and forgotten servers, with version, update level, JDK and internet exposure.
  2. Triage exposure: block /CFIDE and the built-in server port at the perimeter immediately for any exposed server; this needs no application change.
  3. Patch: apply the latest ColdFusion update and JDK in a test environment, run application regression tests, then production.
  4. Lock down in test: run the auto-lockdown installer against a test instance with a backup taken; Adobe documents that it rolls back on failure and writes logs under <CF_HOME>/lockdown/<instance>/logs/.
  5. Roll out: apply to production during a change window, then test the application and confirm /CFIDE is unreachable from outside.
  6. Roll back: use the lockdown uninstall properties (service user, Administrator credentials) or restore the backup if the application breaks.

Framework mapping

AreaNIST SP 800-53 Rev. 5NIST CSF 2.0MITRE ATT&CK
Patching, JDK and supported versionsSI-2, RA-5, SA-22ID.RA-01, PR.PS-02T1190
Administrator exposure and accountsAC-17, AC-6PR.AA-05T1190
Lockdown settings and removed featuresCM-6, CM-7PR.PS-01T1505.003
Stored credentialsIA-5PR.AA-05T1552.001
Session settingsSC-23PR.PS-01T1190
Inventory and loggingCM-8, AU-9DE.CM-09T1083, T1005

Common misconfigurations

  • Administrator reachable from the internet: many ColdFusion flaws need the Administrator or internal components to be reachable. A web server rule blocking /CFIDE and an IP allow list would have reduced several KEV entries, including the 2013 authentication bypasses and CVE-2024-20767, to internal-only risk.
  • Patching ColdFusion but not the JDK: Adobe repeats in each bulletin that the update alone does not secure the server.
  • Built-in web server left on port 8500: it bypasses the front-end web server rules, so the /CFIDE block does nothing there.
  • Running as a privileged account: a ColdFusion service running as SYSTEM, root or a domain account turns application code execution into host or domain compromise.
  • Database accounts with full rights: data sources using sa or root mean a compromised server can read or destroy every database it connects to.
  • Patching without hunting: on a server that was exposed and unpatched while a flaw was being exploited, the update closes the door but leaves any web shell in place.

Practitioner checklist

  • Inventory every ColdFusion server with version, update, JDK and exposure, and retire or isolate unsupported ones.
  • Block /CFIDE, /WEB-INF, /jakarta and unused PMT paths at the web server, and restrict internal components by IP.
  • Apply the latest ColdFusion update and matching JDK; set the serial filter on JEE installs.
  • Run the auto-lockdown tool with the Secure Profile in test, then production.
  • Switch to named Administrator accounts and disable concurrent admin sessions.
  • Disable RDS, debugging, unused servlets, example data sources and Event Gateway Services.
  • Run ColdFusion under a dedicated low-privilege account with a read-only webroot.
  • Set a random password seed, least-privilege database accounts, and record an owner for every stored credential.
  • Enable OS logging and scheduled task logging, forward logs, and monitor the webroot for new files.
  • Hunt for web shells on any server that was exposed and behind on updates.

Standards and references

Related NHI Mgmt Group resources: Web Shell Response Playbook · Emergency Out-of-Band Patching Playbook · Secrets Management Guide · Web Application Firewall Guide

Free weekly newsletter

Subscribe to the NHI & AI Identity Journal

The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.

Bonus 33% off our NHI Course when you subscribe.

NHIMG Editorial Note
Researched and written by the NHI Mgmt Group editorial team using AI tools, under the editorial direction of Lalit Choda. Facts are drawn from the sources listed on this page and checked by our automated quality process. Last updated 27 October 2026. Spotted an error? Use our contact page.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM and Agentic AI security. nhimg.org