Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessFind app passing untrusted input to makeCookie name/domain/path
-
DeliverySubmit crafted value containing a semicolon delimiter
-
ExploitserializeCookie writes injected attribute verbatim into Set-Cookie
-
ExecutionRFC 6265 honors last Domain, widening cookie scope
-
ImpactSession cookie exposed to parent/sibling domains
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Input neutralization, injection prevention
|
| Exploitation Conditions | Exploitation requires the calling application to pass attacker-controlled/untrusted values into the name, domain, or path arguments of @effect/platform's makeCookie(); applications that set these fields from application constants (the vendor-recommended workaround) are not affected. The injected semicolon lets an attacker append arbitrary cookie attributes - notably a broader Domain to widen scope, or SameSite=None or Max-Age, with the latter two only taking effect when the caller has not itself set those options. Limiting factors: the cookie value field is safe because it passes through encodeURIComponent (which encodes ';'), and CR/LF are rejected by the existing regex so HTTP header splitting is not possible - impact is confined to cookie attribute injection/scope widening. Affected: @effect/platform >=0.1.0 <0.97.1 and effect >=4.0.0-beta.0 <4.0.0-beta.103. |
| Impact | This is a medium-severity cookie attribute injection flaw (CWE-74), consistently rated CVSS 4.0 6.3 by the reporter, and my independent assessment agrees. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N, VC:L/VI:L, SC:L/SI:L) is internally coherent: it is network-reachable and needs no authentication or user interaction, but AT:P correctly flags that exploitation depends on a precondition outside the attacker's control - namely that the application wires untrusted input into makeCookie()'s name, domain, or path fields. There is no CISA KEV listing and no EPSS score in the supplied data, so there is no evidence of active or widespread exploitation. A public PoC reference exists - the GHSA advisory supplies a concrete worked payload ('legit.com; Domain=.parent.tld') and the patch PRs add test cases exercising the injection - but it is not verified as working standalone exploit code. The vuln.today decision label is 'this_month', not act_now/emergency, which aligns with the signals: a real but bounded issue warranting scheduled patching rather than crisis response. Net assessment: a genuine issue to fix this month, not a high-urgency emergency; the impact is limited to cookie scope widening / attribute addition (no header splitting, no RCE), and real-world exposure is gated on a non-default coding pattern. |
| Exploit ScenarioDerived | An application using @effect/platform builds a Set-Cookie header via makeCookie() and derives the cookie's domain, path, or name from untrusted input (e.g., a tenant/subdomain value from the request). An attacker submits a domain such as 'legit.com; Domain=.parent.tld', which serializeCookie() writes verbatim, so RFC 6265 §5.3 honors the last Domain and widens the cookie to the parent domain - exposing it to sibling subdomains, or silently adding SameSite=None/Max-Age when the caller did not set them. A public PoC-style worked example is published in the GHSA advisory, but no verified standalone exploit tool is cited. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Cookie attribute injection in the Effect TypeScript framework's makeCookie() lets an application that feeds untrusted strings into the cookie name, domain, or path fields serialize extra attributes into Set-Cookie headers. Affected releases are @effect/platform from 0.1.0 up to but excluding 0.97.1, and effect from 4.0.0-beta.0 up to but excluding 4.0.0-beta.103; a crafted domain such as "legit.com; Domain=.parent.tld" widens the cookie to a parent domain because RFC 6265 takes the last Domain occurrence, and SameSite=None or Max-Age can be appended but only when the caller has not set those options itself. No public exploit was identified at time of analysis, and vendor fixes ship in @effect/platform 0.97.1 and effect 4.0.0-beta.103.
RemediationAI
Vendor-released patch: upgrade @effect/platform to 0.97.1 and/or effect to 4.0.0-beta.103, as documented in advisory GHSA-chp3-j5qr-2vfr and the release tags for each package. The two fix pull requests are https://github.com/Effect-TS/effect/pull/6763 (v4) and https://github.com/Effect-TS/effect/pull/6765 (v3), with commits 4a57af24011db1d66e947289d2f7ffc2074696d2 and 5859b373b9be04d5037a594196b4743ad80379bd; the patch replaces the shared field-content regex with per-field validators that reject ';' and adds a validation step in toSetCookieHeaders() so malformed Cookie objects built via fromIterable or setCookie throw instead of being serialized. Where upgrading is not immediately possible, the vendor workaround is to never pass user input into the name, domain or path fields of makeCookie() and to set them from application constants; note that this requires auditing every call site, and any code path that derives those fields from request data (tenant subdomains, routing segments, user-chosen names) remains injectable. Because the value field is encoded with encodeURIComponent and CR/LF are already rejected, no additional header-sanitization control recovers the missing semicolon check.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Effect is a TypeScript framework distributed as cooperating npm packages, and the flaw lives in its unstable HTTP cookie module (packages/effect/src/unstable/http/Cookies.ts). makeCookie() and the later serializeCookie()/toSetCookieHeaders() path validated the name, domain and path fields with a single shared fieldContentRegExp that permitted the semicolon, which is the attribute separator in Set-Cookie. Since those fields were written verbatim into the header, a semicolon in any of them starts a new attribute; per RFC 6265 section 5.3 the last occurrence of a duplicated attribute wins, so an injected Domain overrides the legitimate one, and SameSite=None or Max-Age can be injected when the caller has not supplied them. This is an injection-class defect (CWE-74, also reported as CWE-20 for the missing input validation) rather than header splitting: the value field passes through encodeURIComponent, which encodes ';', and CR/LF were already rejected by the existing regex, so the impact is confined to cookie attribute injection and scope widening. The upstream fix (PRs #6763 for v4 and #6765 for v3) splits the shared regex into per-field validators (cookieNameRegExp, cookieDomainRegExp, cookiePathRegExp) and re-validates in toSetCookieHeaders() before the header is written.
Know when Effect gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
Precondition that the app passes untrusted input into name/domain/path is beyond attacker control (AC:H); widening a cookie to a parent domain affects other systems (S:C); low confidentiality/integrity, no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Effect is a TypeScript framework that consists of several packages that work together to help build TypeScript applications. From @effect/platform 0.1.0 until 0.97.1 and effect 4.0.0-beta.0 until 4.0.0-beta.103, the name, domain, and path fields passed to makeCookie() allow semicolon delimiters that serializeCookie() writes verbatim into Set-Cookie headers. A caller that supplies attacker-controlled values can append cookie attributes, including a broader Domain or, when the caller has not set those options itself, SameSite=None or Max-Age. Encoded cookie values and CR or LF characters remain unaffected. This can widen a cookie's scope or add otherwise-unset cookie attributes. This issue is fixed in @effect/platform 0.97.1 and effect 4.0.0-beta.103.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-116496
NVD
CVE.org
Vulnrichment
GitHub
Exploit-DB