CVE-2026-115779
Effect: Cookie attribute injection via domain, path, and name fields in @effect/platform makeCookie()
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used 6.3
Effect: Cookie attribute injection via domain, path, and name fields in @effect/platform makeCookie()
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.
- Record
CVE-2026-115779- CVSS 4.0
- 6.3 Medium
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 - Weakness
- CWE-74
- Updated
- 2026-11-03
EUVDEUVD-2026-116496 6.3
Effect: Cookie attribute injection via domain, path, and name fields in @effect/platform makeCookie()
- Record
EUVD-2026-116496- CVSS 4.0
- 6.3 Medium
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 - Updated
- 2026-11-10
GitHub AdvisoriesGHSA-chp3-j5qr-2vfr 6.3
Effect: Cookie attribute injection via domain, path, and name fields in @effect/platform makeCookie()
Impact
The name, domain, and path fields of makeCookie() were validated with a regex that allows ;, the attribute separator in Set-Cookie headers. Because serializeCookie() writes those fields verbatim, a caller who passes untrusted input into any of them can append arbitrary attributes to the header.
For example, a domain of "legit.com; Domain=.parent.tld" serializes to session=token; Domain=legit.com; Domain=.parent.tld. RFC 6265 §5.3 takes the last occurrence, so the injected domain wins and the cookie widens to the parent domain. The same trick sets SameSite=None or Max-Age when the caller has not set those options itself.
The value field is unaffected: it passes through encodeURIComponent, which encodes ;. CR and LF are rejected by the existing regex, so header splitting is not possible.
Patches
Fixed in #6763 (v4) and #6765 (v3): the shared regex is split into per-field validators that reject ;, and serializeCookie() now validates before writing the header.
Workarounds
Do not pass user input into name, domain, or path; set them from application constants.
- Record
GHSA-chp3-j5qr-2vfr- CVSS 4.0
- 6.3 Medium
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 - Weakness
- CWE-20, CWE-74
- Updated
- 2026-11-10
NVD 6.3
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.
- Record
CVE-2026-115779- CVSS 4.0
- 6.3 Medium
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/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 - Weakness
- CWE-74
- Updated
- 2026-11-12
OSV 6.3
Effect: Cookie attribute injection via domain, path, and name fields in @effect/platform makeCookie()
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.
- Record
CVE-2026-115779- CVSS 4.0
- 6.3 Medium
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 - Weakness
- CWE-74
- Updated
- 2026-11-05
OSVGHSA-chp3-j5qr-2vfr 6.3
Effect: Cookie attribute injection via domain, path, and name fields in @effect/platform makeCookie()
Impact
The name, domain, and path fields of makeCookie() were validated with a regex that allows ;, the attribute separator in Set-Cookie headers. Because serializeCookie() writes those fields verbatim, a caller who passes untrusted input into any of them can append arbitrary attributes to the header.
For example, a domain of "legit.com; Domain=.parent.tld" serializes to session=token; Domain=legit.com; Domain=.parent.tld. RFC 6265 §5.3 takes the last occurrence, so the injected domain wins and the cookie widens to the parent domain. The same trick sets SameSite=None or Max-Age when the caller has not set those options itself.
The value field is unaffected: it passes through encodeURIComponent, which encodes ;. CR and LF are rejected by the existing regex, so header splitting is not possible.
Patches
Fixed in #6763 (v4) and #6765 (v3): the shared regex is split into per-field validators that reject ;, and serializeCookie() now validates before writing the header.
Workarounds
Do not pass user input into name, domain, or path; set them from application constants.
- Record
GHSA-chp3-j5qr-2vfr- CVSS 4.0
- 6.3 Medium
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 - Weakness
- CWE-20, CWE-74
- Updated
- 2026-11-10
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
@effect/platformnpm | 0.1.0 up to 0.97.1 | 0.97.1 |
effectnpm | 4.0.0-beta.0 up to 4.0.0-beta.103 | 4.0.0-beta.103 |
History
| Recorded | Changed | Sources |
|---|---|---|
| published | EUVD | |
| affected, references | OSV | |
| affected, cwes, facts, references | GitHub Advisories, OSV | |
| aliases, references | NVD, OSV | |
| first indexed | CVE List, EUVD |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-115779 is a medium vulnerability (CVSS 6.3) in @effect Platform, published November 3, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.63%, the 50th percentile. Fixed in @effect/platform 0.97.1.
References
github.com/Effect-TS/effect/security/advisories/GHSA-chp3-j5qr-2vfr
github.com/Effect-TS/effect/pull/6763
github.com/Effect-TS/effect/pull/6765
github.com/Effect-TS/effect/commit/4a57af24011db1d66e947289d2f7ffc2074696d2
github.com/Effect-TS/effect/commit/5859b373b9be04d5037a594196b4743ad80379bd
github.com/Effect-TS/effect/releases/tag/@effect/platform@0.97.1