CVE-2026-67355: Guzzle Host-only Cookie Scope Is Not Vulnerability
MODERATECVE-2026-67355 is a MODERATE (CVSS 5.9) host-only cookie scope is not vulnerability (CWE-941: Incorrectly Specified Destination in a Communication Channel) affecting Guzzle libraries in the Packagist ecosystem. The issue involves host-only cookie scope is not preserved. Remediation is available by upgrading affected packages to version 7.15.1.
CVE-2026-67355 at a Glance
Security Impact
CVSS: 5.9
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N).
How to Fix CVE-2026-67355
To remediate this vulnerability, upgrade all affected Guzzle dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade guzzlehttp/guzzle to 7.15.1
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for guzzlehttp/guzzle
How to Check if You Are Affected
To determine whether your application is affected by CVE-2026-67355, inspect your project dependencies for Guzzle:
inspect dependencies for guzzlehttp/guzzle
Analyze the terminal output to locate any version of Guzzle in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 7.15.1), your application is affected.
Note: Verify declared build manifests and deployed runtime container environments.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-941: Incorrectly Specified Destination in a Communication Channel, where the product creates a communication channel to initiate an outgoing request to an actor, but it does not correctly specify the intended destination for that actor. In Guzzle, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-67355 Affected Guzzle Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
guzzlehttp/guzzle
|
Packagist |
< 7.15.1
|
7.15.1
|
References
Frequently Asked Questions
What is CVE-2026-67355?
Which Guzzle versions are affected?
What version fixes CVE-2026-67355?
Is guzzlehttp/guzzle affected?
What is the CVSS score of CVE-2026-67355?
What CWE is associated with CVE-2026-67355?
How can I check Packagist dependencies for CVE-2026-67355?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-wm3w-8rrp-j577",
"modified" : "2026-08-04T12:55:33Z",
"published" : "2026-07-20T23:27:49Z",
"aliases" : [ "CVE-2026-67355" ],
"summary" : "Guzzle: Host-only cookie scope is not preserved",
"details" : "### Impact\n\nIn affected versions, `CookieJar` does not preserve whether a response cookie was set without a `Domain` attribute or with an empty one. A cookie without `Domain` is host-only and must be returned only to the exact host that set it. Under current cookie processing rules, an empty `Domain` value is also host-only. Guzzle instead stores the request host in the cookie's `Domain` field and later applies ordinary domain matching, as though the server had supplied a valid domain. For example, a host-only `sid=secret` cookie set by `example.com` can subsequently be sent to `child.example.com`. `FileCookieJar` and `SessionCookieJar` also persist the request host without recording the host-only state, so reloading a jar preserves the widened scope.\n\nAn attacker who controls or can observe a child host can therefore receive cookies that were intended only for its parent host. Depending on the cookie, this can disclose session identifiers, authorization tokens, or other sensitive state. Exploitation requires the application to enable Guzzle's cookie support, reuse the same built-in cookie jar, receive a host-only cookie from a parent host, and later make a matching request to a less-trusted child host. The cookie's other restrictions still apply. Its path must match, a `Secure` cookie is sent only over a secure connection, and an expired cookie is not sent.\n\nApplications that do not use Guzzle's cookie support are not affected. Applications are also not affected by this disclosure if they use a separate jar for every host or trust boundary, never request a less-trusted subdomain with the same jar, or only store cookies carrying a valid, non-empty `Domain` attribute. The incorrect behavior occurs between an otherwise valid parent host and its subdomains.\n\n### Patches\n\nThe issue is patched in `7.15.1` and later. Starting in that release, Guzzle records whether a response cookie is host-only and matches it only against the exact host. The host-only flag is part of cookie identity for replacement and response-driven deletion. Cookies carrying a valid, non-empty `Domain` attribute retain their existing domain-matching behavior. A host-only cookie can coexist with an explicit-domain cookie having the same name, domain string, and path.\n\nThe built-in persistent jars now write a boolean `HostOnly` marker for every stored cookie record. They reject records where that marker is missing or is not a boolean, and validate all records before changing the live jar. Persisted cookie records written by an older version are therefore rejected rather than silently interpreted with an unsafe scope. Loading non-empty file or session data written without this marker throws a `RuntimeException` until the data is deleted, regenerated, or correctly annotated. Versions before `7.15.1` are affected.\n\n### Workarounds\n\nIf you cannot upgrade immediately, do not reuse one `CookieJar` instance across parent and child hosts with different trust levels. Use a separate cookie jar for each host or trust boundary, disable cookie handling for requests to less-trusted hosts, or avoid making those requests through a client configured with a shared jar. In particular, avoid `new Client(['cookies' => true])` for a client that may contact both a trusted parent host and less-trusted subdomains, because that option creates one jar for the whole client.\n\nWhen upgrading, delete or rotate existing `FileCookieJar` and `SessionCookieJar` data that contains cookie records written without a `HostOnly` marker. Records may instead be annotated manually only when the original presence or absence of the cookie's `Domain` attribute is known. The stored domain string is not sufficient to infer it safely.\n\n### References\n\n* https://www.rfc-editor.org/rfc/rfc10025.html#section-4.1.2.3\n* https://www.rfc-editor.org/rfc/rfc10025.html#section-5.7\n* https://www.rfc-editor.org/rfc/rfc10025.html#section-5.8.3",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Packagist",
"name" : "guzzlehttp/guzzle"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "7.15.1"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/guzzle/guzzle/security/advisories/GHSA-wm3w-8rrp-j577"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-67355"
}, {
"type" : "WEB",
"url" : "https://github.com/guzzle/guzzle/pull/3901"
}, {
"type" : "WEB",
"url" : "https://github.com/guzzle/guzzle/commit/7b68220d6543f6f80fe62e633361fc9d4ead14d4"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/guzzle/guzzle"
}, {
"type" : "WEB",
"url" : "https://github.com/guzzle/guzzle/releases/tag/7.15.1"
}, {
"type" : "WEB",
"url" : "https://www.vulncheck.com/advisories/guzzlehttp-guzzle-before-host-only-cookie-scope"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-201", "CWE-941" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2026-07-20T23:27:49Z",
"nvd_published_at" : null
}
}