Cloud Security

Votre cle API Google Maps peut maintenant vider votre compte en banque

Google a silencieusement modifie les permissions des cles API pour que celles destinees a Maps puissent desormais appeler Gemini AI. Voici comment auditer vos projets GCP et verrouiller les cles exposees.

Laurent Goudet · 4 mars 2026 · 8 min de lecture

En fevrier 2026, un developpeur a publie sur Reddit que sa cle API Google Cloud avait ete compromise, generant 82 314 $ de charges Gemini AI en 48 heures contre une depense mensuelle normale de 180 $. Il faisait face a la faillite.

Le post est devenu viral. Mais la vraie histoire n’est pas celle d’une cle volee — c’est celle d’un changement silencieux que Google a apporte au fonctionnement des cles API, transformant des millions de cles auparavant inoffensives en passifs financiers potentiels du jour au lendemain.

Ce qui a change

Pendant plus d’une decennie, Google a dit aux developpeurs que les cles API ne sont pas des secrets. Leur documentation le disait explicitement. Le raisonnement etait sense : les cles API pour des services comme Google Maps etaient concues pour etre embarquees dans du JavaScript cote client, livrees dans des applications mobiles et commitees dans des depots publics. Elles identifiaient votre projet pour les quotas et la facturation, mais ne pouvaient pas acceder a des donnees sensibles ni effectuer d’operations privilegiees.

Puis Google a lance Gemini et change les regles.

Google Cloud utilise un format de cle API unique — des chaines commencant par AIza — pour tous les services. La meme cle qui authentifie une requete Maps JavaScript peut authentifier un appel a l’API Gemini. La seule chose qui controle quelles API une cle peut appeler, ce sont ses restrictions de cible API — et beaucoup de cles, creees quand les restrictions n’etaient pas necessaires, n’en ont aucune.

L’API Gemini (generativelanguage.googleapis.com) peut etre activee sur n’importe quel projet GCP. Une fois activee, chaque cle API sans restriction dans ce projet peut l’appeler. Si votre cle Maps n’a pas de restrictions et que Gemini est active sur le meme projet, n’importe qui possedant cette cle peut executer des requetes Gemini facturees a votre compte.

L'ampleur de l'exposition

Truffle Security a scanne l’internet et trouve pres de 3 000 cles API Google exposees dans du code cote client qui ont desormais acces a Gemini. Separement, Quokka a trouve plus de 35 000 cles API Google uniques embarquees dans des applications Android. Ces cles etaient sures a exposer pendant des annees — elles ne le sont plus.

Pourquoi c’est dangereux

L’API Gemini est chere a grande echelle. Une cle compromise peut generer des milliers de dollars de charges par heure. Contrairement a l’abus de l’API Maps, qui est limite en debit et relativement peu couteux par requete, l’inference LLM est gourmande en calcul et tarifee en consequence.

L’incident a 82 000 $ sur Reddit n’est pas une anomalie — c’est la consequence previsible du fait de rendre un service IA facturable accessible via des cles concues pour etre publiques. L’attaquant n’a pas besoin de voler des identifiants sur un serveur. Il lui suffit de trouver l’une des milliers de cles API deja presentes dans des depots GitHub publics, des bundles JavaScript cote client ou des applications mobiles decompilees.

Google a depuis reagi en restreignant par defaut les nouvelles cles AI Studio a l’acces Gemini uniquement et en bloquant les cles fuguees decouvertes utilisees avec l’API Gemini. Mais le probleme fondamental demeure : les cles existantes creees avant ce changement n’ont pas de restrictions, et Google ne peut pas les restreindre retroactivement sans casser des integrations legitimes.

Comment verifier si vous etes expose

Le risque depend de deux facteurs : si l’API Gemini est activee sur votre projet GCP, et si vos cles API ont des restrictions de cible. Vous pouvez verifier les deux avec la CLI gcloud.

Verification manuelle pour un seul projet

Lister toutes les cles API et leurs restrictions :

gcloud services api-keys list --project=YOUR_PROJECT_ID

Obtenir les details d’une cle specifique — cherchez restrictions.apiTargets :

gcloud services api-keys describe KEY_ID --project=YOUR_PROJECT_ID

Verifier si Gemini est active :

gcloud services list --enabled --project=YOUR_PROJECT_ID \
| grep -i generativelanguage

Si la cle n’a pas de apiTargets et que Gemini est active, cette cle peut appeler Gemini.

Audit automatise de tous les projets

