CVE-2026-56813
Full vulnerability record from the local CVENow database.
Description
Improper Neutralization of Parameter/Argument Delimiters vulnerability in elixir-plug plug allows an attacker to inject or override HTTP cookie attributes. The Plug.Conn.Cookies.encode/2 function in lib/plug/conn/cookies.ex builds the Set-Cookie response header by interpolating the cookie value and its path, domain, same_site, and extra attributes directly into the header without neutralizing the ; delimiter that separates cookie attributes. An application that places attacker-controlled data into a cookie value or attribute (for example via Plug.Conn.put_resp_cookie/4 when reflecting a username or preference) lets an attacker inject a ; to append or override cookie attributes (such as Domain and Path scope, or dropping the Secure and HttpOnly flags), enabling cookie tossing and session fixation. Carriage return, line feed, and null bytes are rejected by Plug.Conn header validation, so HTTP response splitting is not possible, but attribute injection through ; is not prevented. This issue affects plug: from 0.1.0 before 1.16.6, from 1.17.0 before 1.17.4, from 1.18.0 before 1.18.5, from 1.19.1 before 1.19.5, and from 1.20.0 before 1.20.3.
View original CVE JSON
{
"id": "CVE-2026-56813",
"sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"published": "2026-07-10T13:16:20.663",
"lastModified": "2026-10-24T23:10:00.160",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "Improper Neutralization of Parameter/Argument Delimiters vulnerability in elixir-plug plug allows an attacker to inject or override HTTP cookie attributes.\n\nThe Plug.Conn.Cookies.encode/2 function in lib/plug/conn/cookies.ex builds the Set-Cookie response header by interpolating the cookie value and its path, domain, same_site, and extra attributes directly into the header without neutralizing the ; delimiter that separates cookie attributes.\n\nAn application that places attacker-controlled data into a cookie value or attribute (for example via Plug.Conn.put_resp_cookie/4 when reflecting a username or preference) lets an attacker inject a ; to append or override cookie attributes (such as Domain and Path scope, or dropping the Secure and HttpOnly flags), enabling cookie tossing and session fixation. Carriage return, line feed, and null bytes are rejected by Plug.Conn header validation, so HTTP response splitting is not possible, but attribute injection through ; is not prevented.\n\nThis issue affects plug: from 0.1.0 before 1.16.6, from 1.17.0 before 1.17.4, from 1.18.0 before 1.18.5, from 1.19.1 before 1.19.5, and from 1.20.0 before 1.20.3."
},
{
"lang": "es",
"value": "Vulnerabilidad de neutralización incorrecta de delimitadores de parámetro/argumento en el plug elixir-plug permite a un atacante inyectar o sobrescribir atributos de cookie HTTP.\n\nLa función Plug.Conn.Cookies.encode/2 en lib/plug/conn/cookies.ex construye el encabezado de respuesta Set-Cookie interpolando el valor de la cookie y sus atributos de ruta, dominio, same_site y extra directamente en el encabezado sin neutralizar el delimitador ’;’ que separa los atributos de la cookie.\n\nUna aplicación que coloca datos controlados por el atacante en un valor o atributo de cookie (por ejemplo, a través de Plug.Conn.put_resp_cookie/4 al reflejar un nombre de usuario o preferencia) permite a un atacante inyectar un ’;’ para añadir o sobrescribir atributos de cookie (como el alcance de Dominio y Ruta, o la eliminación de las banderas Secure y HttpOnly), lo que permite el ’cookie tossing’ y la fijación de sesión. El retorno de carro, el salto de línea y los bytes nulos son rechazados por la validación de encabezados de Plug.Conn, por lo que la división de respuesta HTTP no es posible, pero la inyección de atributos a través de ’;’ no se evita.\n\nEste problema afecta a plug: desde 0.1.0 antes de 1.16.6, desde 1.17.0 antes de 1.17.4, desde 1.18.0 antes de 1.18.5, desde 1.19.0 antes de 1.19.5, desde 1.20.0 antes de 1.20.3."
}
],
"affected": [
{
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"affectedData": [
{
"vendor": "elixir-plug",
"product": "plug",
"defaultStatus": "unaffected",
"collectionURL": "https://repo.hex.pm",
"packageName": "plug",
"cpes": [
"cpe:2.3:a:elixir-plug:plug:*:*:*:*:*:*:*:*"
],
"modules": [
"'Elixir.Plug.Conn.Cookies'",
"'Elixir.Plug.Conn'"
],
"programFiles": [
"lib/plug/conn/cookies.ex"
],
"programRoutines": [
{
"name": "'Elixir.Plug.Conn.Cookies':encode/2"
},
{
"name": "'Elixir.Plug.Conn':put_resp_cookie/4"
}
],
"repo": "https://github.com/elixir-plug/plug",
"packageURL": "pkg:hex/plug",
"versions": [
{
"version": "0.1.0",
"lessThan": "1.16.6",
"versionType": "semver",
"status": "affected"
},
{
"version": "1.17.0",
"lessThan": "1.17.4",
"versionType": "semver",
"status": "affected"
},
{
"version": "1.18.0",
"lessThan": "1.18.5",
"versionType": "semver",
"status": "affected"
},
{
"version": "1.19.1",
"lessThan": "1.19.5",
"versionType": "semver",
"status": "affected"
},
{
"version": "1.20.0",
"lessThan": "1.20.3",
"versionType": "semver",
"status": "affected"
}
]
},
{
"vendor": "elixir-plug",
"product": "plug",
"defaultStatus": "unaffected",
"collectionURL": "https://github.com",
"packageName": "elixir-plug/plug",
"cpes": [
"cpe:2.3:a:elixir-plug:plug:*:*:*:*:*:*:*:*"
],
"modules": [
"'Elixir.Plug.Conn.Cookies'",
"'Elixir.Plug.Conn'"
],
"programFiles": [
"lib/plug/conn/cookies.ex"
],
"programRoutines": [
{
"name": "'Elixir.Plug.Conn.Cookies':encode/2"
},
{
"name": "'Elixir.Plug.Conn':put_resp_cookie/4"
}
],
"repo": "https://github.com/elixir-plug/plug",
"packageURL": "pkg:github/elixir-plug/plug",
"versions": [
{
"version": "f26876aa67aaeb38e616638aa3efbcc2fe2906a5",
"lessThan": "*",
"versionType": "git",
"status": "affected",
"changes": [
{
"at": "3f00dfad4e20ba88472e315c90a25742bf178f8e",
"status": "unaffected"
},
{
"at": "a6d1248659022749869963fd302687165ecf8c8b",
"status": "unaffected"
},
{
"at": "4167981747fe9ce75f374b94a28861ae950ea992",
"status": "unaffected"
},
{
"at": "149d9ed68fee0b4f77efd1e835ce5d785856697b",
"status": "unaffected"
},
{
"at": "eceb8315ce9a31ef784943a95a8624ebd1bc7e06",
"status": "unaffected"
}
]
}
]
}
]
}
],
"metrics": {
"cvssMetricV40": [
{
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"type": "Secondary",
"cvssData": {
"version": "4.0",
"vectorString": "CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"baseScore": 2.1,
"baseSeverity": "LOW",
"attackVector": "LOCAL",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "LOW",
"vulnAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "LOW",
"subAvailabilityImpact": "NONE",
"exploitMaturity": "NOT_DEFINED",
"confidentialityRequirement": "NOT_DEFINED",
"integrityRequirement": "NOT_DEFINED",
"availabilityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"valueDensity": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED"
}
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-07-10T14:43:36.298825Z",
"id": "CVE-2026-56813",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-141"
}
]
}
],
"references": [
{
"url": "https://cna.erlef.org/cves/CVE-2026-56813.html",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/elixir-plug/plug/commit/149d9ed68fee0b4f77efd1e835ce5d785856697b",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/elixir-plug/plug/commit/3f00dfad4e20ba88472e315c90a25742bf178f8e",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/elixir-plug/plug/commit/4167981747fe9ce75f374b94a28861ae950ea992",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/elixir-plug/plug/commit/a6d1248659022749869963fd302687165ecf8c8b",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/elixir-plug/plug/commit/eceb8315ce9a31ef784943a95a8624ebd1bc7e06",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/elixir-plug/plug/commit/f26876aa67aaeb38e616638aa3efbcc2fe2906a5",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/elixir-plug/plug/security/advisories/GHSA-wpmj-jh88-rpgm",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-56813",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
}
]
}