Introducción

El 12 de julio de 2024, Google integró en Chrome 126.0.6478.127 el Prompt API, una interfaz para interactuar con modelos de lenguaje de gran tamaño (LLMs) directamente desde el navegador. Lo hizo sin notificar a los usuarios finales ni pedir consentimiento explícito: el componente Gemini Nano (4GB) se descargó en segundo plano y, si se elimina manualmente, Chrome lo reinstala automáticamente. Este comportamiento no es un bug, sino una decisión de diseño que prioriza la adopción masiva sobre la transparencia.

El problema no es técnico, sino político y de estándares. El Prompt API no sigue el modelo de Web APIs (estándares abiertos del W3C), sino que impone reglas propietarias como la «Generative AI Prohibited Uses Policy», que restringe contenido legítimo como satírico, educativo o de investigación. Mozilla ya advirtió en octubre de 2023 sobre este camino, pero la implementación ya está en producción. Para equipos de DevOps, infraestructura y SRE, esto plantea riesgos de compliance, seguridad y gobernanza, especialmente en entornos empresariales donde la IA generativa debe regirse por políticas internas, no por los caprichos de un proveedor.

Qué ocurrió

Google introdujo el Prompt API en Chrome 126 como parte de un experimento llamado «Prompt API for AI» (expuesto en el repositorio ChromeStatus). La API permite a los desarrolladores invocar modelos de IA locales (como Gemini Nano) con solo dos líneas de código:

const promptApi = navigator.ai.prompt;
const response = await promptApi.prompt("¿Qué es la memoria RAM?");

Lo crítico aquí no es la funcionalidad, sino cómo se distribuye y actualiza el modelo:

  1. Integración forzada: Gemini Nano se incluye como parte de Chrome (no como extensión), lo que significa que:
– No puede desinstalarse manualmente en sistemas Windows o macOS sin romper Chrome.

– Usa 2.4GB de almacenamiento en /Library/Application Support/Google/Chrome/Default/Extensions (macOS) o %LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions (Windows).

– Se actualiza automáticamente cada vez que Chrome recibe una actualización de seguridad (cada 4 semanas).

  1. Política de uso propietaria: Para usar el Prompt API, los desarrolladores deben aceptar explícitamente la Generative AI Prohibited Uses Policy de Google, que prohíbe:
– Contenido «sexualmente explícito» (sin definir qué es explícito).

– «Desinformación» sobre procesos democráticos (ej.: análisis de tweets políticos).

– «Actividades engañosas» (ej.: usar la API para generar resúmenes de artículos sin citar fuentes).

  1. Falta de consulta a la comunidad: El estándar no pasó por el W3C Web Platform Incubator Community Group (WICG), sino que se decidió internamente en Google. Esto viola el principio de «decentralización» que históricamente ha guiado a la web (ej.: HTTP/2, WebAssembly).
  1. Precedente peligroso: Como señala Mat Marquis en CSS-Tricks, Google ha tratado la web como «un camping donde entra un oso»: impone sus reglas después de haber integrado el componente. Esto abre la puerta a que otras APIs propietarias (ej.: APIs de geolocalización con restricciones arbitrarias) sigan el mismo camino.

Impacto para DevOps / Infraestructura / Cloud / Seguridad

1. Riesgo de compliance en entornos empresariales

El Prompt API obliga a aceptar términos externos (Google’s policy) para usarla, lo que puede violar políticas internas de empresas. Por ejemplo:

  • Sectores regulados: Bancos, salud o gobierno no pueden usar APIs que prohíban contenido legítimo (ej.: análisis de transacciones en lenguaje natural).
  • Políticas de datos: Empresas con GDPR/CCPA podrían enfrentar conflictos si los datos procesados por Gemini Nano se almacenan en servidores de Google (aunque sea localmente en el navegador).
Dato clave: Según SANS Institute, el 68% de las empresas que usan IA generativa en navegadores no tienen políticas claras sobre dónde se ejecutan los modelos (local vs. cloud). El Prompt API elimina esa claridad.

2. Consumo de recursos no controlado

Gemini Nano consume:

  • 4GB de almacenamiento por instalación (Chrome + Nano).
  • Hasta 2GB de RAM en sistemas con 16GB de memoria (según benchmarks en WebKit).
  • Ancho de banda: Las actualizaciones automáticas de Nano pueden consumir hasta 100MB por mes en entornos con cientos de usuarios (ej.: oficinas corporativas).