Si vous gerez plus d’une poignee de projets GCP, les verifier un par un n’est pas pratique. J’ai ecrit un script qui scanne chaque projet de votre compte, verifie a la fois les restrictions de cible API et les restrictions d’application (IP, referrer, Android/iOS), et classifie chaque cle sans restriction par niveau de risque :

  • CRITICAL — La cle peut appeler Gemini ET est publiquement accessible (aucune restriction, ou restrictions cote client comme referrer/Android/iOS qui sont facilement contournables)

  • HIGH — La cle peut appeler Gemini mais est restreinte par IP (cle serveur — risque plus faible car seules les IP autorisees peuvent l’utiliser)

  • MEDIUM — La cle n’a pas de restrictions API mais Gemini n’est pas active sur le projet (a un clic du risque)

Le script commence par un verdict clair — YOU ARE AT RISK, NOT AT RISK TODAY, ou YOU ARE NOT AT RISK — pour que vous sachiez immediatement si vous devez agir. Il verifie les projets en parallele (20 a la fois par defaut) et inclut la commande gcloud pour corriger chaque cle signalee.

Recuperez-le depuis le gist et lancez-le :

curl -sL https://gist.githubusercontent.com/laurentgoudet/8cd3956be4c594bd9f88c9a16dc2f46b/raw/check_gemini_exposure.sh -o check_gemini_exposure.sh
chmod +x check_gemini_exposure.sh

# Scanner tous les projets
./check_gemini_exposure.sh

# Scanner uniquement certains projets
./check_gemini_exposure.sh "freelancer|escrow"

# Augmenter le parallelisme
MAX_PARALLEL=40 ./check_gemini_exposure.sh

Vous avez besoin de la CLI gcloud authentifiee et de python3. Le script detecte automatiquement si la sortie standard est un terminal et desactive les codes couleur en cas de redirection vers un fichier.

Le script complet est disponible sous forme de

gist GitHub

.

Grandes organisations : filtrez et parallelisez

Le script effectue deux appels API par projet (un pour verifier les services actives, un pour lister les cles API). Les projets sys-* auto-generes (crees par Google Apps Script) sont filtres automatiquement. Pour les organisations avec des centaines de projets restants, le parallelisme par defaut de 20 reste bien en dessous de la limite de Google de 240 lectures de cles API par minute. Vous pouvez l’augmenter avec MAX_PARALLEL=40 si necessaire, ou utiliser l’argument de filtre pour cibler des projets specifiques.

Comment corriger

Une fois les cles exposees identifiees, il y a deux corrections complementaires.

Restreindre les cles API a des services specifiques

Chaque cle API devrait etre restreinte aux seules API dont elle a besoin. Une cle Maps ne devrait pouvoir appeler que les API Maps :

gcloud services api-keys update KEY_ID \
--project=YOUR_PROJECT_ID \
--api-target=service=maps-backend.googleapis.com \
--api-target=service=geocoding-backend.googleapis.com \
--api-target=service=places-backend.googleapis.com

C’est la bonne solution a long terme. Meme si Gemini n’est pas active aujourd’hui, restreindre les cles vous protege contre toute future API que Google ajoutera a la plateforme.

Desactiver l’API Gemini

Si personne dans votre organisation n’utilise Gemini via un projet particulier, desactivez-le :

gcloud services disable generativelanguage.googleapis.com \
--project=YOUR_PROJECT_ID

Cela elimine le risque immediat mais ne traite pas le probleme sous-jacent des cles sans restrictions. Faites les deux.

Configurer des alertes de facturation et des plafonds

Les alertes de facturation vous notifient quand les depenses depassent un seuil, mais elles n’arretent pas les charges. Les plafonds budgetaires peuvent reellement stopper l’utilisation de l’API. Pour tout projet avec des cles API exposees sur internet — ce qui inclut chaque projet avec une cle Maps dans du code cote client — configurez les deux.

Le probleme de fond

La reponse de Google — restreindre par defaut les nouvelles cles a l’acces Gemini uniquement et bloquer les cles fuitees decouvertes — traite les symptomes. La cause profonde est une decision de conception prise il y a des annees : utiliser un format d’identifiant unique pour deux cas d’usage fondamentalement differents — « identifiant public » et « jeton d’authentification sensible ».

Quand les cles API Google Maps ont ete introduites, les traiter comme non-secretes etait raisonnable. Elles identifiaient un projet pour la facturation et pouvaient etre limitees par referrer HTTP ou adresse IP. Le modele de securite supposait que ces cles n’accederaient jamais qu’a des API peu sensibles, limitees en debit et peu couteuses par requete.

