1 points par GN⁺ 14 일 전 | 1 commentaires | Partager sur WhatsApp
  • Une clé de navigateur Firebase exposée sans restriction d’API a permis le déclenchement automatique de requêtes vers l’API Gemini depuis l’extérieur, entraînant une facturation massive en très peu de temps
  • Plus de 54 000 € de coûts ont été facturés en 13 heures, sans rapport avec le trafic réel des utilisateurs, et le déclenchement tardif des alertes de coût a retardé la réponse
  • L’équipe de support Google Cloud a classé ces requêtes comme un usage valide (valid usage) et a refusé la demande d’ajustement de facture
  • Google introduit des protections comme les plafonds de dépense, les clés d’authentification, le blocage automatique des clés et la facturation prépayée, et prévoit de supprimer progressivement l’usage des clés sans restriction
  • Les développeurs doivent éviter d’inclure des clés dans le code client et appliquer impérativement des restrictions sur les clés API ainsi que des plafonds de budget

Cas de forte hausse de facturation Gemini API causée par l’exposition d’une clé de navigateur Firebase

  • Vue d’ensemble de l’incident

    • Dans un projet qui utilisait jusque-là uniquement Firebase Authentication, la consommation de Firebase AI Logic a fortement augmenté juste après son activation
    • Des requêtes automatisées, sans lien avec le trafic réel des utilisateurs, ont été générées en peu de temps, provoquant plus de 54 000 € de facturation sur environ 13 heures
    • Le trafic anormal s’est arrêté après la désactivation de l’API et la rotation des identifiants (credentials)
    • Les alertes budgétaires (80 €) et les alertes de détection d’anomalies de coût se sont déclenchées avec plusieurs heures de retard ; au moment de la réaction, les coûts avaient déjà atteint environ 28 000 €
    • Le montant final facturé a été confirmé à plus de 54 000 € en raison du retard dans le reporting des coûts
  • Résultat du support Google Cloud

    • Malgré la soumission de journaux et de données d’analyse, les requêtes ont été classées comme un usage valide (valid usage) provenant du projet, et la demande d’ajustement des frais a été refusée
    • Bien que cet usage ait été anormal et non initié par des utilisateurs, il a été traité par le système comme une facturation normale
  • Questions posées par l’utilisateur

    • Il demande s’il existe des cas similaires après l’activation de Firebase AI Logic ou de Gemini
    • Il demande s’il existe d’autres moyens de protection, au-delà de App Check, des quotas et du passage à des appels côté serveur
    • Il demande s’il existe une voie de recours supplémentaire (escalation path) pour ce type de situation

Réponse de Google (Logan Kilpatrick)

  • Fonctions de facturation et de limitation d’usage

    • Des plafonds de facturation pour les utilisateurs de l’API Gemini (billing account caps) ont été introduits ; les utilisateurs Tier 1 sont automatiquement bloqués après une limite mensuelle de 250 $
    • Il est possible de configurer des plafonds de dépense par projet (project spend caps) ; par exemple, un compte personnel peut être limité à 50 $
    • Tous les rapports de facturation comportent un délai d’environ 10 minutes
  • Sécurité des clés API et changements prévus

    • L’usage de clés API sans restriction (unrestricted key) sera bientôt désactivé pour l’API Gemini

      • Pour les nouveaux utilisateurs, une clé d’authentification (Auth key) est désormais créée par défaut, avec un niveau de sécurité renforcé par rapport au passé
      • Il ne faut pas inclure de clé dans le code client ; en cas d’exposition, cela peut entraîner des coûts
      • Une fonctionnalité permet de détecter automatiquement les clés exposées sur le web public puis de les désactiver ; dans certains cas réels, le blocage a eu lieu en quelques minutes
  • Restriction des clés et périmètre des services

    • Les clés créées dans Google AI Studio sont par défaut limitées à l’API Gemini

      • En revanche, les clés créées via Google Cloud Console ou d’autres parcours peuvent accéder à plusieurs services ; si nécessaire, il faut appliquer des restrictions par service
  • Mesures supplémentaires et plan à venir

    • Il demande à être contacté directement par e-mail (Lkilpatrick@google.com) afin d’examiner ce cas
    • Un système de facturation prépayée (prepaid billing) a été introduit afin d’évoluer vers un paiement avant utilisation
    • Il est déjà déployé pour les nouveaux comptes aux États-Unis et en cours d’extension progressive au reste du monde
    • Ces mesures visent à renforcer le contrôle des coûts pour les développeurs et à éviter des facturations inattendues

