1 puntos por GN⁺ 12 일 전 | 1 comentarios | Compartir por WhatsApp
  • Una clave de navegador de Firebase expuesta sin restricciones de API permitió que desde fuera se generaran solicitudes automáticas a Gemini API, provocando cargos enormes en poco tiempo
  • Se facturaron más de €54,000 en 13 horas sin relación con el tráfico real de usuarios, y la alerta de costos se activó con retraso, demorando la respuesta
  • El equipo de soporte de Google Cloud clasificó esas solicitudes como uso válido (valid usage) y rechazó la solicitud de ajuste de cobro
  • Google incorporará funciones de protección como límites de gasto, claves de autenticación, bloqueo automático de claves y prepago, y retirará gradualmente el uso de claves sin restricciones
  • Los desarrolladores no deben incluir claves en el código del cliente y deben aplicar obligatoriamente restricciones de API keys y límites de presupuesto

Caso de fuerte aumento en los cargos de Gemini API por exposición de una clave de navegador de Firebase

  • Resumen del incidente

    • En un proyecto que antes solo usaba Firebase Authentication, el uso de Gemini API se disparó justo después de habilitar Firebase AI Logic
    • En poco tiempo se produjeron solicitudes automatizadas sin relación con el tráfico real de usuarios, lo que generó más de €54,000 en cargos durante unas 13 horas
    • El tráfico anómalo se detuvo después de desactivar la API y rotar las credenciales (credentials)
    • La alerta de presupuesto (€80) y la alerta de detección de anomalías de costos se activaron con varias horas de retraso; para entonces, el costo ya había llegado a unos €28,000
    • El monto final facturado quedó en más de €54,000 debido al retraso en el reporte de costos
  • Resultado del soporte de Google Cloud

    • Aunque se enviaron logs y materiales de análisis, las solicitudes se clasificaron como uso válido (valid usage) originado en el proyecto, por lo que se rechazó la solicitud de ajuste de cobro
    • Aun cuando ese uso era anómalo y no correspondía a tráfico impulsado por usuarios, el sistema lo procesó como un cargo normal
  • Consultas del usuario

    • Se preguntó si existen casos similares tras activar Firebase AI Logic o Gemini
    • Se consultó si hay medidas de protección adicionales aparte de App Check, cuotas y mover las llamadas al servidor
    • También se preguntó si existe una ruta de escalamiento (escalation path) adicional para este tipo de casos

Respuesta de Google (Logan Kilpatrick)

  • Funciones de facturación y límites de uso

    • Ya se introdujeron límites de facturación para usuarios de Gemini API (billing account caps), y los usuarios Tier 1 quedan bloqueados automáticamente después de un límite mensual de $250
    • Es posible configurar límites de gasto por proyecto (project spend caps); por ejemplo, una cuenta personal puede limitarse a $50
    • Todos los reportes de facturación tienen un retraso aproximado de 10 minutos
  • Seguridad de API keys y cambios previstos

    • El uso de API keys sin restricciones (unrestricted key) será deshabilitado pronto en Gemini API

      • A los nuevos usuarios se les genera por defecto una Auth key, una forma más segura que antes
      • No se deben incluir claves en el código del cliente, porque si se exponen pueden generar costos
      • Existe una función que detecta automáticamente claves expuestas en la web pública y las desactiva, y hubo casos en los que se bloquearon en cuestión de minutos
  • Restricciones de claves y alcance del servicio

    • Las claves creadas en Google AI Studio quedan restringidas por defecto solo a Gemini API

      • En cambio, las claves creadas por otras vías, como Google Cloud Console, pueden acceder a varios servicios, por lo que es necesario configurar restricciones por servicio si hace falta
  • Medidas adicionales y planes a futuro

    • Para revisar el caso, se pidió contacto directo por correo electrónico a Lkilpatrick@google.com
    • Se introdujo un sistema de facturación prepaga (prepaid billing) y se está migrando a un modelo de pago antes del uso
    • Actualmente ya se aplica a cuentas nuevas en Estados Unidos y se está ampliando de forma gradual al resto del mundo
    • Estas medidas buscan reforzar el control de costos para los desarrolladores y evitar cargos inesperados

