Every CVESearch/Get API key

CVE-2026-115779

Effect: Cookie attribute injection via domain, path, and name fields in @effect/platform makeCookie()

6.3 MediumFix available

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

0.63%Unchanged since Nov 4, 2026
90%50%10%1%

What each source reports

CVE List Score used6.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 MediumCVSS: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-1164966.3

Effect: Cookie attribute injection via domain, path, and name fields in @effect/platform makeCookie()

Record
EUVD-2026-116496
CVSS 4.0
6.3 MediumCVSS: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-2vfr6.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 MediumCVSS: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
NVD6.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 MediumCVSS: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
OSV6.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 MediumCVSS: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-2vfr6.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 MediumCVSS: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

Affected packages
PackageAffectedFixed
@effect/platform
npm
0.1.0 up to 0.97.1
0.97.1
effect
npm
4.0.0-beta.0 up to 4.0.0-beta.103
4.0.0-beta.103

History

History
RecordedChangedSources
publishedEUVD
affected, referencesOSV
affected, cwes, facts, referencesGitHub Advisories, OSV
aliases, referencesNVD, OSV
first indexedCVE 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

Show 5 moreShow less
MoveEnter Open