
CVE-2026-7482 힙 버퍼 오버리드(heap out-of-bounds read)를 Ollama GGUF 로딩 및 양자화 과정에서 재현하며, 양자화된 아티팩트에 대한 차등 분석을 통해 OOB 영향력을 입증합니다.
이 저장소는 취약한 Ollama GGUF 로딩 및 양자화 경로에서 발생하는 힙 out-of-bounds 읽기인 CVE-2026-7482에 대한 로컬 재현 스크립트를 포함합니다.
이 작업의 중요한 결과는 좁은 범위에 한정됩니다: 힙 OOB 조건을 안정적으로 발생시키고 OOB의 영향을 받는 양자화된 GGUF 아티팩트를 생성할 수 있었습니다. 그러나 평문 비밀 복구나 결과 아티팩트에서 카나리 문자열의 직접 추출과 같은 명확한 블랙박스 영향은 입증하지 못했습니다.
exp.py는 두 개의 GGUF 파일을 생성합니다:
두 파일 모두 로컬 Ollama API를 통해 취약한 Ollama 인스턴스에 업로드하고, /api/create로 양자화를 트리거한 다음, 생성된 GGUF 블롭을 로컬 Docker 컨테이너에서 복사하고, 악의적인 출력을 0 대조군 출력과 비교합니다.
차등 비교는 취약한 양자화 경로가 원래 악의적인 GGUF 파일에 존재하지 않는 바이트를 사용했음을 보여주기 때문에 유용합니다. 제 테스트에서 이 동작은 Ollama 0.17.0에서 안정적이었고 수정된 0.17.1 경로에서는 거부되었습니다.
requests가 포함된 Python 30.17.0ollama-old-test)실험실 대상 예시:
docker run -d --name ollama-old-test -p 11435:11434 ollama/ollama:0.17.0
유일한 Python 의존성을 설치합니다:
python3 -m pip install requests
http://localhost:11435 및 컨테이너 ollama-old-test에 대해 기본 테스트를 실행합니다:
python3 exp.py
명시적 인자:
python3 exp.py http://localhost:11435 ollama-old-test Q4_K_M F16
python3 exp.py http://localhost:11435 ollama-old-test Q8_0 F16
python3 exp.py http://localhost:11435 ollama-old-test Q8_0 F32
스크립트는 다음과 같은 로컬 아티팩트를 작성합니다:
malicious_model.ggufcontrol_model.ggufquantized_model.ggufcontrol_quantized_model.ggufq8_dequantized_f32.binq8_pseudo_f16.binq8_pseudo_f16.txt로컬 테스트에서 취약한 Ollama 버전은 악의적인 GGUF 파일에 해당 바이트가 포함되지 않았음에도 불구하고 악의적인 텐서 페이로드가 0 대조군 텐서와 다른 양자화된 출력을 생성했습니다.
이는 OOB의 영향을 받는 아티팩트를 보여주기에 충분합니다. 그러나 실용적인 블랙박스 데이터 공개를 주장하기에는 부족합니다.
또한 동시 모델 프롬프트에서 카나리 스타일 데이터를 테스트하고 생성된 아티팩트, Q8_0 역양자화 float32 바이트 및 의사-F16 재구성 출력을 검색했습니다. 정확한 카나리나 의미 있는 평문 조각을 복구하지 못했습니다.
가능한 이유는 바이트가 원시 힙 메모리로 복사되지 않기 때문입니다. 바이트는 모델 변환 및 양자화 파이프라인을 통과합니다:
heap bytes -> F16/F32 텐서 값으로 해석 -> 변환/양자화 -> GGUF 텐서 출력
이 경로는 특히 Q4_K_M과 같은 양자화된 형식에서 손실이 있습니다. Q8_0은 Q4_K_M보다 더 많은 수치 정보를 보존하지만, 블랙박스 스타일 테스트에서 여전히 안정적인 평문 복구를 생성하지 못했습니다.
이는 로컬 실험실 재현 및 아티팩트 분석 보조 도구입니다.
안정적인 원격 비밀 유출 프리미티브를 제공하지 않습니다. 또한 Ollama의 생성된 블롭을 테스트 컨테이너에서 복사하려면 로컬 Docker 접근 권한이 필요하므로 분석 단계는 순수한 원격 블랙박스 워크플로가 아닙니다.
테스트의 실용적 결론은 다음과 같습니다:
0x0OZ의 별도 PoC 저장소도 있습니다:
해당 구현은 생성된 모델 아티팩트를 제어된 레지스트리로 푸시하여 더 강력한 화이트박스 스타일 워크플로를 시연합니다. 제 PR의 레지스트리 업로드 흐름 수정으로 로컬 실험실에서 깔끔하게 완료됩니다:
더 나은 엔드투엔드 아티팩트 수집 경로가 있더라도 동일한 데이터 품질 주의 사항이 여전히 중요합니다: 출력은 양자화/모델 변환된 데이터이지 직접적인 원시 힙 덤프가 아닙니다.
이 저장소는 승인된 취약점 연구 및 방어적 재현 전용입니다. 소유한 시스템이나 명시적 평가 허가를 받은 시스템에 대해서만 테스트하십시오.