Core: Authorization and Cookie headers leaked to cross-origin servers on HTTP redirect

Ouverte
#2,181 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

@insaf021 y travaille déjà.

Depuis le 31/7/2026.

  • #2182 par @insaf021 — ouverte

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
72/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Calme
Stack technique
java

Piste de recherche

Commencez dans HttpRequest.handleRedirect() et execute(), puis examinez les trois scénarios de régression décrits dans l’issue. Vérifiez le comportement same-origin lors de changements de schéma, d’hôte et de port, y compris la normalisation du port par défaut ; le travail est terminé lorsque les redirections cross-origin n’incluent pas les en-têtes Authorization et Cookie, tandis que les redirections same-origin conservent le comportement attendu.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

priority: p3

Environment details

  1. Core - HttpRequest in google-http-client
  2. OS type and version: Any
  3. Java version: Any (Java 8+)
  4. google-http-client version: reproducible on current main

Problem Statement
When HttpRequest follows a redirect to a different origin (different scheme, host, or port),
the Cookie header is not stripped. Additionally, Authorization headers set via interceptors
(e.g. BasicAuthentication) are re-applied by the interceptor on subsequent redirect
iterations regardless of destination origin. This can cause credentials to be silently
forwarded to attacker-controlled servers.

Steps to reproduce

  1. Build an HttpRequest with an Authorization interceptor (e.g. BasicAuthentication) and a
    Cookie header.
  2. Configure the transport to return a 302 redirect to a cross-origin URL (different host).
  3. Execute the request.
  4. Observe that the second request (to the cross-origin target) still includes Authorization
    and Cookie headers.

Proposed Fix
In handleRedirect(), compute whether the new URL is same-origin as the old URL (comparing
scheme, host, and effective port). Strip Cookie header if cross-origin. In execute(), before
each retry, compare current URL origin to original origin and strip Authorization and Cookie
if the URL has changed to a different origin (e.g. after a previous redirect).

Add getEffectivePort() and isSameOrigin() helpers to normalize default ports (80 for http,
443 for https).

Three regression tests are included in the accompanying PR covering same-origin,
cross-origin host change, scheme change, and port change scenarios.

Langage dominant
Java
Étoiles
1.4k
Forks
476
Merge moyen
10 h 47 min
PR mergées (30 j)
3

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de googleapis/google-http-java-client

Toutes les issues de googleapis/google-http-java-client

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.