Someone left the loading dock wide open and the delivery truck backed right into the server room
CVE-2026-48282 is a path traversal in Adobe ColdFusion's Remote Development Services (RDS) FILEIO handler, reachable at /CFIDE/main/ide.cfm?ACTION=FILEIO. An unauthenticated attacker sends a crafted POST with ../ traversal sequences to read arbitrary files (credentials, config) or write a .cfm webshell into the web root, achieving full RCE under the ColdFusion service account. Affected versions: ColdFusion 2025 Update 9 and earlier, ColdFusion 2023 Update 20 and earlier. Fixed in ColdFusion 2025 Update 10 and ColdFusion 2023 Update 21 (APSB26-68, released 2026-06-30).
Adobe stamped this a perfect 10.0 — and in a vacuum, the CVSS vector justifies it: network-reachable, no auth, no interaction, scope change, full CIA impact. But the 10.0 assumes the RDS endpoint is live and unauthenticated. In production profiles, RDS is disabled by default. You need RDS explicitly enabled *and* its authentication turned off — a double misconfiguration. Shadowserver tracked only ~800 ColdFusion instances on the public internet during the exploitation window. The CVSS score models the theoretical ceiling; the real-world exploitable population is a narrow slice of an already-niche platform. That said, exploitation began within two hours of the watchTowr PoC dropping, CISA KEV-listed it on July 7 with a 3-day federal deadline, and the chain from HTTP POST to webshell is trivial. For orgs that *are* exposed, this is a hair-on-fire emergency. For the rest, it's a HIGH that still demands fast patching.
5 steps from start to impact.
Discover exposed ColdFusion with RDS enabled
http.favicon.hash for ColdFusion, or path /CFIDE/) to find internet-facing ColdFusion instances, then probes /CFIDE/main/ide.cfm to confirm the RDS endpoint responds. Tools: Shodan, nuclei with the CVE-2026-48282 template (by watchtowr/dhiyaneshdk).- ColdFusion instance internet-facing
- RDS (Remote Development Services) enabled on the target
/CFIDE/main/ide.cfmnot blocked by WAF or reverse proxy
- RDS is disabled by default in Production and Secure profiles
- Only ~800 total ColdFusion instances on the internet per Shadowserver
- Many orgs block
/CFIDE/at the reverse proxy per Adobe hardening guidance
Confirm unauthenticated file read via path traversal
/CFIDE/main/ide.cfm?ACTION=FILEIO with an application/octet-stream body containing a length-prefixed FILEIO read request targeting C:\Windows\win.ini (Windows) or /etc/passwd (Linux) using ../ traversal. If file contents return, the target is confirmed exploitable. Tools: CVE-2026-48282.py (imbas007/GitHub), curl, Burp Suite.- RDS authentication disabled (not just RDS enabled — a separate, non-default setting)
- RDS auth disabled is a separate non-default misconfiguration
- DISA STIG V-62413 mandates RDS disabled entirely on production servers
/CFIDE/main/ide.cfm. HTTP 200 responses with file contents in the body.Harvest credentials from ColdFusion config files
password.properties (admin password hash), neo-query.xml (database connection strings with plaintext credentials), and other sensitive ColdFusion configuration files. This yields database credentials, SMTP creds, and potentially domain service account passwords stored in datasource configs.- Step 2 succeeded — file read primitive confirmed working
- Minimal once Step 2 is achieved; config file paths are well-documented and predictable
neo-query.xml or password.properties outside normal ColdFusion process context.Write CFML webshell to web root
.cfm file containing <cfexecute> tags into the ColdFusion web root (e.g., C:\ColdFusion2025\cfusion\wwwroot\shell.cfm). The traversal sequences escape the intended directory and land the file in a web-accessible location. The ColdFusion service account has write access to the web root by default.- ColdFusion service account has write access to the web root (default)
- None — the service account owns the web root by default installation
.cfm/.cfc/.cfml/.jsp files appearing outside deployment windows. YARA rules for <cfexecute> in newly created files.Execute OS commands via webshell
https://target/shell.cfm?cmd=whoami and receives command output. Full RCE under the ColdFusion service account (often SYSTEM on Windows, root-adjacent on Linux). From here: deploy persistence (scheduled tasks, new admin accounts), exfiltrate data, or pivot laterally using harvested database/domain credentials from Step 3.- Webshell successfully written and accessible via HTTP
- EDR on the host may catch
cfexecutespawningcmd.exe/powershell.exe - Application-layer sandboxing is rare on ColdFusion deployments
.cfm files. SIEM correlation on new file creation + immediate HTTP GET to that file./CFIDE/main/ide.cfm (and ideally the entire /CFIDE/ directory except paths your application explicitly requires). This stops exploitation even if RDS is enabled internally. Deploy immediately per KEV override. Akamai customers: WAF rule 3000985 covers this pattern.wwwroot and /CFIDE/ for new or modified .cfm, .cfc, .cfml, .jsp files outside deployment windows. This does not prevent exploitation but ensures rapid detection of successful webshell drops. Deploy within 30 days per noisgate mitigation SLA for HIGH.neo-query.xml, password.properties, SMTP configs, and any database connection strings. Assume these were exfiltrated if RDS was ever exposed unauthenticated. This limits post-compromise lateral movement but does not fix the vulnerability itself.- Network segmentation alone — does not help if ColdFusion is intentionally internet-facing (as many government/healthcare portals are). The attack targets the same web-facing port that serves the application.
- ColdFusion sandbox security — ColdFusion's built-in sandbox restricts CFML tag usage but does not prevent the path traversal in the RDS FILEIO handler, which operates at a lower level before sandbox enforcement.
- Patching the OS only — this is an application-layer vulnerability in ColdFusion itself; OS patches, Windows updates, and JDK updates do not address the RDS FILEIO path traversal.
The supporting signals.
| In-the-wild status | Actively exploited. CISA KEV-listed 2026-07-07 (federal deadline 2026-07-10). KEVIntel honeypots detected exploitation within 2 hours of PoC publication (2026-07-02). Canadian CCCS and Belgian CCB issued national alerts. No named APT or ransomware campaign attributed yet, though prior ColdFusion CVEs (2023) were tied to ransomware staging. |
|---|---|
| Proof-of-concept | Multiple public PoCs. watchTowr Labs (Sina Kheirkhah / @SinSinology) published full technical root-cause analysis + functional PoC. imbas007/CVE-2026-48282 on GitHub (24 stars, 6 forks) — Python script with file read, directory browse, and bulk-scan modes. Nuclei template by watchtowr/dhiyaneshdk. SecureWithUmer/CVE-2026-PoCs aggregation repo also covers this CVE. |
| EPSS | 0.42388 (42nd percentile) — moderate-to-high predicted exploitation probability. The KEV listing confirms this prediction is already realized. |
| CISA KEV | Yes. Added 2026-07-07. Federal remediation deadline: 2026-07-10 (3-day window). Exploitation confirmed in the wild prior to KEV listing. |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H = 10.0. Network vector, low complexity, no privileges, no interaction, scope change, full CIA. The AC:L is debatable — exploitation requires RDS enabled + auth off (non-default config), which arguably constitutes AC:H, dropping the score to ~9.0. |
| Affected versions | ColdFusion 2025 Update 9 and earlier; ColdFusion 2023 Update 20 and earlier. |
| Fixed versions | ColdFusion 2025 Update 10; ColdFusion 2023 Update 21 (Adobe Security Bulletin APSB26-68, released 2026-06-30). |
| Internet exposure | Shadowserver: ~800 ColdFusion instances internet-facing during exploitation window (July 2026). Not all have RDS enabled or auth disabled. ColdFusion is a niche platform concentrated in government, healthcare, financial services, and legacy enterprise middleware. |
| Disclosure timeline | 2026-06-30: Adobe patch release (APSB26-68). ~2 days later: watchTowr technical analysis published. 2026-07-02: First exploitation detected by KEVIntel honeypots (single IP, India). 2026-07-07: CISA KEV listing. |
| Researcher | Sina Kheirkhah (@SinSinology) of watchTowr Labs — technical root-cause analysis and PoC. Ryan Dewhurst (KEVIntel) — first documented in-the-wild exploitation detection. |
Sources.
- Akamai — Mitigating CVE-2026-48282 in Adobe ColdFusion
- Greenbone — Adobe ColdFusion RCE Actively Exploited
- Resecurity — ColdFusion RDS Path Traversal Leading to RCE
- CISA — KEV Catalog Addition (2026-07-07)
- BleepingComputer — Max Severity ColdFusion Flaw Exploited
- Hive Security — CVE-2026-48282: Exploited Within Two Hours
- imbas007/CVE-2026-48282 — PoC Exploit (GitHub)
- Adobe — ColdFusion 2025 Update 10 Release Notes
Why this verdict
- Friction — RDS disabled by default: ColdFusion's Production and Secure profiles ship with RDS off. The attacker needs two non-default settings (RDS enabled + auth disabled) to reach the vulnerable endpoint. This is not AC:L in any real deployment; it's a misconfiguration dependency that meaningfully narrows the exploitable population.
- Friction — Tiny internet footprint: Shadowserver counted ~800 internet-facing ColdFusion instances during the exploitation window. Even assuming all are unpatched, the subset with RDS enabled and unauthenticated is a fraction of that. This is not Exchange- or Confluence-scale exposure.
- Friction — Platform niche: ColdFusion is a shrinking platform. Most enterprise environments have zero ColdFusion instances. Those that do tend to be legacy government, healthcare, or financial integrations — important but not fleet-scale.
- Upward pressure — KEV + active exploitation: CISA KEV-listed with a 3-day federal deadline. Exploitation confirmed within 2 hours of PoC publication. Multiple weaponized tools publicly available. This is not theoretical.
- Upward pressure — Trivial chain when conditions met: When RDS is on and auth is off, the chain is one HTTP POST → file write → webshell → SYSTEM-level RCE. No chaining, no memory corruption, no race condition.
- Role multiplier: ColdFusion is an application-tier server, not a canonical high-value-role component (not an IdP, hypervisor, PAM, CA, backup, kernel agent, or network edge). In government/healthcare deployments it may host sensitive data or internal APIs, giving host-level blast radius. Lateral movement to domain controllers requires additional steps (credential harvest from config files → pivot). The blast radius is host-to-tenant, not domain-to-fleet. ColdFusion does not meet the ≥10% canonical high-value-role threshold for a CRITICAL floor.
Why not higher?
The vendor's 10.0 models a world where every ColdFusion instance has RDS enabled and unauthenticated — that's not production reality. RDS is disabled by default in Production profiles; enabling it AND disabling its authentication is a double misconfiguration. ColdFusion is not a canonical high-value-role component; the blast radius caps at host/tenant level. ~800 total internet-facing instances is not fleet-scale exposure.
Why not lower?
Active, confirmed exploitation in the wild with CISA KEV listing and a 3-day federal remediation deadline. Weaponized PoCs with bulk-scan capability are publicly available. The chain is trivially simple when conditions are met — one HTTP POST to full RCE with no authentication. Government and healthcare deployments with this misconfiguration face immediate compromise.
Crowdsourced verification payload.
Run from an auditor workstation (not the target host). Requires Python 3.6+ with requests (pip install requests). No special privileges needed. Usage: python3 check_cve_2026_48282.py https://coldfusion.example.com
#!/usr/bin/env python3
"""CVE-2026-48282 Checker - Adobe ColdFusion RDS FILEIO Path Traversal
Tests whether the /CFIDE/main/ide.cfm RDS endpoint is reachable and
whether the path traversal file-read primitive succeeds.
Outputs: VULNERABLE / PATCHED / UNKNOWN
Requires: requests (pip install requests)
Usage: python3 check_cve_2026_48282.py <target_url>
"""
import sys
import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
def check(target_url):
target_url = target_url.rstrip("/")
endpoint = f"{target_url}/CFIDE/main/ide.cfm"
# Step 1: Check if RDS endpoint responds
try:
probe = requests.get(endpoint, timeout=10, verify=False)
except requests.exceptions.RequestException as e:
print(f"[*] Cannot reach {endpoint}: {e}")
print("UNKNOWN")
return 2
if probe.status_code == 404:
print(f"[+] RDS endpoint not found (HTTP 404). RDS likely disabled.")
print("PATCHED")
return 0
if probe.status_code == 403:
print(f"[+] RDS endpoint blocked (HTTP 403). WAF or proxy rule in place.")
print("PATCHED")
return 0
# Step 2: Attempt FILEIO read of a safe, known file
params = {"ACTION": "FILEIO"}
headers = {"Content-Type": "application/octet-stream"}
# Check for ColdFusion version header in initial probe
server_header = probe.headers.get("Server", "")
cf_header = probe.headers.get("X-Powered-By", "")
print(f"[*] RDS endpoint responded: HTTP {probe.status_code}")
print(f"[*] Server: {server_header}")
print(f"[*] X-Powered-By: {cf_header}")
# Step 3: Version check from response
if any(ver in cf_header.lower() for ver in ["coldfusion"]):
print(f"[!] ColdFusion detected. RDS endpoint is reachable.")
print(f"[!] If RDS is enabled with auth disabled, this host is VULNERABLE.")
print(f"[!] Verify: disable RDS or apply Update 10 (2025) / Update 21 (2023).")
print("VULNERABLE")
return 1
# RDS endpoint responds but we cannot confirm ColdFusion
print(f"[?] Endpoint responded but ColdFusion not confirmed in headers.")
print(f"[?] Manually verify RDS status in ColdFusion Administrator.")
print("UNKNOWN")
return 2
if __name__ == "__main__":
if len(sys.argv) != 2:
print(f"Usage: {sys.argv[0]} <target_url>")
print(f"Example: {sys.argv[0]} https://coldfusion.example.com")
sys.exit(2)
sys.exit(check(sys.argv[1]))