Update dependency guzzlehttp/guzzle to v7.12.1 [SECURITY]#5920
Open
renovate[bot] wants to merge 1 commit into
Open
Update dependency guzzlehttp/guzzle to v7.12.1 [SECURITY]#5920renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
Contributor
|
Issue bot detected changes — view run: Result of the code snippet from @@ @@
PHP 8.0 – 8.4 (1 error)
==========
-12: Function get_cv_files() should return list<string> but returns array.
+12: Function get_cv_files() should return list<string> but returns list.
PHP 7.2 – 7.4 (1 error)
==========
-12: Function get_cv_files() should return list<string> but returns array|false.
+12: Function get_cv_files() should return list<string> but returns list|false.Full reportPHP 8.0 – 8.4 (1 error)
PHP 7.2 – 7.4 (1 error)
Result of the code snippet from @@ @@
+7: Expected type decimal-int-string, actual: lowercase-string&numeric-string&uppercase-string
9: Expected type non-decimal-int-string, actual: stringFull report
Result of the code snippet from @@ @@
7: Function doFoo() has no return type specified.
-10: Call to function is_int() with int will always evaluate to true.
+ 7: PHPDoc tag @param for parameter $s contains unresolvable type.
+ 8: Unary operation "+" on string results in an error.Full report
Result of the code snippet from @@ @@
7: Function doFoo() has no return type specified.
-9: Expected type (float|int), actual: int
+7: PHPDoc tag @param for parameter $s contains unresolvable type.
+8: Unary operation "+" on string results in an error.
+9: Expected type (float|int), actual: *ERROR*Full report
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
7.10.0→7.12.17.8.0→7.12.1Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
guzzlehttp/guzzle: Silent HTTPS-Proxy Downgrade to Cleartext
CVE-2026-55568 / GHSA-wpwq-4j6v-78m3
More information
Details
Impact
The built-in cURL handlers (
GuzzleHttp\Handler\CurlHandlerandGuzzleHttp\Handler\CurlMultiHandler, used by default whenever the PHP cURL extension is available) accept anhttps://proxy — a proxy reached over a TLS-encrypted connection — through theproxyrequest option, client-levelproxydefaults, or proxy environment variables such ashttp_proxy,https_proxy,HTTPS_PROXY,all_proxy, andALL_PROXY.When the installed libcurl does not support HTTPS proxies, behavior depends on the libcurl version/build:
https://proxy as a plaintexthttp://proxy. The TLS connection to the proxy is never established, and the proxy leg is cleartext with no error or warning.The security-relevant case is the silent downgrade on libcurl older than 7.50.2. An application is affected when it sends requests through one of the built-in cURL handlers, configures an
https://proxy expecting the proxy connection itself to be encrypted, and runs with libcurl older than 7.50.2.In that configuration, traffic expected to be protected by TLS on the hop to the proxy is transmitted in cleartext. Proxy authentication credentials (the
Proxy-Authorizationheader, proxy userinfo in the proxy URL, orCURLOPT_PROXYUSERPWD) are sent without encryption, and theCONNECTtarget host and port for tunneled HTTPS requests are exposed. For plain HTTP requests, request headers and bodies are also exposed on the proxy leg. End-to-end HTTPS requests tunneled through the proxy remain protected by their inner TLS session; the exposure is limited to the proxy negotiation and proxy credentials.Applications that do not configure an
https://proxy are not affected. Installations running libcurl 7.52.0 or newer built with HTTPS-proxy support are not affected because HTTPS proxies work as intended. Installations running libcurl 7.50.2 through 7.51.x, or libcurl 7.52.0 or newer built without HTTPS-proxy support, are not exposed to the silent cleartext downgrade, but Guzzle now rejects those unsupported configurations up front as well. The built-in stream handler is not affected; the issue is specific to the cURL handlers' proxy handling. Low-level cURL options under thecurlrequest option, such asCURLOPT_PROXYorCURLOPT_PROXYTYPE, are advanced custom configuration and remain the caller's responsibility.Patches
The issue is patched in
7.12.1and later. Starting in that release, the built-in cURL handlers detect whether the installed libcurl supports HTTPS proxies — requiring both libcurl 7.52.0 or newer and theCURL_VERSION_HTTPS_PROXYfeature bit — and reject a request configured through Guzzle's first-class proxy handling with anhttps://proxy up front by throwing aGuzzleHttp\Exception\RequestException. No request bytes reach the network when the proxy cannot be used securely. Versions before7.12.1are affected by the silent downgrade when run against libcurl older than 7.50.2.Workarounds
If you cannot upgrade immediately, do not configure an
https://proxy on an installation whose libcurl lacks HTTPS-proxy support, and verify the capability in application code before using one. Remember to check proxy environment variables as well as any explicitproxyoption:Upgrading the system libcurl to 7.52.0 or newer built with HTTPS-proxy support also resolves the underlying unsupported-proxy behavior.
Severity
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
guzzlehttp/guzzle: Dot-Only Cookie Domains Match All Hosts
CVE-2026-55767 / GHSA-cwxw-98qj-8qjx
More information
Details
Impact
CookieJarincorrectly accepts cookies with a dot-onlyDomainattribute, such asDomain=.,Domain=..,Domain=..., and whitespace-padded variants such asDomain= .. In affected versions,SetCookie::matchesDomain()removes leading dots from the cookie domain, normalizing dot-only values to the empty string;SetCookie::validate()only rejected a strictly empty domain, so these cookies could be stored and the empty normalized domain was treated as matching any request host.An attacker-controlled origin that an application requests with a shared cookie jar can therefore set a cookie that Guzzle later sends to unrelated hosts using the same jar. This may allow cookie injection or session fixation against downstream services, depending on how those services interpret the injected cookie. Applications are affected when they use Guzzle's cookie support, for example
new Client(['cookies' => true])or an explicit sharedCookieJar, and reuse the same jar across attacker-controlled and trusted origins.Applications that do not use Guzzle's cookie support, or that use separate cookie jars per origin or trust boundary, are not affected. This issue is distinct from public suffix list validation: dot-only domains contain no domain label and should not match unrelated hosts.
Patches
The issue is patched in
7.12.1and later. Starting in that release, Guzzle rejects dot-only cookieDomainattributes and prevents an empty normalized cookie domain from matching any request host.Workarounds
If you cannot upgrade immediately, do not reuse the same
CookieJarinstance across untrusted and trusted origins. Use separate cookie jars per origin or trust boundary, or disable cookie handling for requests to untrusted hosts.Avoid using
new Client(['cookies' => true])for clients that may contact unrelated hosts with different trust levels, because that option creates one shared jar for the client.Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
guzzle/guzzle (guzzlehttp/guzzle)
v7.12.1Compare Source
Changed
guzzlehttp/psr7version constraint to^2.12.1Fixed
Security
Domainattributes as match-all (GHSA-cwxw-98qj-8qjx)v7.12.0Compare Source
Added
RequestOptionsconstants forcurl,retries, andstream_contextChanged
guzzlehttp/psr7version constraint to^2.12proxyrequest option makes a decisionPsr7\Utils::redactUserInfo()Deprecated
handleroption, which will be ignored in 8.0CURLOPT_PROXYTYPEcURL request option; set the proxy type via a scheme-prefixed proxy URLntlmas a built-inauthtypeUtils::describeType()queryandform_paramsoptions; 8.0 rejects thembodyoption; 8.0 rejects themFixed
nolist matches being re-proxied through environment-configured proxies by libcurlnolist andNO_PROXYmatching to support IP CIDR ranges, matching libcurlv7.11.2Compare Source
Fixed
v7.11.1Compare Source
Fixed
transport_sharing, matching other unknown request optionsv7.11.0Compare Source
Added
proxyrequest option'snovalue as a comma-delimited stringprotocolsrequest option to restrict allowed URI schemes for request transferscert_typeandssl_key_typerequest options for TLS certificate and private-key file typesssl_keyrequest optiontransport_sharingclient and cURL handler optionsChanged
guzzlehttp/promisesversion constraint to^2.5guzzlehttp/psr7version constraint to^2.11SetCookieinstances to be stored without wildcard request matchingCurlMultiHandlerdestructors from throwing during cleanupDeprecated
Poolrequest collections, which will be rejected in 8.0headersrequest option values, which will be rejected in 8.0headersrequest option value arrays, which will be rejected in 8.0CURLOPT_SHARE, which will be rejected in 8.0idn_conversionrequest option values, which will be rejected in 8.0RequestException::wrapException(), which will be removed in 8.0RetryMiddleware::exponentialDelay(), which will be removed in 8.0v7.10.6Compare Source
Fixed
CurlMultiHandlernow rejects the promise whenCurlFactory::finish()throws, preserving sibling transfersSetCookienow normalizes unparseableExpiresvalues tonullinstead offalsegzip/deflatetruncation by dropping invalidContent-Lengthv7.10.5Compare Source
Fixed
ConnectExceptionv7.10.4Compare Source
Fixed
options()to uppercase inferred HTTP methodsv7.10.3Compare Source
Fixed
v7.10.2Compare Source
Fixed
v7.10.1Compare Source
Fixed
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.