ColdFusion: path traversal to arbitrary file read (CVE-2026-27305)
A network attacker can exploit ColdFusion’s path handling to read files outside the intended directory. Those files can contain sensitive application or server data.
Public CVE record · Vendor advisory or update instructions · Module source · Source and API bundle
Patch title. ColdFusion File Read Path Guard (coldfusion-file-read-path-guard in the registry). The original source snapshot preserves the source available for the historical report.
| Field | Value |
|---|---|
| Affected component and versions | ColdFusion 2023 through Update 18 and 2025 through Update 6 |
| Fixed release | 2023 Update 19, 2025 Update 7 |
| Severity | High (CVSS 3.1, 8.6, CNA) |
| Evidence status | Synthetic comparison only |
| Test environment | Synthetic HTTP fixture behind a single-node Eden 1.103.0 interlay |
| Tested Eden release and module | 1.103.0 · gabriel_cftrav30_v1 1.0.0 |
| Registry package | coldfusion-file-read-path-guard 1.0.0 |
| Tested at | 2026-11-14 UTC |
| First publicly published | 2026-11-14T16:39:20Z |
Result. The marked request reached the synthetic backend in the baseline. Both protected configurations returned HTTP 403 for that request and the backend counter did not change. The native module passed the benign probe.
Synthetic HTTP controls
Tier 1 — declarative policy. The recorded policy denies every method on the recorded fixture route and its descendants. This is a coarse rule: it also blocked the benign probe on the same route, which is the recorded false positive.
{
"version": 1,
"profile": "http-structure-v1",
"policy": {
"version": 1,
"rules": [
{
"scope": {
"methods": [],
"path": "/api",
"descendants": true
},
"require": {
"kind": "deny"
}
}
]
}
}
Tier 2 — native Rust module. The shared rule scans targets and bodies for selected traversal strings on targets starting with /api or containing /cf.
static MARKS: [&[u8]; 5] = [b"../", b"..%2f", b"%2e%2e", b"/etc/", b"file:"];
Implement the remediation
Vendor update. Identify the installed ColdFusion release line, apply its security update from Adobe, then verify the update number in the ColdFusion Administrator. Adobe lists 2023 Update 19 and 2025 Update 7 for this advisory. Vendor instructions.
The published package uses registry name coldfusion-file-read-path-guard. Verify its own archive digest before import. Use the fixture API example to reproduce the recorded comparison. It covers the declaration, signed module activation, verification, revocation, and restoration.
Fixture and probes
The benign probe requested a clean system status endpoint. The marked probe supplied a traversal path through the same endpoint. The fixture incremented its marker when a traversal-bearing path reached the handler.
Measured comparison (2026-11-14 UTC)
The values after each status are the observed increases in the fixture's effect counter.
| Probe | Baseline | Declarative policy | Native module |
|---|---|---|---|
| Benign clean app request | 200, 0 | 403, 0 | 200, 0 |
| Marked traversal read | 200, 1 | 403, 0 | 403, 0 |
Test scope
The shared rule scans targets and bodies for selected traversal strings on targets starting with /api or containing /cf. The fixture did not run ColdFusion or read files.
Signed module authority
Import returned HTTP 201 with explicit activation required and signature verification deferred. Read-only inspection was refused (403) for the reader principal, admission of a tampered statement was rejected (400), and admission of an invalid signature was refused (403). The activation receipt reported the module serving on all 32 expected shards. After revocation the marked probe received HTTP 503 (fail-closed); re-approval and reactivation restored the refusal (403, counter unchanged).
- Source SHA-256
5566862d05d5386c70670ff4321bde454888731687fdc50d3b7566a2089eb89e - Tested binary SHA-256
52ea3f549a90b768e1d655d11b0fd284b00745e7e73636063c323c9adcebbbad - Activation operation
f02f59d2-f44d-444a-816d-c3ea1a9fb66c
Performance
Instrument: client wall-clock through the interlay (includes the network hop), warmup discarded, mean/p50/p95 in milliseconds.
| Arm | n | mean | p50 | p95 |
|---|---|---|---|---|
| Tier 1 — declarative policy, blocked | 15 | 0.4 ms | 0.4 ms | 0.5 ms |
| Tier 2 — module, benign passes (200) | 20 | 0.7 ms | 0.7 ms | 0.9 ms |
| Tier 2 — module, attack refused | 15 | 0.5 ms | 0.5 ms | 0.6 ms |