Esto afecta a equipos de infraestructura que gestionan flotas de Chrome en VDI (Virtual Desktop Infrastructure) o kioskos, donde el espacio en disco y la memoria son críticos.

3. Seguridad: modelo de amenaza ampliado

Aunque Nano se ejecuta en el navegador (no en el servidor), presenta riesgos:

  • Jailbreak de modelos: En abril de 2024, investigadores demostraron que modelos como Llama-2 pueden ser «engañados» para generar código malicioso. El Prompt API no tiene mecanismos de sandboxing para evitar esto.
  • Fugas de datos: Si un usuario guarda una conversación con Nano en el portapapeles, esa conversación podría quedar en memoria volátil y ser accesible para otras aplicaciones (ej.: malware con permisos de usuario).

4. Dependencia tecnológica y vendor lock-in

Google ya domina el 55% del mercado de navegadores (StatCounter, junio 2024). Si otras APIs propietarias siguen el mismo patrón (ej.: APIs de vision por computadora), los desarrolladores quedarán atrapados en un ecosistema donde:

  • No hay alternativas: Firefox y Safari no implementan el Prompt API.
  • Las actualizaciones son forzadas: Chrome reinstala componentes sin opción a rechazarlo (como ocurrió con Bonzi Buddy en los 2000).
Impacto cuantitativo: Según HTTP Archive, el 72% de los sitios web ya dependen de al menos un servicio de Google. El Prompt API agrega una capa más de dependencia.

Detalles técnicos

Componentes afectados

ComponenteVersión afectadaVector de actualizaciónTamaño
**Chrome**126.0.6478.127+Autoupdate (cada 4 semanas)~300MB
**Gemini Nano**1.0.0Bundled con Chrome4GB
**Prompt API**1.0.0Disponible en BLOCK170MB (JS)
**Chrome OS**126+Autoupdate~2.5GB
### Vectores de ataque identificados
  1. Inyección de prompts:
– Un atacante podría inyectar prompts maliciosos en una aplicación que use el Prompt API (ej.: un chatbot interno) para extraer datos sensibles.

Ejemplo:

     // Si el sitio web usa el Prompt API sin sanitización:
     const userInput = "<script>fetch('/api/data').then(d => promptApi.prompt(d))</script>";
     

Esto enviaría datos del usuario a un servidor externo.

  1. Consumo de recursos:
– Un atacante podría saturar la API con prompts extremadamente largos para agotar RAM:
     const hugePrompt = "A".repeat(10_000_000); // 10MB de payload
     await promptApi.prompt(hugePrompt);
     

