Skip to main content

@effect/platform CVE-2026-115779

| EUVDEUVD-2026-116496 MEDIUM
Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection') (CWE-74)
2026-11-03 GitHub_M
6.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Find app passing untrusted input to makeCookie name/domain/path
  2. Delivery
    Submit crafted value containing a semicolon delimiter
  3. Exploit
    serializeCookie writes injected attribute verbatim into Set-Cookie
  4. Execution
    RFC 6265 honors last Domain, widening cookie scope
  5. Impact
    Session 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

platform 0.1.0, < 0.97.1
effect 4.0.0-beta.0, < 4.0.0-beta.103

Affected Packages

euvd effect fix: 4.0.0-beta.103
euvd platform fix: 0.97.1

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

Vendor (GitHub_M) PRIMARY 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
vuln.today AI 5.4 MEDIUM

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Nov 03, 2026 - 22:04 EUVD

DescriptionCVE.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

Prevalence
Low
niche but growing functional TypeScript framework, limited production deployment footprint
Data Quality
4 sources
Confidence: Medium
EUVD NVD CVE.org Vulnrichment GitHub

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy