Średnia

Guzzle: URI fragments disclosed in redirect Referer headers

  • Ujawniono: 20.07.2026
  • Aktualizacja: 11.10.2026 10:22

Impact

When the optional referer redirect setting is enabled, affected versions of RedirectMiddleware can copy the fragment from the referring request URI into a generated Referer header. A URI fragment is the part after #. It is handled locally by the client and is not part of the HTTP request target, so the server handling the original request does not receive it. A generated Referer tells the redirect destination which URI led to the request. Guzzle correctly removes user information from that value, but retains the fragment when it follows a redirect to the same scheme, such as HTTPS to HTTPS. For example, an initial URI ending in #secret is sent without the fragment, but the redirect destination can receive a Referer ending in #secret. This behavior affects both the cURL and stream handlers.

An attacker who controls the redirect destination can read the fragment from the incoming header, including through request logs or application code. If the fragment contains a one-time login secret, access token, state value, or other private client data, it is disclosed to a server that was never meant to receive it. Exploitation requires the application to enable allow_redirects.referer, make a request to a URI with a sensitive fragment, and follow a same-scheme redirect to a less-trusted destination.

The referer setting is disabled by default. Applications that leave it disabled, do not put sensitive data in URI fragments, do not follow redirects, or only redirect within the same trust boundary are not affected. Guzzle already omits the generated header when the scheme changes. This issue is limited to the fragment's inclusion. Reducing the path and query on cross-origin redirects is a separate privacy policy question.

Patches

The issue is patched in 7.15.1 and later. Starting in that release, Guzzle removes both user information and the fragment before generating a redirect Referer value. Other redirect behavior does not change. Guzzle retains the referring path and query, and continues to omit the header when the scheme changes. Versions before 7.15.1 are affected when the optional referer setting is enabled.

Workarounds

If you cannot upgrade immediately, leave automatic Referer generation disabled. It is off by default. If redirect options are configured explicitly, ensure that referer is false:

php
$client->request('GET', $uri, [
    'allow_redirects' => ['referer' => false],
]);

Alternatively, disable automatic redirects and follow trusted destinations manually, or remove the fragment from the request URI before sending a request that may redirect. Do not rely on the fact that fragments are absent from the initial HTTP request target, because the affected middleware can reintroduce them in the generated header.

References

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka Composer guzzlehttp/guzzle < 7.15.1 7.15.1

Odnośniki

Ocena CVSS 5.9/10
Wektor CVSS
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Słabość (CWE)
CWE-201, CWE-212
Platforma
Composer
Paczka
guzzlehttp/guzzle
Ujawniono
20.07.2026
Aktualizacja
11.10.2026 10:22

Źródła i licencje

OSV / GitHub Advisory Database - GHSA-h95v-h523-3mw8 - CC BY 4.0

Historia podatności: guzzlehttp/guzzle

Wszystkie opisane podatności tej paczki (Paczka Composer), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (14) w archiwum
Wszystkich wpisów
14
Pierwsza → ostatnia
04.2022 08.2026
Bez poprawki
0
Wykorzystywana w atakach
0

Rozkład istotności

  • Wysoka 6
  • Średnia 8

Ujawnienia w latach

  1. 2022: 5
  2. 2023: 0
  3. 2024: 0
  4. 2025: 0
  5. 2026: 9
Istotność:
  1. Wysoka · 7.2 CVE-2026-69246 < 7.15.2, >= 8.0.0, < 8.0.1 7.15.2, 8.0.1
  2. Guzzle: URI fragments disclosed in redirect Referer headers ten wpis
    Średnia · 5.9 CVE-2026-67354 < 7.15.1 7.15.1
  3. Wysoka · 7.7 CVE-2022-31091 < 6.5.8, >= 7.0.0, < 7.4.5 6.5.8, 7.4.5
  4. Wysoka · 7.7 CVE-2022-31090 < 6.5.8, >= 7.0.0, < 7.4.5 6.5.8, 7.4.5
  5. Wysoka · 7.5 CVE-2022-31042 >= 4.0.0, < 6.5.7, >= 7.0.0, < 7.4.4 6.5.7, 7.4.4
  6. Wysoka · 8.0 CVE-2022-29248 < 6.5.6, >= 7.0.0, < 7.4.3 6.5.6, 7.4.3
  7. Wysoka · 8.1 CVE-2016-5385 >= 6, < 6.2.1, >= 4.0.0-rc2, < 4.2.4, >= 5, < 5.3.1 6.2.1, 4.2.4, 5.3.1

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.