
Laboratório baseado em Docker que reproduz o CVE-2024-31218, uma falha de criação de administrador do PocketBase sem autenticação no Webhood, com PoC, deteção e verificação de remediação.
Este projeto é um laboratório controlado de pesquisa de segurança e reprodução de vulnerabilidade para CVE-2024-31218, uma vulnerabilidade crítica de autenticação que afeta versões do Webhood anteriores à 0.9.1.
A vulnerabilidade está relacionada à criação não autenticada de uma conta de administrador do PocketBase quando nenhuma conta de administrador existe. Um atacante que consiga alcançar a API afetada pode ser capaz de criar uma conta administrativa sem autenticação prévia.
O objetivo deste laboratório é:
Segurança: Este projeto destina-se apenas a um ambiente de laboratório local isolado. A aplicação vulnerável nunca deve ser exposta à Internet pública ou usada contra sistemas sem autorização.
| Campo | Detalhes |
|---|
| CVE | CVE-2024-31218 |
| Projeto | Webhood |
| Versões afetadas | Webhood <= 0.9.0 |
| Versão corrigida | Webhood 0.9.1 |
| Severidade | Crítica |
| CVSS v3.1 | 9.8 |
| CWE | CWE-306 — Autenticação Ausente para Função Crítica |
| Vetor de Ataque | Rede |
| Complexidade do Ataque | Baixa |
| Privilégios Necessários | Nenhum |
| Interação do Usuário | Nenhuma |
| Confidencialidade | Alta |
| Integridade | Alta |
| Disponibilidade | Alta |
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
2. Descrição da Vulnerabilidade
A CVE-2024-31218 é causada por proteção de autenticação insuficiente em torno da criação de administrador na aplicação Webhood/PocketBase afetada.
Quando a aplicação não possui uma conta de administrador configurada, a funcionalidade de criação de administrador pode ser alcançada sem autenticação.
Um atacante capaz de alcançar a API afetada pode, portanto, tentar criar a primeira conta de administrador.
A exploração bem-sucedida pode resultar em acesso administrativo à aplicação.
A vulnerabilidade é classificada como:
CWE-306: Autenticação Ausente para Função Crítica
3. Versões Afetadas e Corrigidas
O intervalo vulnerável é:
Webhood <= 0.9.0
A vulnerabilidade foi corrigida em:
Webhood 0.9.1
A versão corrigida deve, portanto, ser usada para verificação de remediação.
4. Superfície de Ataque
A superfície de ataque relevante é a API administrativa do PocketBase.
A funcionalidade vulnerável envolve a criação de conta de administrador.
Conceitualmente, o fluxo de ataque é:
Atacante
|
| Requisição HTTP
v
API Webhood / PocketBase
|
| Endpoint de criação de administrador
v
Criação de conta de administrador
|
v
Acesso administrativo não autorizado
O ataque não requer uma sessão autenticada existente quando a condição vulnerável de administrador inicial está presente.
5. Causa Raiz
A causa raiz é uma falha no controle de autenticação.
A funcionalidade de criação de administrador não restringia suficientemente o acesso quando nenhuma conta de administrador existia.
A fronteira de segurança deve garantir que funcionalidades administrativas privilegiadas não possam ser abusadas por um cliente remoto não autenticado.
O comportamento vulnerável representa, portanto, uma verificação de autenticação ausente em torno de uma operação sensível à segurança.
6. Arquitetura do Laboratório Controlado
O laboratório reproduz o comportamento da API administrativa do PocketBase
subjacente à CVE-2024-31218.
O ambiente Docker usa o componente PocketBase diretamente em vez de
alegar empacotar a aplicação Webhood 0.9.0 completa.
A arquitetura do laboratório é:
+-------------------------+
| Máquina Hospedeira |
| |
| PowerShell / Python |
+------------+------------+
|
| 127.0.0.1:8090
v
+-------------------------+
| Contêiner Docker |
| |
| +-------------------+ |
| | PocketBase | |
| | API Administrativa| |
| +-------------------+ |
| |
+-------------------------+
O serviço está vinculado apenas ao localhost e não se destina a ser exposto
à Internet pública.
Todas as credenciais usadas durante a reprodução são credenciais sintéticas de laboratório.
7. Estrutura do Repositório
CVE-2024-31218-WEBHOOD-LAB/
│
├── README.md
│
├── vulnerable/
│ ├── Dockerfile
│ └── docker-compose.yml
│
├── exploit/
│ └── reproduce.py
│
├── detection/
│ └── detect.py
│
├── patched/
│ └── README.md
│
├── evidence/
│ └── README.md
│
└── blog/
└── CVE-2024-31218-Technical-Blog.pdf
8. Ambiente Vulnerável
O ambiente vulnerável foi projetado para reproduzir o comportamento da API
administrativa do PocketBase associado à CVE-2024-31218 em um contêiner
Docker isolado.
O laboratório usa o PocketBase diretamente como o componente afetado em vez de
alegar reproduzir a aplicação Webhood 0.9.0 completa.
A configuração do Docker irá:
- Construir o ambiente de laboratório.
- Iniciar o PocketBase localmente.
- Vincular o serviço ao localhost.
- Manter o serviço isolado de sistemas externos.
- Fornecer um ambiente reproduzível para testes.
- Permitir que o script de reprodução interaja com a API administrativa.
O laboratório atual usa uma conta de administrador sintética e não
contém dados de usuário ou credenciais reais.
9. Metodologia de Reprodução
O procedimento de reprodução foi projetado apenas para o laboratório local.
Passo 1 — Iniciar o contêiner vulnerável
docker compose up --build
Passo 2 — Verificar o serviço
Confirme que o serviço PocketBase usado para o laboratório em nível de componente está respondendo localmente.
Passo 3 — Executar o script de reprodução controlada
O script de reprodução enviará a requisição relevante para a instância vulnerável local.
Exemplo:
python exploit/reproduce.py
Passo 4 — Observar a resposta
A resposta deve demonstrar se a aplicação aceita a requisição de criação de administrador não autenticada.
Passo 5 — Verificar o estado resultante
O laboratório deve verificar se uma conta de administrador foi criada.
Nenhum alvo externo deve jamais ser usado.
10. Detecção
A detecção deve identificar indicadores associados a tentativas não autorizadas de criação de administrador.
Indicadores potenciais incluem:
Requisições para funcionalidade de criação de administrador
Requisições não autenticadas para endpoints administrativos
Criação inesperada de uma primeira conta de administrador
Requisições HTTP originadas de um cliente inesperado
Tentativas repetidas de criação de administrador
Criação de conta administrativa imediatamente após a inicialização da aplicação
O script de detecção está localizado em:
detection/detect.py
11. Remediação
A remediação primária é atualizar o Webhood para a versão corrigida:
Webhood 0.9.1
A versão vulnerável não deve ser usada em produção.
Uma solução alternativa documentada é restringir o acesso à funcionalidade da API de administrador afetada quando uma atualização não puder ser realizada imediatamente.
Após a remediação:
Pare o contêiner vulnerável.
Substitua a versão vulnerável pela versão corrigida.
Reconstrua o contêiner.
Inicie o ambiente corrigido.
Repita a tentativa de reprodução.
Confirme que o comportamento vulnerável não é mais possível.
Revise os logs da aplicação em busca de requisições administrativas inesperadas.
12. Remediação e Verificação
A correção oficial do Webhood para a CVE-2024-31218 foi verificada usando a versão de código-fonte real do Webhood `v0.9.1`.
O commit de correção é:
`735e7fa2814edeec9a2c07778ed51b3c018609f9`
A correção adiciona a migração:
`src/backend/migrations/1712252550_generate_random_admin.js`
A migração verifica se um administrador já existe. Se nenhum administrador existir, ela cria uma conta de administrador com uma senha gerada aleatoriamente. Isso impede que um solicitante não autenticado reivindique o primeiro administrador através do endpoint exposto `/api/admins`.
#### Procedimento de verificação
1. A tag de código-fonte oficial do Webhood `v0.9.1` foi obtida.
2. O backend foi construído localmente a partir do código-fonte oficial usando seu Dockerfile.
3. A imagem resultante foi executada no localhost na porta `8091`.
4. A mesma requisição não autenticada de criação de administrador usada contra o laboratório vulnerável foi reproduzida contra o backend corrigido.
5. O ambiente vulnerável anteriormente aceitou a requisição com HTTP `200`.
6. O backend corrigido `v0.9.1` rejeitou a mesma requisição com HTTP `401`.
Resposta observada do ambiente corrigido:
```text
HTTP status: 401
{"code":401,"message":"The request requires valid admin authorization token to be set.","data":{}}
Isso confirma que o caminho de ataque de criação de administrador não autenticado anteriormente demonstrado foi bloqueado no backend Webhood v0.9.1 construído localmente.
REMEDIAÇÃO VERIFICADA: SIM
Evidência:
evidence/05-remediation-verified.png
13. Impacto de Segurança
A exploração bem-sucedida pode fornecer privilégios administrativos a uma parte não autorizada.
Consequências potenciais incluem:
Acesso administrativo não autorizado
Modificação de dados da aplicação
Exposição de informações da aplicação
Modificação ou exclusão de registros
Abuso administrativo adicional da aplicação
A severidade é, portanto, classificada como Crítica de acordo com a avaliação CVSS publicada.
14. Evidências
O diretório evidence/ destina-se a conter capturas de tela demonstrando:
Inicialização da aplicação vulnerável
Status do contêiner Docker
Versão vulnerável
Requisição de reprodução
Comportamento vulnerável bem-sucedido
Saída de detecção
Versão corrigida
Reprodução falha/bloqueada após remediação
As capturas de tela não devem conter credenciais reais, informações pessoais, chaves de API ou outros dados sensíveis.
15. Limitações
Durante a preparação deste laboratório, o ambiente Windows local encontrou problemas ao iniciar o backend Linux do Docker.
O Windows retornou:
Error: 14098
The component store has been corrupted.
Os recursos necessários do Windows também estavam inicialmente desabilitados:
VirtualMachinePlatform
Microsoft-Windows-Subsystem-Linux
Portanto, qualquer resultado de reprodução ou captura de tela deve distinguir com precisão entre:
Pesquisa de vulnerabilidade
Configuração do laboratório
Procedimento de reprodução pretendido
Reprodução executada com sucesso
Nenhuma execução bem-sucedida de exploit deve ser alegada a menos que tenha sido realmente realizada no laboratório isolado.
16. Considerações de Segurança
Este projeto destina-se apenas a pesquisa de segurança autorizada.
O laboratório deve:
Executar localmente.
Evitar exposição pública.
Evitar credenciais reais.
Evitar dados reais de usuário.
Evitar testes contra sistemas de terceiros.
Usar contas de teste descartáveis.
Usar uma rede Docker isolada.
Destruir o ambiente vulnerável após os testes.
Exemplo de limpeza:
docker compose down
17. Referências
National Vulnerability Database — CVE-2024-31218
Aviso de segurança do Webhood
Repositório de código-fonte Webhood/PocketBase
Commit de correção associado à CVE-2024-31218
CWE-306 — Autenticação Ausente para Função Crítica
Especificação FIRST CVSS v3.1
18. Isenção de Responsabilidade
Este repositório é um projeto de educação em cibersegurança e pesquisa de vulnerabilidades.
A configuração vulnerável é reproduzida intencionalmente para testes controlados. Ela não deve ser implantada como um serviço acessível publicamente.
O autor não assume nenhuma responsabilidade pelo uso não autorizado das técnicas ou artefatos contidos neste repositório.