1 commentaires

 
GN⁺ 14 일 전
Avis sur Hacker News
  • Nous avions configuré une alerte budgetaire (€80) et une alerte de dépassement de coût, mais toutes deux se sont déclenchées avec plusieurs heures de retard
    Au moment où nous avons pu réagir, les coûts avaient déjà atteint €28,000, et au final plus de €54,000 ont été facturés à cause du retard dans le reporting des coûts
    Dans une telle situation, l’excuse des trois entreprises selon laquelle « un plafond de dépense strict est techniquement impossible » n’est pas convaincante

    • C’est pour ça que j’évite autant que possible des services comme Google Cloud
      Dire qu’un hard cap est impossible n’a aucun sens, et au minimum il faudrait laisser le choix aux utilisateurs
    • C’est complètement absurde. Construire un bon projet puis devoir payer €30,000 à €50,000 pour une seule erreur, c’est un coup potentiellement dévastateur pour une vie
      Avant, ce genre d’erreur n’était qu’un bug ; aujourd’hui, cela peut mener à la faillite
    • Ça devrait être illégal
      Si vous faites remplacer le carrelage de votre salle de bain et qu’on vous facture ensuite la rénovation du jardin, vous devriez évidemment avoir le droit de refuser
    • En tant que manager, j’évite Google Cloud à cause de ce genre de désastre du service client
      Cela dit, pour avoir travaillé sur des systèmes de facturation chez des opérateurs télécoms, je comprends qu’agréger des logs à l’échelle du téraoctet prenne du temps
      Mais les opérateurs prévoient généralement 2 à 3 % de créances douteuses et font preuve de davantage d’égards envers les clients
      Google devrait aussi avoir une réponse plus élégante dans ce genre de cas
      Surtout si cela s’est produit juste après l’exposition d’une clé IA, Google aurait dû détecter le scan de la clé et la bloquer
    • D’après la documentation de l’API Gemini, on peut définir des plafonds mensuels de dépenses au niveau du projet et du compte de facturation
      Mais en pratique, cette fonctionnalité ne semble pas fonctionner correctement
  • J’ai vécu quelque chose de similaire
    J’avais défini un budget de $100 sur GCP, mais je n’ai reçu l’e-mail d’alerte que 5 heures plus tard, après le dépassement
    Il est surprenant que ce type de fonctionnalité ne soit pas prioritaire
    À court terme, cela augmente peut-être les revenus de Google, mais un développeur qui a vécu ça ne recommandera plus jamais la plateforme

    • Ce genre d’histoire me met en colère à chaque fois
      Notre équipe de deux personnes a failli couler à cause d’un runaway job
      Nous avions relié les alertes à un kill switch comme recommandé par GCP, mais l’alerte est arrivée 6 heures trop tard
      Nous n’avons obtenu un remboursement qu’après avoir dû fournir des preuves
      Google a expliqué que « le pipeline était engorgé à cause du trop grand nombre de lignes d’éléments », alors que c’est justement le type de situation que ce système est censé gérer
    • Je ne comprends pas comment un tel retard d’alerte peut être acceptable
      Je me demande comment le litige avec Google sur les coûts s’est finalement réglé
    • En réalité, AWS non plus ne priorise pas ce genre de fonctionnalité
      Aucun cloud ne commence par construire un mécanisme pour couper le robinet d’argent
    • L’expression « sacrifier la confiance à long terme pour le revenu à court terme » résume parfaitement la situation
      C’est une illustration typique du capitalisme tardif
  • Les résultats de recherche GitHub montrent de nombreux cas où des tokens d’API Gemini sont exposés tels quels dans des dépôts publics
    Pendant longtemps, Google ne traitait pas les clés API comme des secrets, puis avec les clés de LLM elles sont soudainement devenues sensibles
    Il est probable que l’auteur ait exposé la clé dans le frontend ou lors d’un partage de code

    • Ce problème avait déjà été signalé, et Google avait annoncé qu’il bloquerait les clés divulguées sur l’API Gemini
      C’est indiqué dans ce fil HN associé ainsi que dans la documentation officielle
      On peut donc se demander pourquoi ce genre de cas se reproduit encore
    • En pratique, les résultats de recherche ne contiennent pas de vraies clés
    • Un message indique que les clés divulguées sont immédiatement invalidées
      « Your API key was reported as leaked. Please use another API key. »
      Autrement dit, la plupart semblent être bloquées automatiquement
    • L’idée de ne pas traiter une clé API comme un secret n’a aucun sens
  • Il n’existe pas de moyen simple de configurer un hard cap sur Google Cloud
    J’ai moi-même cherché les réglages pendant plus d’une heure avant de découvrir sur Reddit la méthode Pub/Sub → Cloud Function → désactivation de la facturation
    C’est une architecture complètement démentielle

    • Mon test favori consiste à demander à Gemini d’« écrire un script qui récupère l’utilisation de l’API du projet »
      On obtient un magnifique 100 % d’échec
    • C’est en pratique une fonctionnalité piège (antifeature)
    • C’est probablement intentionnel
      Si la protection bricolée par l’utilisateur échoue, il est plus facile de dire « ce n’est pas notre responsabilité »
    • L’absence de ce type de fonctionnalité montre que l’entreprise manque d’incitations à protéger les utilisateurs
    • AWS et Azure sont pareils
      Ce serait bien d’avoir une fonction où un kill-switch s’active automatiquement quand l’usage dépasse un seuil
      Cinq heures d’indisponibilité, c’est acceptable ; une facture gigantesque, non
  • Après avoir lu ce post, j’ai immédiatement rétrogradé mon offre Firebase
    J’ai été choqué de voir un cas où $6,909 avaient été facturés en un mois pour des API que la personne n’avait même pas appelées
    Moi aussi, j’avais créé une clé API lors d’une session de formation, et je me suis dit qu’elle avait peut-être été photographiée

    • Quelqu’un a vraiment pris la clé en photo pendant cette session ? Je serais curieux de connaître la cause
  • En 2020–21, j’enseignais les services cloud à des étudiants en utilisant l’AWS Free Tier
    J’avais déployé un serveur MediaWiki, mais des comptes spam apparaissaient sans arrêt et la sécurité semblait fragile
    J’avais l’impression que les ports réseau étaient en permanence attaqués
    J’ai fini par comprendre qu’il n’existait aucun moyen de limiter le budget à $20–30, et j’ai abandonné AWS
    Le cloud semble facile à administrer, mais le risque de bombe de coûts illimités le rend dangereux, aussi bien pour les particuliers que pour les entreprises

  • Pour les développeurs solo ou les petites équipes, le cloud public est un environnement angoissant et peu rassurant
    Il n’y a pas de garde-fous, et les coûts peuvent grimper sans limite
    Une grande partie du temps d’un projet est donc consacrée à la surveillance des coûts et à la logique de coupure
    Avant, j’utilisais de simples VPS, mais aujourd’hui il faut souvent passer par des services Google ou AWS
    Malgré tout, je trouve GCP un peu meilleur sur ce point, car on peut détacher programmatiquement le compte de facturation

    • Je me demande ce qui se passerait si on refusait simplement de payer
      Aux États-Unis, cela poserait sans doute des problèmes juridiques, mais dans d’autres pays, je ne sais pas
  • Ce type de système de facturation est catastrophique du point de vue de l’expérience client (CX)
    La facturation est pilotée par événements, donc l’usage s’accumule dans des files d’attente et l’agrégation prend du retard
    Les alertes n’arrivent qu’après agrégation ; s’il y a un délai, le dépassement est déjà massif
    Une telle architecture protège l’entreprise, pas le client
    Si l’on était vraiment centré client, dès qu’une limite stricte est atteinte, plus aucun montant supplémentaire ne devrait être facturé
    Cela créerait aussi une vraie incitation pour l’entreprise à améliorer son propre système d’agrégation

    • En réalité, l’architecture événementielle n’est pas le problème
      Avec un système de prépayé ou de quota de données, où l’on débite à l’avance, c’est parfaitement faisable
      Au fond, c’est surtout un problème de pratiques commerciales chez Google
  • Selon la documentation officielle de Google Cloud, en cas d’urgence on peut désactiver le compte de facturation pour arrêter la facturation
    Le guide officiel avertit d’un « risque de perte irréversible de ressources »
    Mais pour des applis de test ou internes, c’est un bon frein d’urgence
    On peut aussi consulter un autre document d’alternative et la documentation sur les alertes budgétaires

    • Cela dit, il peut y avoir plusieurs heures à plusieurs jours de retard entre la génération du coût et l’alerte
      Il m’est déjà arrivé de dépenser $400 en 5 minutes
  • Nous avons rencontré exactement le même problème
    Une clé qui n’était pas censée être secrète est devenue sensible après l’activation de l’API Gemini, sans le moindre avertissement
    Heureusement, nous l’avons détecté tôt grâce aux alertes, ce qui a limité les dégâts à $26,000
    Nous avons demandé un remboursement au support Google, mais il a d’abord été refusé ; le dossier est maintenant en réexamen
    Dans ce genre de cas, il faut faire remonter l’incident aussi haut que possible