O risco das APIs do Ollama abertas

Traduzido do inglês. Leia o original em English.


O problema

Ollama é um serviço de API que roda na sua própria máquina para você usar modelos de IA sem depender da nuvem de outra pessoa. Ele escuta na porta 11434 e responde em http://localhost:11434.

O problema é que o Ollama não vem com autenticação. Isso não é uma vulnerabilidade sozinho mas vira uma no momento em que a porta fica alcançável pela internet. Quem encontra-la usa seus modelos e seu hardware sem pedir licença.

O que pode dar errado

Sem autenticação e com a porta aberta, um atacante consegue fazer algumas coisas.

  • Conversar com seus modelos de IA
  • Baixar os modelos que estão na sua máquina
  • Rodar tarefas na sua GPU e na sua CPU

Se você roda Ollama numa máquina alugada a fatura chega do mesmo jeito, tenha você usado o serviço ou não. Outra pessoa usou.

Como eu encontrei isso

O comando ollama serve mostra que o serviço já está rodando assim que o Ollama está instalado e ativo. Então eu fui ver quantos deles estavam alcançáveis pela internet com o FOFA que é um motor de busca de ciberespaço.

Procurei máquinas com a porta 11434 exposta usando a consulta "Ollama is running" && port="11434". Essa assinatura funciona porque a raiz de uma instalação padrão do Ollama devolve exatamente esse texto então serve para achar instâncias vivas.

Consulta no FOFA.info buscando a porta 11434

A busca devolveu 65.766 hosts expostos.

Resultados do FOFA.info mostrando 65.766 instâncias do Ollama expostas
  • A porta 11434 estava alcançável em todas elas
  • Eu conseguia ler modelos e mandar requisições para as GPUs
  • Muitas eram hardware caro e o dono não fazia ideia

Como proteger seu serviço do Ollama

Se você usa Ollama existem três coisas que dá para fazer hoje.

1. Lista de IPs permitidos

Use um firewall e deixe passar só os IPs em que você confia.

2. Coloque autenticação na frente

Ponha um proxy na frente que peça um token antes de repassar qualquer coisa.

3. Feche a porta pública

Amarre o serviço em 127.0.0.1 para a porta não ser alcançável de fora da máquina.

Conclusão

Isso não é uma crítica ao Ollama. Ele entrega um serviço local e esse é o padrão correto. O problema começa quando um serviço local termina num IP público e ninguém olhou. Vinte minutos com um firewall resolvem tudo.