
Projeto defensivo de pesquisa de vulnerabilidades que compara o firmware vulnerável e corrigido do Grandstream GXP1600 para o CVE-2026-2329, usando extração SquashFS, engenharia reversa com Ghidra e rastreamento ARM ELF para documentar a remediação do fornecedor sem weaponized ex
Projeto de análise estática defensiva que compara o firmware Grandstream GXP1600 1.0.7.79 (vulnerável) e 1.0.7.81 (corrigido) para entender como o fornecedor corrigiu a falha no parse de requisições associada ao CVE-2026-2329.
Este repositório demonstra um fluxo de trabalho reprodutível de pesquisa de vulnerabilidades: preservar evidências, extrair firmware embutido, localizar um serviço-alvo, rastrear um caminho de API exposto, comparar implementações vulneráveis e corrigidas e documentar o impacto de segurança sem desenvolver ou transformar em arma um exploit.
A análise concentrou-se no binário do serviço web gs_web e no caminho de requisição .
/cgi-bin/api.values.getNo firmware 1.0.7.79, a análise estática identificou uma rotina de parse do token de requisição que usa um buffer local fixo na pilha (char acStack_68[68]) e copia dados do token controlados pela requisição sem uma verificação aparente de limite superior antes da escrita.
No firmware 1.0.7.81, a lógica correspondente trata a requisição de forma diferente: valida o ponteiro da requisição, calcula o comprimento da requisição, aloca um buffer na heap com tamanho strlen(request) + 1, copia a requisição e tokeniza a cópia da heap no próprio buffer. Isso remove a cópia de tamanho fixo para o buffer de pilha do caminho de parse observado e é consistente com a correção do tratamento inseguro da requisição.
Para uma visão rápida do achado, amigável para recrutadores e analistas, consulte Comparação Visual do Patch. Ela contém três diagramas reconstruídos e sanitizados abordando:
As figuras são explicitamente rotuladas como reconstruções baseadas nas notas registradas da análise no Ghidra, e não como capturas de tela da interface do Ghidra.
grandstream-cve-2026-2329-analysis/
├── README.md
├── LICENSE
├── .gitignore
├── docs/
│ ├── methodology.md
│ ├── findings.md
│ ├── visual-analysis.md
│ └── limitations.md
├── scripts/
│ ├── firmware_header_parser.py
│ └── extraction_reference.sh
├── hashes/
│ └── analyzed-files.sha256
└── screenshots/
└── README.md
As amostras analisadas de gs_web foram rastreadas por SHA-256:
| Firmware | Função | SHA-256 |
|---|---|---|
| 1.0.7.79 | Vulnerável | 29dd365affbc9aaa3a1f8833edda8a41a03813692004f890830fc5bbdf324dab |
| 1.0.7.81 | Corrigido | 0cac4c54426db16d9f738a0c0b4715c600754f0f17430a6330ab8421310a8942 |
As imagens do firmware do fornecedor e os binários extraídos não estão incluídos neste repositório.
gs_web.api.values.get e referências cruzadas para localizar a lógica relacionada ao tratamento de requisições.Consulte docs/methodology.md para mais detalhes.
Este repositório destina-se à pesquisa de segurança defensiva autorizada, análise de vulnerabilidades, educação e documentação técnica reproduzível. Ele não contém código de exploit, payloads armados, firmware do fornecedor, credenciais ou instruções para acesso não autorizado.
O projeto é uma análise estática de comparação de patches. Exploração dinâmica, testes em dispositivos reais e validação de explorabilidade estavam fora do escopo concluído. Consulte docs/limitations.md.
Vivian Onyinye Uba
Cibersegurança | Detecção de Ameaças | Pesquisa de Vulnerabilidades | Segurança OT/ICS