Исследователи обнаружили сразу шесть уязвимостей в Ollama. Баги могли использоваться для выполнения различных вредоносных действий, включая отказ в обслуживании, отравление и кражу моделей.
Ollama — популярное решение для упаковки, деплоя и локального запуска больших языковых моделей (large language model, LLM) на устройствах под управлением Windows, Linux и macOS. Репозиторий проекта на GitHub на сегодняшний день был форкнут более 7600 раз.
Как рассказывают специалисты Oligo Security, нашедшие проблемы в Ollama, «в совокупности уязвимости позволяли выполнить широкий спектр вредоносных действий с помощью всего одного HTTP-запроса».
- CVE-2024-39719 (7,5 балла по шкале CVSS) — эксплуатация эндпоинта /api/create для определения существования файла на сервере (исправлено в версии 0.1.47).
- CVE-2024-39720 (8,2 балла по шкале CVSS) — out-of-bounds чтение ведет к аварийному завершению работы приложения с помощью эндпоинта /api/create, что приводит к отказу в обслуживании (DoS) (исправлено в версии 0.1.46).
- CVE-2024-39721 (7,5 балла по шкале CVSS) — истощение ресурсов и DoS при многократном вызове эндпоинта /api/create при передаче файла /dev/random в качестве input (исправлено в версии 0.1.34).
- CVE-2024-39722 (7,5 балла по шкале CVSS) — path traversal в эндпоинте api/push раскрывает файлы, существующие на сервере, а также всю структуру каталогов, где развернута Ollama (исправлено в версии 0.1.46).
- CVE отсутствует (CWE-668) — уязвимость может привести к отравлению модели через эндпоинт /api/pull из ненадежного источника (не исправлено).
- CVE отсутствует (CWE-285) — уязвимость может привести к краже модели через эндпоинт /api/push (не исправлено).
Из-за двух пока неисправленных уязвимостей разработчики Ollama рекомендуют пользователям ограничивать эндпоинты, которые выходят в интернет, с помощью прокси-сервера или WAF.
«Это означает, что по умолчанию не все эндпоинты должны быть доступны через интернет, — объясняют специалисты Oligo Security. — Опасное предположение. Не все знают об этом и занимаются http-маршрутизацией Ollama. В настоящее время эти эндпоинты доступны через порт Ollama по умолчанию в рамках любого развертывания, без какого-либо разделения или поясняющей документации».
Исследователи пишут, что выявили в интернете 9 831 уникальную установку Ollama. Большинство из них расположены в Китае, США, Германии, Южной Корее, Тайване, Франции, Великобритании, Индии, Сингапуре и Гонконге. При этом каждый четвертый сервер признан уязвимым перед обнаруженными уязвимостями.