1 comentarios

 
GN⁺ 12 일 전
Opiniones en Hacker News
  • Configuramos alertas de presupuesto (€80) y alertas de anomalías de costo, pero ambas se activaron con varias horas de retraso
    Cuando reaccionamos, el costo ya había llegado a €28,000, y al final se nos cobraron más de €54,000 debido al retraso en el reporte de costos
    En una situación así, la excusa de esas tres empresas de que “un hard spending cap es técnicamente imposible” no resulta convincente

    • Por eso procuro no usar servicios como Google Cloud
      No tiene sentido decir que un límite duro es imposible; como mínimo deberían darle la opción al usuario
    • Esto es una locura total. Estás construyendo un buen proyecto y, por un solo error, terminas debiendo entre €30,000 y €50,000: es un golpe capaz de cambiarte la vida
      Antes este tipo de errores eran simplemente bugs; ahora pueden llevarte a la quiebra
    • Esto debería ser ilegal
      Si contratas que te cambien los azulejos del baño y luego te cobran una remodelación del jardín, obviamente deberías tener derecho a rechazarlo
    • Como manager, evito Google Cloud por este tipo de desastre de atención al cliente
      Dicho eso, por mi experiencia trabajando con sistemas de cobro de telecomunicaciones, entiendo que agregar logs de tamaño TB toma tiempo
      Aun así, las telecos normalmente asumen entre 2% y 3% de deuda incobrable y tratan mejor al cliente
      Google también debería tener una respuesta más elegante en situaciones como esta
      Sobre todo si esto pasó justo después de que la clave de IA quedara expuesta, Google debería haber detectado el escaneo de claves y haberlo bloqueado
    • Según la documentación de Gemini API, se pueden configurar límites mensuales de gasto tanto a nivel de proyecto como de cuenta de facturación
      Pero en la práctica parece que esa función no está funcionando bien
  • Yo también tuve una experiencia parecida
    Configuré un presupuesto de $100 en GCP, pero no recibí el correo de alerta hasta 5 horas después de haberlo superado
    Sorprende que esta función no sea una prioridad
    A corto plazo quizá reduzca los ingresos de Google, pero cualquier desarrollador que viva algo así no lo va a volver a recomendar

    • Cada vez que sale este tema me da rabia
      Nuestro equipo de 2 personas estuvo a punto de hundirse por un runaway job
      Siguiendo la recomendación de GCP, conectamos las alertas con un kill switch, pero la alerta llegó 6 horas tarde
      Al final solo nos reembolsaron cuando presentamos pruebas
      Google dijo que “había demasiados line items y el pipeline se atrasó”, pero se supone que el sistema está justamente para esos casos, ¿no?
    • No entiendo cómo puede tolerarse un retraso en las alertas así
      Me pregunto cómo terminó el ajuste de costos con Google
    • En realidad AWS tampoco prioriza este tipo de función
      Ningún cloud construye primero una función para cortarse la fuente de dinero
    • La frase “sacrificar la confianza a largo plazo por ganancias a corto plazo” le queda perfecta
      Es la imagen típica del capitalismo tardío
  • Si ves los resultados de búsqueda en GitHub, hay muchos casos donde tokens de Gemini API quedaron expuestos tal cual en repos públicos
    Google durante mucho tiempo no trató las API keys como secretos, y de repente con las claves de LLM pasó a considerarlas secretas
    Lo más probable es que el autor haya expuesto la clave en el frontend o durante algún proceso de compartir código

    • Este problema ya se había reportado antes, y Google dijo que bloquearía las claves filtradas en Gemini API
      También está indicado en este hilo relacionado de HN y en la documentación oficial
      Por eso sorprende que vuelva a aparecer un caso así
    • En realidad, en los resultados de búsqueda no hay claves reales
    • Aparece un mensaje diciendo que las claves filtradas se invalidan de inmediato
      “Your API key was reported as leaked. Please use another API key.”
      O sea, parece que la mayoría se bloquea automáticamente
    • No tiene sentido decir que las API keys no se tratan como secretas
  • En Google Cloud no hay una forma sencilla de configurar un hard cap
    Yo también pasé más de una hora buscando la configuración, y al final terminé encontrando en Reddit la solución de Pub/Sub → Cloud Function → desactivar billing
    Es una estructura completamente demencial

    • Una prueba que me gusta hacer es pedirle a Gemini que “escriba un script para obtener el uso de API del proyecto”
      Tiene un 100% de tasa de fracaso
    • Esto en la práctica es una trampa para el usuario (antifeature)
    • Probablemente sea intencional
      Si falla una protección hecha por el propio usuario, es más fácil decir “no es nuestra responsabilidad”
    • Que no exista esta función significa que la empresa tiene pocos incentivos para proteger al usuario
    • AWS y Azure son iguales
      Sería bueno que existiera una función donde, si el uso supera un umbral, se active automáticamente un kill switch
      Cinco horas de downtime se pueden tolerar, pero una factura gigante no
  • Leí esta publicación y de inmediato bajé de plan mi Firebase
    Me impactó ver un caso donde cobraron $6,909 por una API que ni siquiera habían llamado durante un mes
    Yo antes generé una API key durante una sesión educativa, y me vino a la cabeza que quizá alguien la fotografió

    • ¿De verdad alguien tomó una foto de la clave en esa sesión? Me da curiosidad cuál fue la causa
  • En 2020~21 enseñé servicios cloud a estudiantes usando AWS Free Tier
    Levantamos un servidor MediaWiki, pero no paraban de aparecer cuentas spam y la seguridad se sentía frágil
    Daba la impresión de que los puertos de red estaban bajo ataque todo el tiempo
    Al final me di cuenta de que no había forma de limitar el presupuesto a $20~30 y abandoné AWS
    Aunque el cloud parezca cómodo de administrar, el riesgo de una bomba de costos ilimitada lo vuelve peligroso tanto para personas como para empresas

  • Para desarrolladores solistas o equipos pequeños, el cloud público es un entorno aterrador e incierto
    No hay suficientes protecciones y los costos pueden dispararse sin límite
    Por eso una parte importante del proyecto se va en vigilar costos y crear lógica de corte
    Antes usaba un VPS simple, pero hoy muchas veces no queda otra que usar servicios de Google o AWS
    Aun así, siento que GCP es un poco mejor porque al menos permite desvincular programáticamente la cuenta de facturación

    • Me pregunto qué pasaría si simplemente no pagas
      En EE. UU. podría traer problemas legales, pero no sé cómo será en otros países
  • Este tipo de sistemas de cobro está muy mal diseñado desde la perspectiva de experiencia del cliente (CX)
    El billing se basa en eventos, así que el uso se acumula en colas y la agregación se retrasa
    Como las alertas solo llegan después de la agregación, si hay demora, para entonces ya se excedió por mucho
    Esta estructura protege a la empresa, no al cliente
    Si de verdad estuviera centrada en el cliente, en el momento en que se alcanza el límite duro ya no debería poder cobrarse ni un centavo más
    Eso también le daría a la empresa el incentivo de mejorar su propio sistema de agregación

    • En realidad, que sea event-driven no es el problema
      Con un esquema de prepago o servicios con tope de datos, donde se descuenta por adelantado, eso sí es totalmente posible
      Al final es un problema de prácticas de negocio de Google
  • Según la documentación oficial de Google Cloud, en una emergencia se puede desactivar la cuenta de facturación para detener los cargos
    La guía oficial advierte del “riesgo de pérdida irreversible de recursos”
    Pero para apps de prueba o de uso interno sirve como un buen freno de emergencia
    También vale la pena revisar otro documento de alternativas y la documentación para configurar alertas de presupuesto

    • Aun así, puede haber un retraso de varias horas o incluso días entre que se genera el costo y llega la alerta
      Yo llegué a gastar $400 en solo 5 minutos
  • Nosotros también sufrimos el mismo problema
    Una clave que originalmente no era secreta pasó a tratarse como secreta tras activar Gemini API, pero no hubo ninguna advertencia
    Por suerte lo detectamos temprano gracias a una alerta y el daño se limitó a $26,000
    Le pedimos un reembolso al equipo de soporte de Google, pero al principio lo rechazaron y ahora está en revisión
    En estos casos hay que escalar el problema lo más alto posible