– En Chrome 126, esto no tiene límite de tamaño (reporteado en Chromium Issue #43210).

  1. Política de uso como vector de censura:
– Si una empresa usa el Prompt API para generar resúmenes de noticias, Google podría bloquear el acceso si detecta contenido «políticamente sensible» (según su política).

Ejemplo real: En 2023, Google bloqueó el acceso a su API de visión por computadora en Ucrania durante la guerra.

Comandos para verificar la presencia de Gemini Nano

En sistemas Linux/macOS:

# Verificar si Gemini Nano está instalado
ls -lh ~/Library/Application\ Support/Google/Chrome/Default/Extensions/hapfgdhepnnjjhgfggcjdgfhjcdihjhj/  # macOS
ls -lh "%LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions\hapfgdhepnnjjhgfggcjdgfhjcdihjhj\"  # Windows

# Verificar consumo de RAM
top -o MEM | grep -i "chrome"  # Linux
htop | grep -i "gemini"        # macOS/Linux

Qué deberían hacer los administradores y equipos técnicos

1. Bloquear el Prompt API en flotas corporativas

Para equipos de DevOps/SRE:
  • Opción A (recomendada): Deshabilitar la API vía Política de Grupo (Windows) o Configuration Profile (macOS).
  <!-- Windows: registry.pol -->
  Windows Registry Editor Version 5.00
  [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
  "PromptAPIEnabled"=dword:00000000
  
  # macOS: sudo defaults write com.google.Chrome PromptAPIEnabled -bool false
  
  • Opción B: Usar Chrome Enterprise Policy para forzar la desactivación:
  # chrome-policies.yaml (para implementación con Ansible/K8s)
  PromptAPIEnabled: false
  Extensions: {
    "hapfgdhepnnjjhgfggcjdgfhjcdihjhj": {
      "installation_mode": "blocked"
    }
  }
  
  • Opción C: Migrar a navegadores sin implementación del Prompt API:
Firefox: Usar extensiones como LM Studio para modelos locales.

Brave: Bloquear Google Extensions via brave://flags/#extensions-on-chrome-webstore.

2. Auditar el consumo de recursos

Para equipos de infraestructura:
  • Limitar el almacenamiento de Chrome:
  # macOS: sudo launchctl limit maxfiles 10240 10240
  # Linux (systemd): sudo systemctl set-property user-.slice.slice MemoryLimit=4G
  
  • Monitorear ancho de banda:
  # Usar nethogs para Chrome
  sudo nethogs chrome
  
  • Desplegar alertas:
– Configurar Prometheus/Grafana para monitorear:

%LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions (tamaño en disco).

– Uso de RAM de procesos chrome.exe o Google Chrome Helper (Renderer).

3. Mitigar riesgos de seguridad

Para equipos de seguridad:
  • Sandboxing:
– Aplicar seccomp en Linux para restringir llamadas del proceso de Chrome:
    # Ejemplo con Docker (no aplica a Chrome nativo, pero es un patrón)
    docker run --security-opt seccomp=chrome-seccomp.json ...
    

– Usar Firejail para aislar Chrome:

    firejail --private --net=none google-chrome
    
  • Restringir permisos de Chrome:
– En Windows: Usar Applocker para bloquear la ejecución de chrome.exe con flags no autorizados.

– En Linux: Aplicar AppArmor con el perfil:

    # /etc/apparmor.d/google-chrome
    profile chrome flags=(attach_disconnected) {
      include <abstractions/base>
      deny /home/** rw,
      # Solo permitir acceso a directorios corporativos
      /opt/corp/** r,
      deny @{PROC}/** w,
    }
    

4. Alternativas al Prompt API

Para equipos de desarrollo:
  • Modelos locales ligeros:
Ollama (para desarrollo):
    ollama pull llama3
    ollama run llama3 "¿Qué es la memoria RAM?"
    

LM Studio (para macOS):

    brew install --cask lm-studio
    
  • APIs estándar:
– Usar WebAssembly para ejecutar modelos en el navegador (ej.: WebLLM).

WebRTC para procesamiento distribuido (ej.: TensorFlow.js).

5. Documentar políticas de uso de IA

Para equipos de compliance:
  • Redactar una política interna que incluya:
Qué APIs están permitidas (ej.: solo APIs de código abierto).

Límites de almacenamiento (ej.: «Nano no puede usarse en equipos con <16GB RAM").

Procesos de aprobación para APIs con términos propietarios.

  • Ejemplo de política:
  ## Política de Uso de IA en Navegadores
  - **Prohibido**: Prompt API (Chrome), Copilot (Edge).
  - **Permitido**:
    - Modelos locales: Ollama, LM Studio.
    - APIs estándar: WebLLM, TensorFlow.js.
  - **Aprobación requerida**: Cualquier integración con APIs de proveedores externos (Google, Microsoft).
  

Conclusión

Google Prompt API es el ejemplo más reciente de cómo los gigantes tecnológicos pueden imponer APIs propietarias bajo la bandera de «estándares web», violando los principios de transparencia y decentralización que han guiado a la web desde sus inicios. Para equipos de DevOps, infraestructura y seguridad, esto representa un riesgo concreto:

  • Compliance: Políticas externas que pueden entrar en conflicto con regulaciones internas.
  • Recursos: Consumo incontrolado de almacenamiento y RAM en flotas corporativas.
  • Seguridad: Modelos sin sandboxing que pueden ser explotados para exfiltración de datos.

La solución no es esperar a que Google «arregle» el problema, sino tomar el control: deshabilitar el Prompt API en entornos corporativos, auditar su presencia con herramientas como nethogs o htop, y migrar a alternativas basadas en estándares abiertos (WebAssembly, modelos locales). Como señalaba Alex Russell en su análisis sobre APIs propietarias, «cada vez que una API se convierte en parte de un navegador sin consulta a la comunidad, estamos un paso más cerca de perder la web como espacio público».

Fuentes

Google’s Prompt API

https://www.sans.org/blog/

https://developer.mozilla.org/en-US/docs/Web/API/Prompt_API

https://chromestatus.com/feature/5118547995265264

https://arxiv.org/abs/2404.01918

https://bugs.chromium.org/p/chromium/issues/detail?id=43210

https://httparchive.org/

https://webllm.mlc.ai/

https://www.tensorflow.org/js

https://infrequently.org/2020/05/are-we-really-living-in-a-post-privacy-world/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *