GoogleOidcVerifier treats string "false" as a verified email claim
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 82/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- python
- Domaine
- authentication, security
Piste de recherche
Commencez dans src/google/adk/cli/trigger_routes.py, au niveau de GoogleOidcVerifier, et examinez comment le claim email_verified est vérifié. Reproduisez les cas booléens et de chaîne indiqués, puis confirmez que le vérificateur n’accepte qu’une valeur True réelle, tout en conservant la vérification de l’adresse e-mail présente dans l’allowlist.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
GoogleOidcVerifier currently checks the email_verified claim using Python truthiness:
if (
not claims.get("email_verified")
or claims.get("email") not in self._allowed_emails
):
A non-empty string such as "false" is truthy in Python, so it passes this check when the email is allowlisted.
Reproduction
Using the same condition as the current verifier:
email_verified=False -> REJECT
email_verified="false" -> ACCEPT
email_verified=True -> ACCEPT
email_verified="" -> REJECT
The relevant implementation is in:
src/google/adk/cli/trigger_routes.py → GoogleOidcVerifier.
Expected behavior
The verifier should require an actual boolean True, for example:
claims.get("email_verified") is True
or otherwise validate the claim type explicitly before trusting it.
Context
This behavior was also publicly noted in google/adk-go commit 490f24cbc3aa7a9f9472175ba0d848530dc5b4f4, which states that ADK Python's truthiness check accepts non-empty strings including "false".
I have not identified a production Google-issued ID-token path that currently emits email_verified as the string "false", so I am reporting this as a correctness / defensive validation issue rather than claiming a demonstrated authentication bypass.
- Langage dominant
- Python
- Étoiles
- 21.6k
- Forks
- 4k
- Merge moyen
- 12 h 6 min
- PR mergées (30 j)
- 4
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de google/adk-python
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
google/adk-python#7298 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
google/adk-python#7292 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
google/adk-python#7282 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
CredentialsManager should also extract scopes when populating auth schemesPeut-être pris @sanketpatil06 l’a pris il y a 2 jours. Ouvertecore needs review
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
google/adk-python#7266 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
OAuth2 Discovery method fails because FastMCP with GoogleProvider (OAuth) returns issuerUrl with trailing slashPeut-être pris @sanketpatil06 l’a pris il y a 2 jours. Ouvertemcp
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
google/adk-python#7265 · 3 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de google/adk-python
Issues similaires
-
Broken links found in docsOuvertedocs pydanty:is-working
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
pydantic/pydantic-ai#8863 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
run-llama/llama_index#23278 ·
Les mainteneurs répondent en général sous 2 jours
-
documentation from-review-extraction github-actions priority: low severity:nit
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
LearningCircuit/local-deep-research#6946 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
oracle/langchain-oracle#323 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
tenstorrent/tt-metal#58057 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour