CWE-436
Allowed-with-ReviewInterpretation Conflict
Abstraction: Class · Status: Incomplete
Product A handles inputs or steps differently than Product B, which causes A to perform incorrect actions based on its perception of B's state.
313 vulnerabilities reference this CWE, most recent first.
CVE-2026-116137 (GCVE-0-2026-116137)
Vulnerability from cvelistv5 – Published: 2026-10-25 11:51 – Updated: 2026-10-25 11:51- CWE-436 - Interpretation Conflict
| URL | Tags |
|---|---|
| https://github.com/cthackers/adm-zip/issues/587 | issue-tracking |
| https://github.com/cthackers/adm-zip | product |
| https://github.com/cthackers/adm-zip/blob/cb2cf9b… | technical-description |
| https://github.com/cthackers/adm-zip/blob/cb2cf9b… | technical-description |
| https://github.com/cthackers/adm-zip/blob/cb2cf9b… | technical-description |
| https://www.vulncheck.com/advisories/adm-zip-thro… | third-party-advisory |
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"packageURL": "pkg:npm/adm-zip",
"product": "adm-zip",
"vendor": "cthackers",
"versions": [
{
"lessThanOrEqual": "0.6.1",
"status": "affected",
"version": "0",
"versionType": "semver"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:adm-zip_project:adm-zip:*:*:*:*:*:*:*:*",
"versionEndIncluding": "0.6.1",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Arjun Jain"
}
],
"datePublic": "2026-10-21T00:00:00.000Z",
"descriptions": [
{
"lang": "en",
"value": "adm-zip through 0.6.1 contains a duplicate-entry validation bypass that allows attackers to evade the readEntries() check by using canonically equivalent entry names like \u0027./hello.txt\u0027 and \u0027hello.txt\u0027. Attackers can craft ZIP archives where getEntry() or readAsText() validates benign content while extractAllTo() writes malicious content to the same path, bypassing integrity checks."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 6.3,
"baseSeverity": "MEDIUM",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "LOW"
},
"format": "CVSS"
},
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 3.7,
"baseSeverity": "LOW",
"confidentialityImpact": "NONE",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-436",
"description": "Interpretation Conflict",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-25T11:51:01.980Z",
"orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"shortName": "VulnCheck"
},
"references": [
{
"name": "GitHub Issue #587",
"tags": [
"issue-tracking"
],
"url": "https://github.com/cthackers/adm-zip/issues/587"
},
{
"tags": [
"product"
],
"url": "https://github.com/cthackers/adm-zip"
},
{
"tags": [
"technical-description"
],
"url": "https://github.com/cthackers/adm-zip/blob/cb2cf9ba4c7c865db426e2de1997cb41194d9872/zipFile.js#L81-L92"
},
{
"tags": [
"technical-description"
],
"url": "https://github.com/cthackers/adm-zip/blob/cb2cf9ba4c7c865db426e2de1997cb41194d9872/adm-zip.js#L87"
},
{
"tags": [
"technical-description"
],
"url": "https://github.com/cthackers/adm-zip/blob/cb2cf9ba4c7c865db426e2de1997cb41194d9872/util/utils.js#L383"
},
{
"name": "VulnCheck Advisory: adm-zip through 0.6.1 Duplicate-Entry Validation Bypass via Canonically Equivalent Names",
"tags": [
"third-party-advisory"
],
"url": "https://www.vulncheck.com/advisories/adm-zip-through-0.6.1-duplicate-entry-validation-bypass-via-canonically-equivalent-names"
}
],
"title": "adm-zip through 0.6.1 Duplicate-Entry Validation Bypass via Canonically Equivalent Names",
"x_generator": {
"engine": "vulncheck-endgame"
}
}
},
"cveMetadata": {
"assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"assignerShortName": "VulnCheck",
"cveId": "CVE-2026-116137",
"datePublished": "2026-10-25T11:51:01.980Z",
"dateReserved": "2026-10-25T11:15:17.810Z",
"dateUpdated": "2026-10-25T11:51:01.980Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-115905 (GCVE-0-2026-115905)
Vulnerability from cvelistv5 – Published: 2026-10-26 16:24 – Updated: 2026-10-26 16:24| URL | Tags |
|---|---|
| https://github.com/zip-rs/zip2/security/advisorie… | x_refsource_CONFIRM |
| https://github.com/zip-rs/zip2/commit/8068ab480cc… | x_refsource_MISC |
| https://github.com/zip-rs/zip2/releases/tag/v9.0.5 | x_refsource_MISC |
{
"containers": {
"cna": {
"affected": [
{
"product": "zip2",
"vendor": "zip-rs",
"versions": [
{
"status": "affected",
"version": "\u003c 9.0.5"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "zip is a zip library for Rust that supports reading and writing simple ZIP files. Through 9.0.4, ZipArchive treats Central Directory File Header filenames as authoritative while ZipStreamReader extracts using Local File Header filenames without reconciling the duplicate metadata in src/read/stream.rs. A crafted archive can therefore appear benign to a component that inspects the central directory but cause a streaming extractor to write a different attacker-selected path and content, potentially overwriting files used by a downstream service. This issue is fixed in version 9.0.5."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 10,
"baseSeverity": "CRITICAL",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "LOW",
"subConfidentialityImpact": "HIGH",
"subIntegrityImpact": "HIGH",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:L",
"version": "4.0",
"vulnAvailabilityImpact": "HIGH",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "HIGH"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-20",
"description": "CWE-20: Improper Input Validation",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-436",
"description": "CWE-436: Interpretation Conflict",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-26T16:24:44.760Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/zip-rs/zip2/security/advisories/GHSA-m665-v7pm-7grj",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/zip-rs/zip2/security/advisories/GHSA-m665-v7pm-7grj"
},
{
"name": "https://github.com/zip-rs/zip2/commit/8068ab480ccf8daa7411424e365fcdbe6d09443e",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zip-rs/zip2/commit/8068ab480ccf8daa7411424e365fcdbe6d09443e"
},
{
"name": "https://github.com/zip-rs/zip2/releases/tag/v9.0.5",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zip-rs/zip2/releases/tag/v9.0.5"
}
],
"source": {
"advisory": "GHSA-m665-v7pm-7grj",
"discovery": "UNKNOWN"
},
"title": "zip: Critical Parser Differential \u0026 Security Control Bypass via Dual-Header Inconsistencies (Zip Cloaking) Leading to Arbitrary File Overwrite \u0026 RCE"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-115905",
"datePublished": "2026-10-26T16:24:44.760Z",
"dateReserved": "2026-10-23T20:21:45.106Z",
"dateUpdated": "2026-10-26T16:24:44.760Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-115700 (GCVE-0-2026-115700)
Vulnerability from cvelistv5 – Published: 2026-10-26 13:49 – Updated: 2026-10-26 13:49| URL | Tags |
|---|---|
| https://github.com/benoitc/hackney/releases/tag/4.9.0 | vendor-advisoryrelated |
| https://cna.erlef.org/cves/CVE-2026-115700.html | related |
| https://osv.dev/vulnerability/EEF-CVE-2026-115700 | related |
| https://github.com/benoitc/hackney/pull/987 | related |
| https://github.com/benoitc/hackney/commit/452620a… | related |
| https://github.com/benoitc/hackney/commit/f19561a… | patch |
{
"containers": {
"cna": {
"affected": [
{
"collectionURL": "https://repo.hex.pm",
"cpes": [
"cpe:2.3:a:benoitc:hackney:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"hackney_url"
],
"packageName": "hackney",
"packageURL": "pkg:hex/hackney",
"product": "hackney",
"programFiles": [
"src/hackney_url.erl"
],
"programRoutines": [
{
"name": "hackney_url:normalize/2"
}
],
"repo": "https://github.com/benoitc/hackney",
"vendor": "benoitc",
"versions": [
{
"lessThan": "4.9.0",
"status": "affected",
"version": "4.0.1",
"versionType": "semver"
}
]
},
{
"collectionURL": "https://github.com",
"cpes": [
"cpe:2.3:a:benoitc:hackney:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"hackney_url"
],
"packageName": "benoitc/hackney",
"packageURL": "pkg:github/benoitc/hackney",
"product": "hackney",
"programFiles": [
"src/hackney_url.erl"
],
"programRoutines": [
{
"name": "hackney_url:normalize/2"
}
],
"repo": "https://github.com/benoitc/hackney",
"vendor": "benoitc",
"versions": [
{
"lessThan": "f19561a0b422376348c91537e51377ab7325f4ee",
"status": "affected",
"version": "452620a92ec1da2e6b4862a049a2a4f04b42068f",
"versionType": "git"
}
]
}
],
"configurations": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eThe application passes URLs that an untrusted party can influence to hackney and relies on its own host allowlist, built on \u003ccode\u003euri_string:parse/1\u003c/code\u003e or \u003ccode\u003einet:parse_address/1\u003c/code\u003e, to keep requests away from internal addresses.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "The application passes URLs that an untrusted party can influence to hackney and relies on its own host allowlist, built on `uri_string:parse/1` or `inet:parse_address/1`, to keep requests away from internal addresses."
}
],
"value": "The application passes URLs that an untrusted party can influence to hackney and relies on its own host allowlist, built on uri_string:parse/1 or inet:parse_address/1, to keep requests away from internal addresses."
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:benoitc:hackney:*:*:*:*:*:*:*:*",
"versionEndExcluding": "4.9.0",
"versionStartIncluding": "4.0.1",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Eurico Nicacio"
},
{
"lang": "en",
"type": "reporter",
"value": "Eurico Nicacio"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Benoit Chesneau"
},
{
"lang": "en",
"type": "coordinator",
"value": "Jonatan M\u00e4nnchen / EEF"
}
],
"dateAssigned": "2026-10-26T10:12:09.000Z",
"datePublic": "2026-10-25T00:00:00.000Z",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eInterpretation Conflict vulnerability in \u003ccode\u003ehackney_url\u003c/code\u003e in benoitc hackney allows Server Side Request Forgery via a percent-encoded bracketed IPv6 literal or an IP literal with a trailing dot. A host such as \u003ccode\u003e%5B%3A%3Affff%3A127%2E0%2E0%2E1%5D\u003c/code\u003e (decoding to \u003ccode\u003e[::ffff:127.0.0.1]\u003c/code\u003e) or \u003ccode\u003e127.0.0.1.\u003c/code\u003e is not an IP address to a caller\u0027s allowlist built on \u003ccode\u003euri_string:parse/1\u003c/code\u003e and \u003ccode\u003einet:parse_address/1\u003c/code\u003e, while hackney connects to the address it denotes. The same applies to a \u003ccode\u003eLocation\u003c/code\u003e target when redirects are followed.\u003c/p\u003e\n\u003cp\u003eThe IP-literal gate that \u003ccode\u003ehackney_url:normalize/2\u003c/code\u003e applies to a percent-decoded host, added to close the percent-encoded IP bypass of CVE-2026-47076, passes the decoded value to \u003ccode\u003einet_parse:address/1\u003c/code\u003e as is. The connect path in \u003ccode\u003ehackney_happy:parse_address/1\u003c/code\u003e drops a surrounding bracket pair, and the resolver ignores a trailing dot, so both forms pass the gate and still reach the literal address. Domain names with a trailing dot and unencoded IPv6 literals are not affected.\u003c/p\u003e\n\u003cp\u003eThis issue affects hackney: from 4.0.1 before 4.9.0.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "Interpretation Conflict vulnerability in `hackney_url` in benoitc hackney allows Server Side Request Forgery via a percent-encoded bracketed IPv6 literal or an IP literal with a trailing dot. A host such as `%5B%3A%3Affff%3A127%2E0%2E0%2E1%5D` (decoding to `[::ffff:127.0.0.1]`) or `127.0.0.1.` is not an IP address to a caller\u0027s allowlist built on `uri_string:parse/1` and `inet:parse_address/1`, while hackney connects to the address it denotes. The same applies to a `Location` target when redirects are followed.\n\nThe IP-literal gate that `hackney_url:normalize/2` applies to a percent-decoded host, added to close the percent-encoded IP bypass of CVE-2026-47076, passes the decoded value to `inet_parse:address/1` as is. The connect path in `hackney_happy:parse_address/1` drops a surrounding bracket pair, and the resolver ignores a trailing dot, so both forms pass the gate and still reach the literal address. Domain names with a trailing dot and unencoded IPv6 literals are not affected.\n\nThis issue affects hackney: from 4.0.1 before 4.9.0."
}
],
"value": "Interpretation Conflict vulnerability in hackney_url in benoitc hackney allows Server Side Request Forgery via a percent-encoded bracketed IPv6 literal or an IP literal with a trailing dot. A host such as %5B%3A%3Affff%3A127%2E0%2E0%2E1%5D (decoding to [::ffff:127.0.0.1]) or 127.0.0.1. is not an IP address to a caller\u0027s allowlist built on uri_string:parse/1 and inet:parse_address/1, while hackney connects to the address it denotes. The same applies to a Location target when redirects are followed.\n\nThe IP-literal gate that hackney_url:normalize/2 applies to a percent-decoded host, added to close the percent-encoded IP bypass of CVE-2026-47076, passes the decoded value to inet_parse:address/1 as is. The connect path in hackney_happy:parse_address/1 drops a surrounding bracket pair, and the resolver ignores a trailing dot, so both forms pass the gate and still reach the literal address. Domain names with a trailing dot and unencoded IPv6 literals are not affected.\n\nThis issue affects hackney: from 4.0.1 before 4.9.0."
}
],
"impacts": [
{
"capecId": "CAPEC-664",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eAn application that checks user-supplied URLs against an IP allowlist before handing them to hackney can be made to request loopback, link-local metadata and private-network addresses that the allowlist rejects when they are written plainly.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "An application that checks user-supplied URLs against an IP allowlist before handing them to hackney can be made to request loopback, link-local metadata and private-network addresses that the allowlist rejects when they are written plainly."
}
],
"value": "An application that checks user-supplied URLs against an IP allowlist before handing them to hackney can be made to request loopback, link-local metadata and private-network addresses that the allowlist rejects when they are written plainly."
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "LOCAL",
"baseScore": 6.9,
"baseSeverity": "MEDIUM",
"privilegesRequired": "NONE",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "HIGH",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "NONE",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-436",
"description": "CWE-436 Interpretation Conflict",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-918",
"description": "CWE-918 Server-Side Request Forgery (SSRF)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-26T13:49:02.744Z",
"orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"shortName": "EEF"
},
"references": [
{
"name": "hackney 4.9.0 release notes",
"tags": [
"vendor-advisory",
"related"
],
"url": "https://github.com/benoitc/hackney/releases/tag/4.9.0"
},
{
"name": "EEF CNA record for CVE-2026-115700",
"tags": [
"related"
],
"url": "https://cna.erlef.org/cves/CVE-2026-115700.html"
},
{
"name": "OSV record EEF-CVE-2026-115700",
"tags": [
"related"
],
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-115700"
},
{
"name": "Refuse bracketed and trailing-dot IP literals in normalize/2 (benoitc/hackney#987)",
"tags": [
"related"
],
"url": "https://github.com/benoitc/hackney/pull/987"
},
{
"name": "Introducing commit 452620a in benoitc/hackney",
"tags": [
"related"
],
"url": "https://github.com/benoitc/hackney/commit/452620a92ec1da2e6b4862a049a2a4f04b42068f"
},
{
"name": "Fix commit f19561a in benoitc/hackney",
"tags": [
"patch"
],
"url": "https://github.com/benoitc/hackney/commit/f19561a0b422376348c91537e51377ab7325f4ee"
}
],
"source": {
"discovery": "EXTERNAL"
},
"title": "SSRF allowlist bypass via percent-encoded bracketed IPv6 or trailing-dot IP literal in hackney",
"workarounds": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eRun the allowlist on the host that \u003ccode\u003ehackney_url:normalize/1\u003c/code\u003e returns for the parsed URL, and strip a surrounding bracket pair and a trailing dot from it before the IP check, so the check sees the same address the connect path uses.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "Run the allowlist on the host that `hackney_url:normalize/1` returns for the parsed URL, and strip a surrounding bracket pair and a trailing dot from it before the IP check, so the check sees the same address the connect path uses."
}
],
"value": "Run the allowlist on the host that hackney_url:normalize/1 returns for the parsed URL, and strip a surrounding bracket pair and a trailing dot from it before the IP check, so the check sees the same address the connect path uses."
}
],
"x_technicalAnalysis": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003e\u003cstrong\u003e1. The gate.\u003c/strong\u003e \u003ccode\u003ehackney_url:normalize/2\u003c/code\u003e in \u003ccode\u003esrc/hackney_url.erl\u003c/code\u003e percent-decodes a host that is not already an IP literal and raises \u003ccode\u003einvalid_url_host\u003c/code\u003e when \u003ccode\u003einet_parse:address/1\u003c/code\u003e accepts the decoded value. This closed the plain percent-encoded IP case.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2. What the connect path accepts.\u003c/strong\u003e \u003ccode\u003ehackney_happy:parse_address/1\u003c/code\u003e removes a surrounding \u003ccode\u003e[...]\u003c/code\u003e pair before calling \u003ccode\u003einet:parse_address/1\u003c/code\u003e, and the resolver treats a trailing dot as the root label. Neither form is accepted by \u003ccode\u003einet_parse:address/1\u003c/code\u003e, so \u003ccode\u003e[::ffff:127.0.0.1]\u003c/code\u003e and \u003ccode\u003e127.0.0.1.\u003c/code\u003e pass the gate.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e3. Result.\u003c/strong\u003e A percent-encoded bracketed IPv6 literal such as \u003ccode\u003e%5B%3A%3Affff%3A127%2E0%2E0%2E1%5D\u003c/code\u003e, or an IPv4 literal with a trailing dot, is not an IP address to a caller\u0027s check based on \u003ccode\u003euri_string:parse/1\u003c/code\u003e and \u003ccode\u003einet:parse_address/1\u003c/code\u003e, but hackney connects to the address it denotes. The same applies to a \u003ccode\u003eLocation\u003c/code\u003e target when redirects are followed. The fix strips one bracket pair and one trailing dot in \u003ccode\u003eip_candidate/1\u003c/code\u003e before the gate.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "**1. The gate.** `hackney_url:normalize/2` in `src/hackney_url.erl` percent-decodes a host that is not already an IP literal and raises `invalid_url_host` when `inet_parse:address/1` accepts the decoded value. This closed the plain percent-encoded IP case.\n\n**2. What the connect path accepts.** `hackney_happy:parse_address/1` removes a surrounding `[...]` pair before calling `inet:parse_address/1`, and the resolver treats a trailing dot as the root label. Neither form is accepted by `inet_parse:address/1`, so `[::ffff:127.0.0.1]` and `127.0.0.1.` pass the gate.\n\n**3. Result.** A percent-encoded bracketed IPv6 literal such as `%5B%3A%3Affff%3A127%2E0%2E0%2E1%5D`, or an IPv4 literal with a trailing dot, is not an IP address to a caller\u0027s check based on `uri_string:parse/1` and `inet:parse_address/1`, but hackney connects to the address it denotes. The same applies to a `Location` target when redirects are followed. The fix strips one bracket pair and one trailing dot in `ip_candidate/1` before the gate."
}
],
"value": "1. The gate. hackney_url:normalize/2 in src/hackney_url.erl percent-decodes a host that is not already an IP literal and raises invalid_url_host when inet_parse:address/1 accepts the decoded value. This closed the plain percent-encoded IP case.\n\n2. What the connect path accepts. hackney_happy:parse_address/1 removes a surrounding [...] pair before calling inet:parse_address/1, and the resolver treats a trailing dot as the root label. Neither form is accepted by inet_parse:address/1, so [::ffff:127.0.0.1] and 127.0.0.1. pass the gate.\n\n3. Result. A percent-encoded bracketed IPv6 literal such as %5B%3A%3Affff%3A127%2E0%2E0%2E1%5D, or an IPv4 literal with a trailing dot, is not an IP address to a caller\u0027s check based on uri_string:parse/1 and inet:parse_address/1, but hackney connects to the address it denotes. The same applies to a Location target when redirects are followed. The fix strips one bracket pair and one trailing dot in ip_candidate/1 before the gate."
}
]
}
},
"cveMetadata": {
"assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"assignerShortName": "EEF",
"cveId": "CVE-2026-115700",
"datePublished": "2026-10-26T13:49:02.744Z",
"dateReserved": "2026-10-25T17:30:02.231Z",
"dateUpdated": "2026-10-26T13:49:02.744Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-114656 (GCVE-0-2026-114656)
Vulnerability from cvelistv5 – Published: 2026-10-22 01:43 – Updated: 2026-10-22 01:43- CWE-436 - Interpretation Conflict
| URL | Tags |
|---|---|
| https://github.com/traefik/traefik/security/advis… | vendor-advisory |
| https://www.vulncheck.com/advisories/traefik-befo… | third-party-advisory |
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"packageURL": "pkg:golang/github.com/traefik/traefik/v2",
"product": "traefik",
"vendor": "traefik",
"versions": [
{
"lessThan": "2.11.58",
"status": "affected",
"version": "0",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "2.11.58",
"versionType": "semver"
}
]
},
{
"defaultStatus": "unaffected",
"packageURL": "pkg:golang/github.com/traefik/traefik/v3",
"product": "traefik",
"vendor": "traefik",
"versions": [
{
"lessThan": "3.7.13",
"status": "affected",
"version": "3.0.0",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "3.7.13",
"versionType": "semver"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:traefik:traefik:*:*:*:*:*:*:*:*",
"versionEndExcluding": "2.11.58",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
},
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:traefik:traefik:*:*:*:*:*:*:*:*",
"versionEndExcluding": "3.7.13",
"versionStartIncluding": "3.0.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"datePublic": "2026-10-07T00:00:00.000Z",
"descriptions": [
{
"lang": "en",
"value": "Traefik before 2.11.58 and 3.7.13 contains an authentication bypass vulnerability that allows unauthenticated clients to skip client-certificate checks because negated Host matchers are counted as served domains. Attackers can reach backends protected by RequireAndVerifyClientCert when a router rule with !Host() creates a TLS options conflict that falls back to the default options."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 6.9,
"baseSeverity": "MEDIUM",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "HIGH",
"subIntegrityImpact": "LOW",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:L/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "NONE"
},
"format": "CVSS"
},
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 7.5,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:L/A:N",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-436",
"description": "Interpretation Conflict",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-22T01:43:42.056Z",
"orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"shortName": "VulnCheck"
},
"references": [
{
"name": "GitHub Security Advisory (GHSA-2272-4vv8-65ww)",
"tags": [
"vendor-advisory"
],
"url": "https://github.com/traefik/traefik/security/advisories/GHSA-2272-4vv8-65ww"
},
{
"name": "VulnCheck Advisory: Traefik before 2.11.58 and 3.7.13 mTLS Bypass via Negated Host Matcher",
"tags": [
"third-party-advisory"
],
"url": "https://www.vulncheck.com/advisories/traefik-before-2.11.58-and-3.7.13-mtls-bypass-via-negated-host-matcher"
}
],
"title": "Traefik before 2.11.58 and 3.7.13 mTLS Bypass via Negated Host Matcher",
"x_generator": {
"engine": "vulncheck-endgame"
}
}
},
"cveMetadata": {
"assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"assignerShortName": "VulnCheck",
"cveId": "CVE-2026-114656",
"datePublished": "2026-10-22T01:43:42.056Z",
"dateReserved": "2026-10-21T21:59:05.256Z",
"dateUpdated": "2026-10-22T01:43:42.056Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-114131 (GCVE-0-2026-114131)
Vulnerability from cvelistv5 – Published: 2026-10-21 17:41 – Updated: 2026-10-21 17:41| URL | Tags |
|---|---|
| https://github.com/nuxt/nuxt/security/advisories/… | x_refsource_CONFIRM |
| https://github.com/nuxt/nuxt/commit/81f86ac5ee82b… | x_refsource_MISC |
| https://github.com/nuxt/nuxt/commit/9123ed850c468… | x_refsource_MISC |
| https://github.com/nuxt/nuxt/releases/tag/v3.21.11 | x_refsource_MISC |
| https://github.com/nuxt/nuxt/releases/tag/v4.5.2 | x_refsource_MISC |
{
"containers": {
"cna": {
"affected": [
{
"product": "nuxt",
"vendor": "nuxt",
"versions": [
{
"status": "affected",
"version": "\u003e= 4.0.0, \u003c 4.4.4"
},
{
"status": "affected",
"version": "\u003e= 3.11.0, \u003c 3.21.4"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Nuxt is an open-source web development framework for Vue.js. From 3.11.0 until 3.21.4 and 4.4.4, Nuxt compares route-rule keys with the raw request path while route resolution decodes dynamic and catch-all parameters, allowing a percent-encoded segment to resolve to a protected page without matching the routeRules entry intended for that path. As a result, appMiddleware can be skipped during server rendering and an unauthenticated requester can receive the gated page and its SSR data. The same mismatch affects app-manifest rules including redirect, appLayout, ssr, prerender, and payload flags derived from cache, isr, and swr. This vulnerability is fixed in 4.4.4 and 3.21.4."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 6.5,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-436",
"description": "CWE-436: Interpretation Conflict",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-863",
"description": "CWE-863: Incorrect Authorization",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-21T17:41:24.016Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/nuxt/nuxt/security/advisories/GHSA-6gq8-jgmh-3ffp",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/nuxt/nuxt/security/advisories/GHSA-6gq8-jgmh-3ffp"
},
{
"name": "https://github.com/nuxt/nuxt/commit/81f86ac5ee82bb1a9b887e59f3bc84624d711497",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/nuxt/nuxt/commit/81f86ac5ee82bb1a9b887e59f3bc84624d711497"
},
{
"name": "https://github.com/nuxt/nuxt/commit/9123ed850c468a7424a868c20d0d49a5507d32e5",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/nuxt/nuxt/commit/9123ed850c468a7424a868c20d0d49a5507d32e5"
},
{
"name": "https://github.com/nuxt/nuxt/releases/tag/v3.21.11",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/nuxt/nuxt/releases/tag/v3.21.11"
},
{
"name": "https://github.com/nuxt/nuxt/releases/tag/v4.5.2",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/nuxt/nuxt/releases/tag/v4.5.2"
}
],
"source": {
"advisory": "GHSA-6gq8-jgmh-3ffp",
"discovery": "UNKNOWN"
},
"title": "Nuxt: Route rules are matched against the raw request path, so a percent-encoded segment can bypass `appMiddleware` on dynamic and catch-all routes"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-114131",
"datePublished": "2026-10-21T17:41:24.016Z",
"dateReserved": "2026-10-20T21:53:58.473Z",
"dateUpdated": "2026-10-21T17:41:24.016Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-114116 (GCVE-0-2026-114116)
Vulnerability from cvelistv5 – Published: 2026-10-21 00:37 – Updated: 2026-10-21 00:37- CWE-436 - Interpretation Conflict
| URL | Tags |
|---|---|
| https://github.com/vyperlang/vyper/security/advis… | vendor-advisory |
| https://www.vulncheck.com/advisories/vyper-throug… | third-party-advisory |
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"packageURL": "pkg:pypi/vyper",
"product": "vyper",
"vendor": "vyperlang",
"versions": [
{
"lessThan": "0.1.0b17",
"status": "affected",
"version": "0.1.0b1",
"versionType": "python"
},
{
"status": "unaffected",
"version": "0.1.0b17",
"versionType": "python"
}
]
},
{
"defaultStatus": "unaffected",
"packageURL": "pkg:pypi/vyper",
"product": "vyper",
"vendor": "vyperlang",
"versions": [
{
"lessThanOrEqual": "0.5.0b1",
"status": "affected",
"version": "0.4.1",
"versionType": "python"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:vyperlang:vyper:*:*:*:*:*:*:*:*",
"versionEndExcluding": "0.1.0b17",
"versionStartIncluding": "0.1.0b1",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
},
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:vyperlang:vyper:*:*:*:*:*:*:*:*",
"versionEndIncluding": "0.5.0b1",
"versionStartIncluding": "0.4.1",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "reporter",
"value": "DELENE-TCHIO-ROMUALD"
}
],
"datePublic": "2026-10-06T00:00:00.000Z",
"descriptions": [
{
"lang": "en",
"value": "Vyper 0.1.0b1 before 0.1.0b17 and 0.4.1 through 0.5.0b1 builds its source-line table with str.splitlines(), which treats characters like form feed and U+2028 as line breaks the Python parser ignores, so numeric literals are classified and validated from shifted source text. An attacker contributing source code can hide these characters in comments, strings or indentation to silently change address, integer or decimal constants."
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 6,
"baseSeverity": "MEDIUM",
"exploitMaturity": "NOT_DEFINED",
"privilegesRequired": "NONE",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "PASSIVE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "HIGH",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS"
},
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 5.3,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "NONE",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:N",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-436",
"description": "Interpretation Conflict",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-21T00:37:13.988Z",
"orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"shortName": "VulnCheck"
},
"references": [
{
"name": "GitHub Security Advisory (GHSA-wvx7-39qj-2g9v)",
"tags": [
"vendor-advisory"
],
"url": "https://github.com/vyperlang/vyper/security/advisories/GHSA-wvx7-39qj-2g9v"
},
{
"name": "VulnCheck Advisory: Vyper through 0.5.0b1 Literal Value Manipulation via Line Separators",
"tags": [
"third-party-advisory"
],
"url": "https://www.vulncheck.com/advisories/vyper-through-0.5-0b1-literal-value-manipulation-via-line-separators"
}
],
"title": "Vyper through 0.5.0b1 Literal Value Manipulation via Line Separators",
"x_generator": {
"engine": "vulncheck-endgame"
}
}
},
"cveMetadata": {
"assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"assignerShortName": "VulnCheck",
"cveId": "CVE-2026-114116",
"datePublished": "2026-10-21T00:37:13.988Z",
"dateReserved": "2026-10-20T21:48:58.503Z",
"dateUpdated": "2026-10-21T00:37:13.988Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-114104 (GCVE-0-2026-114104)
Vulnerability from cvelistv5 – Published: 2026-10-21 00:37 – Updated: 2026-10-21 00:37- CWE-436 - Interpretation Conflict
| URL | Tags |
|---|---|
| https://github.com/cthackers/adm-zip/security/adv… | vendor-advisory |
| https://www.vulncheck.com/advisories/adm-zip-befo… | third-party-advisory |
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"packageURL": "pkg:npm/adm-zip",
"product": "adm-zip",
"vendor": "cthackers",
"versions": [
{
"lessThan": "0.6.1",
"status": "affected",
"version": "0",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "0.6.1",
"versionType": "semver"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:adm-zip_project:adm-zip:*:*:*:*:*:*:*:*",
"versionEndExcluding": "0.6.1",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "reporter",
"value": "zikk090"
}
],
"datePublic": "2026-09-11T00:00:00.000Z",
"descriptions": [
{
"lang": "en",
"value": "adm-zip before 0.6.1 contains an inconsistent entry resolution vulnerability that allows attackers to bypass content validation by supplying ZIP archives with duplicate entry names. Attackers can craft archives where getEntry() returns the last duplicate while extractAllTo() writes the first, causing unvalidated bytes to be written to disk."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "HIGH",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 8.2,
"baseSeverity": "HIGH",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "HIGH"
},
"format": "CVSS"
},
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 5.9,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "NONE",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-436",
"description": "Interpretation Conflict",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-21T00:37:05.291Z",
"orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"shortName": "VulnCheck"
},
"references": [
{
"name": "GitHub Security Advisory (GHSA-p634-w6r4-rjp2)",
"tags": [
"vendor-advisory"
],
"url": "https://github.com/cthackers/adm-zip/security/advisories/GHSA-p634-w6r4-rjp2"
},
{
"name": "VulnCheck Advisory: adm-zip before 0.6.1 Duplicate ZIP Entry Name Validation Bypass",
"tags": [
"third-party-advisory"
],
"url": "https://www.vulncheck.com/advisories/adm-zip-before-0.6.1-duplicate-zip-entry-name-validation-bypass"
}
],
"title": "adm-zip before 0.6.1 Duplicate ZIP Entry Name Validation Bypass",
"x_generator": {
"engine": "vulncheck-endgame"
}
}
},
"cveMetadata": {
"assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"assignerShortName": "VulnCheck",
"cveId": "CVE-2026-114104",
"datePublished": "2026-10-21T00:37:05.291Z",
"dateReserved": "2026-10-20T21:47:43.313Z",
"dateUpdated": "2026-10-21T00:37:05.291Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-112712 (GCVE-0-2026-112712)
Vulnerability from cvelistv5 – Published: 2026-10-20 20:43 – Updated: 2026-10-20 20:43- CWE-436 - Interpretation Conflict
| Vendor | Product | Version | |
|---|---|---|---|
| @fastify/middie | @fastify/middie |
Affected:
9.0.0 , < 9.3.6
(semver)
Unaffected: 9.3.6 (semver) |
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"packageURL": "pkg:npm/@fastify/middie",
"product": "@fastify/middie",
"vendor": "@fastify/middie",
"versions": [
{
"lessThan": "9.3.6",
"status": "affected",
"version": "9.0.0",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "9.3.6",
"versionType": "semver"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "reporter",
"value": "zachariah-mithani"
},
{
"lang": "en",
"type": "remediation developer",
"value": "mcollina"
},
{
"lang": "en",
"type": "remediation developer",
"value": "UlisesGascon"
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "@fastify/middie is the Express-style middleware engine for Fastify. In versions from 9.0.0 through 9.3.5, the use() function joined a path-scoped middleware\u0027s mount path to the plugin scope prefix in a way that could diverge from the path Fastify\u0027s router serves, most often when the scope prefix ended in a slash, and also for array mount paths and for mount paths written without a leading slash. When the two paths disagreed, the middleware was silently skipped while the route handler still ran, so path-scoped middleware such as authentication, authorization, or rate limiting could be bypassed by a single unauthenticated request. The issue is fixed in @fastify/middie 9.3.6, and users should upgrade to 9.3.6 or later. As a workaround, enforce authorization in a Fastify hook such as preHandler that runs after the router has resolved the request."
}
],
"value": "@fastify/middie is the Express-style middleware engine for Fastify. In versions from 9.0.0 through 9.3.5, the use() function joined a path-scoped middleware\u0027s mount path to the plugin scope prefix in a way that could diverge from the path Fastify\u0027s router serves, most often when the scope prefix ended in a slash, and also for array mount paths and for mount paths written without a leading slash. When the two paths disagreed, the middleware was silently skipped while the route handler still ran, so path-scoped middleware such as authentication, authorization, or rate limiting could be bypassed by a single unauthenticated request. The issue is fixed in @fastify/middie 9.3.6, and users should upgrade to 9.3.6 or later. As a workaround, enforce authorization in a Fastify hook such as preHandler that runs after the router has resolved the request."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 9.1,
"baseSeverity": "CRITICAL",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N",
"version": "3.1"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-436",
"description": "CWE-436: Interpretation Conflict",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-20T20:43:48.681Z",
"orgId": "ce714d77-add3-4f53-aff5-83d477b104bb",
"shortName": "openjs"
},
"references": [
{
"url": "https://github.com/fastify/middie/security/advisories/GHSA-5p92-8765-9fv8"
},
{
"url": "https://cna.openjsf.org/security-advisories.html"
}
],
"title": "@fastify/middie vulnerable to path-scoped middleware bypass via scope prefix mismatch",
"x_generator": {
"engine": "cve-kit 1.0.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "ce714d77-add3-4f53-aff5-83d477b104bb",
"assignerShortName": "openjs",
"cveId": "CVE-2026-112712",
"datePublished": "2026-10-20T20:43:48.681Z",
"dateReserved": "2026-10-19T17:43:39.048Z",
"dateUpdated": "2026-10-20T20:43:48.681Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-110682 (GCVE-0-2026-110682)
Vulnerability from cvelistv5 – Published: 2026-10-19 18:12 – Updated: 2026-10-19 18:12- CWE-436 - Interpretation Conflict
| URL | Tags |
|---|---|
| https://github.com/rurban/Cpanel-JSON-XS/commit/f… | patch |
| https://metacpan.org/release/RURBAN/Cpanel-JSON-X… | release-notes |
{
"containers": {
"cna": {
"affected": [
{
"collectionURL": "https://cpan.org/modules",
"defaultStatus": "unaffected",
"modules": [
"Cpanel::JSON::XS"
],
"packageName": "Cpanel-JSON-XS",
"packageURL": "pkg:cpan/Cpanel-JSON-XS",
"programFiles": [
"XS.xs"
],
"programRoutines": [
{
"name": "Cpanel::JSON::XS::incr_parse"
}
],
"repo": "https://github.com/rurban/Cpanel-JSON-XS",
"versions": [
{
"lessThan": "4.80",
"status": "affected",
"version": "4.42",
"versionType": "custom"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Cpanel::JSON::XS versions from 4.42 before 4.80 for Perl let input chunking change the decoded value of top-level numbers in incr_parse.\n\nallow_nonref is enabled by default and incr_parse inherits it. A top-level number, true, false or null has no closing delimiter, so the incremental parser decodes whatever has arrived. The bytes 12 decode as one value when read together, but as 1 and then 2 when split across two reads.\n\nA peer that can influence read boundaries can change how many messages a stream consumer decodes and what values they carry."
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-436",
"description": "CWE-436 Interpretation Conflict",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-19T18:12:09.582Z",
"orgId": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"shortName": "CPANSec"
},
"references": [
{
"tags": [
"patch"
],
"url": "https://github.com/rurban/Cpanel-JSON-XS/commit/f632d6690d82c14cd2d76d648805325201c52b83.patch"
},
{
"tags": [
"release-notes"
],
"url": "https://metacpan.org/release/RURBAN/Cpanel-JSON-XS-4.80/changes"
}
],
"solutions": [
{
"lang": "en",
"value": "Upgrade to Cpanel-JSON-XS 4.80 or later."
}
],
"source": {
"discovery": "UNKNOWN"
},
"timeline": [
{
"lang": "en",
"time": "2026-10-14T00:00:00.000Z",
"value": "Version 4.80 released with fix."
}
],
"title": "Cpanel::JSON::XS versions from 4.42 before 4.80 for Perl let input chunking change the decoded value of top-level numbers in incr_parse",
"x_generator": {
"engine": "cpansec-cna-tool 0.1"
}
}
},
"cveMetadata": {
"assignerOrgId": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"assignerShortName": "CPANSec",
"cveId": "CVE-2026-110682",
"datePublished": "2026-10-19T18:12:09.582Z",
"dateReserved": "2026-10-14T13:26:00.734Z",
"dateUpdated": "2026-10-19T18:12:09.582Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-110206 (GCVE-0-2026-110206)
Vulnerability from cvelistv5 – Published: 2026-10-13 18:49 – Updated: 2026-10-16 22:27 Unsupported When Assigned- CWE-436 - Interpretation Conflict
| URL | Tags |
|---|---|
| https://github.com/7rah/oss-cve/blob/6adb836d24ca… | third-party-advisory |
| https://github.com/RooCodeInc/Roo-Code/blob/v3.54… | technical-description |
| https://www.vulncheck.com/advisories/roo-code-thr… | third-party-advisory |
| Vendor | Product | Version | |
|---|---|---|---|
| RooCodeInc | Roo-Code |
Affected:
0 , ≤ 3.54.0
(semver)
cpe:2.3:a:roocode:roo_code:*:*:*:*:*:*:*:* |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-110206",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-10-16T22:27:46.150785Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-10-16T22:27:58.356Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"packageURL": "pkg:github/RooCodeInc/Roo-Code",
"product": "Roo-Code",
"repo": "https://github.com/RooCodeInc/Roo-Code",
"vendor": "RooCodeInc",
"versions": [
{
"lessThanOrEqual": "3.54.0",
"status": "affected",
"version": "0",
"versionType": "semver"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:roocode:roo_code:*:*:*:*:*:*:*:*",
"versionEndIncluding": "3.54.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Minqiang Gui"
},
{
"lang": "en",
"type": "finder",
"value": "Siyu Lou"
}
],
"datePublic": "2026-10-13T00:00:00.000Z",
"descriptions": [
{
"lang": "en",
"value": "Roo Code through 3.54.0 contains a command approval bypass vulnerability in parseCommandLine() that allows attackers to auto-approve arbitrary shell commands by placing a command substitution in command position. Attackers using indirect prompt injection can submit commands like $(echo touch /tmp/x) that pass the echo allowlist check, causing the shell to execute the output without user approval."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 7.7,
"baseSeverity": "HIGH",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "PASSIVE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "HIGH",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "HIGH"
},
"format": "CVSS"
},
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 8.8,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-436",
"description": "Interpretation Conflict",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-13T18:49:58.125Z",
"orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"shortName": "VulnCheck"
},
"references": [
{
"name": "Researcher Disclosure",
"tags": [
"third-party-advisory"
],
"url": "https://github.com/7rah/oss-cve/blob/6adb836d24ca446fd168c3acdc4c170beb77fe0f/roocode-group16-output-as-command.md"
},
{
"tags": [
"technical-description"
],
"url": "https://github.com/RooCodeInc/Roo-Code/blob/v3.54.0/src/shared/parse-command.ts#L100-L172"
},
{
"name": "VulnCheck Advisory: Roo-Code through 3.54.0 Auto-Approve Bypass via Command Substitution at Command Position",
"tags": [
"third-party-advisory"
],
"url": "https://www.vulncheck.com/advisories/roo-code-through-3.54.0-auto-approve-bypass-via-command-substitution-at-command-position"
}
],
"tags": [
"unsupported-when-assigned"
],
"title": "Roo-Code through 3.54.0 Auto-Approve Bypass via Command Substitution at Command Position",
"x_generator": {
"engine": "vulncheck-endgame"
}
}
},
"cveMetadata": {
"assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"assignerShortName": "VulnCheck",
"cveId": "CVE-2026-110206",
"datePublished": "2026-10-13T18:49:58.125Z",
"dateReserved": "2026-10-13T17:58:35.677Z",
"dateUpdated": "2026-10-16T22:27:58.356Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
No mitigation information available for this CWE.
CAPEC-105: HTTP Request Splitting
An adversary abuses the flexibility and discrepancies in the parsing and interpretation of HTTP Request messages by different intermediary HTTP agents (e.g., load balancer, reverse proxy, web caching proxies, application firewalls, etc.) to split a single HTTP request into multiple unauthorized and malicious HTTP requests to a back-end HTTP agent (e.g., web server).
See CanPrecede relationships for possible consequences.
CAPEC-273: HTTP Response Smuggling
An adversary manipulates and injects malicious content in the form of secret unauthorized HTTP responses, into a single HTTP response from a vulnerable or compromised back-end HTTP agent (e.g., server).
See CanPrecede relationships for possible consequences.
CAPEC-34: HTTP Response Splitting
An adversary manipulates and injects malicious content, in the form of secret unauthorized HTTP responses, into a single HTTP response from a vulnerable or compromised back-end HTTP agent (e.g., web server) or into an already spoofed HTTP response from an adversary controlled domain/site.
See CanPrecede relationships for possible consequences.