En vivo 18.11 · Cohorte 318 nov, 19:00 MSK — taller práctico gratuito de agentes IA · Cohorte 3 en vivo inicia 23.11Taller 18 nov →Cohorte 3 (23.11)
LanzamientoAPI / Producto · Listo para usarSimon Willison→ original

llm 0.37.2 cierra una fuga: la clave de OpenAI podía llegar a un proveedor externo

En la herramienta CLI llm de Simon Willison se han encontrado dos vulnerabilidades: la clave de OpenAI podía llegar a un proveedor externo conectado como endpoint compatible con OpenAI. El problema lo comunicó el investigador Daniel de Araujo. La versión 0.37.2 cierra ambos agujeros. Si usas llm tanto con OpenAI como con APIs ajenas, actualiza y plantéate rotar la clave.

Procesado por IA desde Simon Willison; editado por Hamidun News
llm 0.37.2 cierra una fuga: la clave de OpenAI podía llegar a un proveedor externo
Fuente: Simon Willison. Collage: Hamidun News.
Escuchar artículo
Ficha técnica y cifras clave
ParámetroDatos
Fuente originalSimon Willison ↗
Editor jefe
Caso 1la clave indicada en api_key_name nunca se guardó
Caso 2un modelo con responses: true y la opción -o chat_completions 1
Soluciónactualizar a llm 0.37.2 y revisar las claves

La utilidad llm de Simon Willison se ha convertido para muchos desarrolladores en una navaja suiza para hablar con modelos de lenguaje desde la terminal. Puede conectarse no solo a OpenAI, sino a cualquier proveedor con una API compatible con OpenAI. Precisamente en esa flexibilidad se encontró el problema: la versión 0.37.2 corrige una vulnerabilidad por la que una clave secreta de OpenAI podía enviarse al destinatario equivocado.

Qué ocurrió

llm tiene un mecanismo para conectar endpoints de terceros mediante el archivo extra-openai-models.yaml. Desde la versión 0.37 lo gestiona un comando específico, llm openai endpoint add. La idea es sencilla: muchos proveedores y servidores locales replican el formato de la API de OpenAI, así que se pueden describir en una configuración y usar como modelos normales.

El investigador Daniel de Araujo descubrió dos formas en que tu clave de OpenAI podía acabar en un endpoint de terceros. Sobre el tema hay dos avisos de seguridad en GitHub: GHSA-v9h7-jj4g-f862 y GHSA-r639-rr7r-x72w.

  • La clave de api_key_name no estaba guardada. Para un endpoint de terceros se indica con qué nombre está almacenada su clave. Si esa clave nunca se guardó, la utilidad no debía sustituirla por ninguna otra. Según la descripción de la vulnerabilidad, sustituía la clave de OpenAI configurada.
  • Un modelo con responses: true se ejecutó con -o chat_completions 1. Esta combinación cambiaba la solicitud a otro modo de funcionamiento y la clave también podía ir a parar al lugar equivocado.

En ambos casos no hace falta mala intención. Basta con olvidar añadir una clave o pasar una opción, y el secreto acaba en manos de un tercero.

Por qué es un problema

Imagina una configuración típica. Tienes en llm guardada una clave de OpenAI para tareas de trabajo. Has conectado el endpoint de un proveedor pequeño o un proxy ajeno para comparar modelos. Escribiste el nombre de la clave en la configuración, pero aún no añadiste la clave en sí. Ejecutas el comando y una solicitud con tu clave de OpenAI se dirige a un servidor que no controlas.

Ese proveedor se queda con una clave operativa, con tu límite y tu facturación. Cualquier endpoint de terceros, sobre todo uno casero o experimental, podría registrarla. Es una fuga corriente de un secreto por un error de configuración, no un ataque exótico.

Qué hacer

  1. Actualizar a llm 0.37.2. Es el paso principal y cierra ambos escenarios.
  2. Abrir extra-openai-models.yaml y revisar qué endpoints están descritos. Comprueba que cada uno tenga api_key_name y que la clave correspondiente esté realmente guardada.
  3. Recordar si alguna vez ejecutaste modelos con responses: true junto con -o chat_completions 1. Si es así y el endpoint no pertenece a OpenAI, es mejor considerar la clave comprometida.
  4. Ante la menor duda, volver a emitir la clave de OpenAI. Es barato y no hace falta correr un riesgo adicional.

Hay también una lección general. Las claves de distintos proveedores deben separarse con rigor. Si tienes varios endpoints, la clave de OpenAI no debe ser el valor que la herramienta usa por defecto. Para experimentar con APIs ajenas conviene crear claves independientes con límites acotados.

Limitaciones

La nota de la versión no da detalles sobre cómo se explota exactamente la vulnerabilidad ni datos sobre casos reales de fuga. El autor describe el problema como un envío accidental de la clave, no como un ataque que pueda lanzarse de forma remota. Esto reduce la gravedad, pero no elimina la necesidad de actualizar: los errores de configuración le pasan a todo el mundo.

Una clase similar de errores aparece en otras herramientas en las que un mismo cliente trabaja con varios proveedores. Todo lo que acepte una dirección «compatible con OpenAI» y a la vez guarde una clave de OpenAI merece comprobarse en busca del mismo comportamiento: qué se sustituye cuando no se encuentra clave para la dirección.

Conclusión práctica

Si usas llm solo con OpenAI, apenas te afecta. Si has conectado endpoints de terceros, actualiza ahora y revisa la configuración. Y ante cualquier combinación de opciones sospechosa, vuelve a emitir la clave.

Historia

Preguntas frecuentes sobre la noticia

¿Qué se sabe sobre Qué ocurrió?

llm tiene un mecanismo para conectar endpoints de terceros mediante el archivo extra-openai-models.yaml. Desde la versión 0.37 lo gestiona un comando específico, llm openai endpoint add. La idea es sencilla: muchos proveedores y servidores locales replican el formato de la API de OpenAI, así que se pueden describir en una configuración y usar como modelos normales. El investigador Daniel de Araujo descubrió dos formas en que tu clave de OpenAI podía acabar en un endpoint de terceros.

¿Qué se sabe sobre Por qué es un problema?

Imagina una configuración típica. Tienes en llm guardada una clave de OpenAI para tareas de trabajo. Has conectado el endpoint de un proveedor pequeño o un proxy ajeno para comparar modelos. Escribiste el nombre de la clave en la configuración, pero aún no añadiste la clave en sí. Ejecutas el comando y una solicitud con tu clave de OpenAI se dirige a un servidor que no controlas. Ese proveedor se queda con una clave operativa, con tu límite y tu facturación.

¿Qué se sabe sobre Qué hacer?

Actualizar a llm 0.37.2. Es el paso principal y cierra ambos escenarios. Abrir extra-openai-models.yaml y revisar qué endpoints están descritos. Comprueba que cada uno tenga api_key_name y que la clave correspondiente esté realmente guardada. Recordar si alguna vez ejecutaste modelos con responses: true junto con -o chat_completions 1. Si es así y el endpoint no pertenece a OpenAI, es mejor considerar la clave comprometida. Ante la menor duda, volver a emitir la clave de OpenAI.

ZK
Zhemal Khamidun — CPO de Alpina Digital, product manager de AlpinaGPT. Crea productos de IA desde 2019. Hamidun News es un proyecto personal que creció hasta ser un agregador en producción con más de 6.000 lectores.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
¿Qué te parece?
Cargando comentarios…