El riesgo de las APIs de Ollama abiertas

Traducido del inglés. Lee el original en English.


El problema

Ollama es un servicio de API que corre en tu propia máquina para que puedas usar modelos de IA sin depender de la nube de otra persona. Escucha en el puerto 11434 y responde en http://localhost:11434.

El problema es que Ollama no trae autenticación. Eso no es una vulnerabilidad por sí solo pero se convierte en una en el momento en que el puerto es alcanzable desde internet. Quien lo encuentre puede usar tus modelos y tu hardware sin preguntar.

Qué puede salir mal

Sin autenticación y con el puerto abierto, un atacante puede hacer varias cosas.

  • Hablar con tus modelos de IA
  • Descargar los modelos que tienes en la máquina
  • Lanzar tareas en tu GPU y tu CPU

Si corres Ollama en una máquina alquilada la factura llega igual hayas usado el servicio o no. Lo usó otra persona.

Cómo lo encontré

El comando ollama serve te dice que el servicio ya está corriendo en cuanto Ollama está instalado y activo. Así que revisé cuántos de ellos eran alcanzables desde internet con FOFA que es un motor de búsqueda de ciberespacio.

Busqué máquinas con el puerto 11434 expuesto usando la consulta "Ollama is running" && port="11434". Esa firma funciona porque la raíz de una instalación de Ollama devuelve exactamente ese texto así que sirve para encontrar instancias vivas.

Consulta en FOFA.info buscando el puerto 11434

La búsqueda devolvió 65.766 hosts expuestos.

Resultados de FOFA.info mostrando 65.766 instancias de Ollama expuestas
  • El puerto 11434 estaba alcanzable en todas
  • Podía leer modelos y mandar peticiones a sus GPUs
  • Muchas eran hardware caro y el dueño no tenía idea

Cómo proteger tu servicio de Ollama

Si usas Ollama hay tres cosas que puedes hacer hoy.

1. Lista blanca de IPs

Usa un firewall y deja pasar solo las IPs en las que confías.

2. Ponle autenticación delante

Coloca un proxy delante que pida un token antes de reenviar cualquier cosa.

3. Cierra el puerto público

Ata el servicio a 127.0.0.1 para que el puerto no sea alcanzable desde fuera de la máquina.

Conclusión

Esto no va contra Ollama. Trae un servicio local y ese es el comportamiento correcto por defecto. El problema empieza cuando un servicio local termina en una IP pública y nadie lo revisó. Veinte minutos con un firewall son toda la solución.