L7 policy bypass via unnormalized HTTP path matching
Calico's Application Layer Policy (disabled by default), which enforces HTTP rules through Dikastes, fails to perform URL path normalization. As a result, HTTP requests using path-traversal segments, encoded slashes, or repeated slashes are not correctly evaluated by Prefix path rules. Dikastes authorizes the request under the permitted prefix while the downstream workload or a fronting proxy normalizes the path and serves the restricted endpoint. An attacker with network access and no special RBAC can potentially reach HTTP endpoints the policy was intended to restrict.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-6540
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 19:31 UTC · Revision 1
Source evidence
L7 policy bypass via unnormalized HTTP path matching
core-osv · Original sourcePublished 30 Jul 2026, 14:45 UTC
Calico's Application Layer Policy (disabled by default), which enforces HTTP rules through Dikastes, fails to perform URL path normalization. As a result, HTTP requests using path-traversal segments, encoded slashes, or repeated slashes are not correctly evaluated by Prefix path rules. Dikastes authorizes the request under the permitted prefix while the downstream workload or a fronting proxy normalizes the path and serves the restricted endpoint. An attacker with network access and no special RBAC can potentially reach HTTP endpoints the policy was intended to restrict.
osv:CVE-2026-6540
Complete source record
{
"id": "98cb4200decdb10a8a9c09fd8db83561dd6d4e149a00b45339e6500e85a03adb",
"url": "https://osv.dev/vulnerability/CVE-2026-6540",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "L7 policy bypass via unnormalized HTTP path matching",
"summary": "Calico's Application Layer Policy (disabled by default), which enforces HTTP rules through Dikastes, fails to perform URL path normalization. As a result, HTTP requests using path-traversal segments, encoded slashes, or repeated slashes are not correctly evaluated by Prefix path rules. Dikastes authorizes the request under the permitted prefix while the downstream workload or a fronting proxy normalizes the path and serves the restricted endpoint. An attacker with network access and no special RBAC can potentially reach HTTP endpoints the policy was intended to restrict.",
"evidence": "osv:CVE-2026-6540",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-6540",
"aliases": [
"CVE-2026-6540"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:H/SA:L"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/projectcalico/calico",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "cc4364f81fbb6dc6fe6e140456c98169dac99f1c"
},
{
"introduced": "a86e41d021c4c60e1f73d8dce396fe249d708cc7"
},
{
"fixed": "a0e92905ed405c469494cf818821373e0c44d64c"
},
{
"introduced": "eb1cf57823a1dd8d25c48b82fd023ea9e3e17996"
},
{
"fixed": "0ca9d1b93644778cafdf1812f3dda02ac0c361e8"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:tigera:calico:*:*:*:*:open_source:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "3.31.6"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:tigera:calico:*:*:*:*:enterprise:*:*:*",
"range": [
{
"introduced": "3.22.0"
},
{
"fixed": "3.22.4"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:tigera:calico:*:*:*:*:open_source:*:*:*",
"range": [
{
"introduced": "3.32.0"
},
{
"fixed": "3.32.1"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"v3.32.0",
"v3.31.1",
"v3.31.0-0.dev",
"v3.30.0-0.dev",
"v3.29.0-0.dev",
"v3.28.0-0.dev",
"v3.27.0-0.dev",
"v3.25.0-0.dev",
"v3.22.3-0.dev",
"v3.24.0-0.dev",
"v3.18.5-calico",
"v3.18.5",
"v3.17.5-calico",
"v3.17.5",
"v3.18.1-calico",
"v3.18.1",
"v3.16.5-calico",
"v3.16.5",
"v3.16.0-calico",
"v3.16.0",
"v3.11.1-calico",
"v3.11.1",
"v3.9.4-calico",
"v3.9.4",
"v3.8.5-calico",
"v3.8.5",
"v3.10.2-calico",
"v3.10.2",
"v3.10.0-calico",
"v3.10.0",
"v3.9.0-calico",
"v3.9.0",
"v3.3.7-calico",
"v3.3.7",
"v3.2.8-calico",
"v3.2.8",
"v3.1.7-calico",
"v3.1.7",
"v3.0.12-calico",
"v3.0.12",
"v3.2.0-calico",
"v3.2.0",
"v3.0.1-calico",
"v3.0.1",
"v3.0.0-calico",
"v3.0.0",
"v2.6.2-calico",
"v2.6.2",
"v3.0.0-alpha1-rc1-calico",
"v3.0.0-alpha1-rc1",
"v2.6.0-calico",
"v2.6.0",
"v2.6.0-rc2-calico",
"v2.6.0-rc2",
"v2.6.0-rc1-calico",
"v2.6.0-rc1",
"v2.5.0-calico",
"v2.5.0",
"v2.5.0-rc2-calico",
"v2.5.0-rc2"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-6540.json"
}
}
],
"modified": "2026-10-28T02:30:38.860303842Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/6xxx/CVE-2026-6540.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-6540",
"https://www.tigera.io/security-bulletins/tta-2026-005/",
"https://github.com/projectcalico/calico/pull/12531",
"https://github.com/projectcalico/calico/pull/12532",
"https://github.com/projectcalico/calico/pull/12533"
],
"provider_metadata": {
"cwe_ids": [
"CWE-22",
"CWE-23"
],
"cna_assigner": "Tigera",
"unresolved_ranges": [
{
"extracted_events": [
{
"range": [
{
"fixed": "3.21.7"
},
{
"fixed": "22.4.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
}
]
}
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/6xxx/CVE-2026-6540.json"
}
},
"related_cves": [
{
"value": "CVE-2026-6540",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 506202,
"published_at": "2026-07-30T14:45:04.068+00:00"
}