Cette hypothese s’est effondree au moment ou le meme format de cle a obtenu l’acces a Gemini — un service ou une seule cle compromise peut generer des dizaines de milliers de dollars de charges en quelques heures. Google a essentiellement change le modele de menace de chaque cle API existante sans notifier les proprietaires.

Si vous gerez des projets GCP, lancez l’audit. Les cinq minutes necessaires pour restreindre vos cles coutent considerablement moins cher qu’une surprise a 82 000 $.

Questions fréquentes

Ma cle API Google Maps peut-elle vraiment etre utilisee pour appeler Gemini ?

Oui, si la cle n'a aucune restriction de cible API et que l'API Gemini (generativelanguage.googleapis.com) est activee sur le meme projet GCP. Google utilise un format de cle unique (AIza...) pour les API publiques comme Maps et les API sensibles comme Gemini. Une cle sans restriction peut appeler toute API activee.

Comment savoir si ma cle API est a risque ?

Verifiez deux choses : si l'API Gemini est activee sur votre projet GCP (gcloud services list --enabled --filter=generativelanguage), et si vos cles API ont des restrictions de cible (gcloud services api-keys describe KEY_ID). Si Gemini est active et qu'une cle n'a pas de restrictions, elle est exposee.

Google a-t-il active Gemini automatiquement sur les projets existants ?

Google n'a pas confirme d'activation automatique generalisee, mais l'API Gemini peut etre activee via AI Studio, qui cree automatiquement des projets gen-lang-client. Le probleme fondamental est que des cles creees il y a des annees sans restrictions — ce que la documentation de Google disait etre acceptable — ont maintenant acces a un service IA facturable.

Que faire maintenant pour proteger mes projets GCP ?

Restreignez chaque cle API aux seules API dont elle a besoin (ex. Maps JavaScript API uniquement). Desactivez l'API Gemini sur les projets qui n'en ont pas besoin. Configurez des alertes de facturation et des plafonds budgetaires. Le script d'audit dans cet article peut scanner tous vos projets automatiquement.

Desactiver l'API Gemini suffit-il, ou faut-il aussi restreindre les cles ?

Les deux. Desactiver Gemini elimine le risque immediat, mais des cles sans restriction sont une bombe a retardement — toute nouvelle API activee sur le projet devient accessible a travers elles. Restreindre les cles a des API specifiques est la bonne solution a long terme.

Laurent Goudet

CTO chez Freelancer.com

Agents IA, réseau et infrastructure à grande échelle

Autres analyses

Sécurité réseau

TLS vs mTLS Handshake

Comparaison des flux d'authentification TLS standard et mutuel

Sécurité réseau

TLS 1.2 vs TLS 1.3 Handshake

Comparaison de l'efficacité du handshake et des améliorations de sécurité

Ingénierie réseau

Réseau IPv6-Only avec NAT64/464XLAT

Faire fonctionner un réseau local IPv6-only tout en maintenant la connectivité IPv4

Ingénierie CDN

Le piège == false en Fastly VCL

Comment l'utilisation de == false au lieu de ! dans des conditions composées en Fastly VCL peut silencieusement casser votre logique

IA & Industrie

Quelque chose de grand se passe — mais pas ce que vous croyez

Pourquoi l'IA est un changement de couche d'abstraction, pas la fin du travail intellectuel — la réponse d'un praticien à l'essai viral sur l'IA

IA & Industrie

Orchestration d'agents IA à grande échelle — Ce qui fonctionne vraiment en production

Patterns et leçons tirées de l'exploitation de systèmes multi-agents à l'échelle de 80M+ utilisateurs : routage, chaînes de fallback, gestion du contexte, et pourquoi la plupart des architectures d'agents échouent.

Sécurité réseau

DNSSEC : chaîne de confiance de la racine à ce domaine

Comment DNSSEC construit une chaîne de confiance cryptographique de la racine DNS à cette zone — avec configuration Pulumi et vérification dig en direct

Sécurité réseau

Déployer DMARC à grande échelle

Guide pratique pour déployer DMARC sur une grande plateforme — corrections SPF, DKIM et alignement à travers AWS SES, Google Workspace, des relais Postfix et des dizaines de domaines

© 2026 Laurent Goudet · Bordeaux, France · lepro.dev

vd9714f4