
Projet défensif de recherche de vulnérabilités comparant les firmwares vulnérable et corrigé du Grandstream GXP1600 pour CVE-2026-2329, à l'aide de l'extraction SquashFS, de la rétro-ingénierie avec Ghidra et du traçage ELF ARM, afin de documenter la remédiation du fournisseur sans ex weaponisé.
Projet défensif d'analyse statique comparant le firmware Grandstream GXP1600 1.0.7.79 (vulnérable) et 1.0.7.81 (corrigé) afin de comprendre comment le fournisseur a remédié à la faille d'analyse des requêtes associée à CVE-2026-2329.
Ce dépôt démontre un flux de travail reproductible de recherche en vulnérabilité : conserver les preuves, extraire le firmware embarqué, localiser un service cible, tracer un chemin d'API exposé, comparer les implémentations vulnérable et corrigée, et documenter l'impact de sécurité sans développer ni armer d'exploit.
L'analyse s'est concentrée sur le binaire de service web gs_web et sur le chemin de requête .
/cgi-bin/api.values.getDans le firmware 1.0.7.79, l'analyse statique a identifié une routine d'analyse de jeton de requête qui utilise un tampon de pile local fixe (char acStack_68[68]) et copie des données de jeton contrôlées par la requête sans vérification apparente de limite supérieure avant l'écriture.
Dans le firmware 1.0.7.81, la logique correspondante traite la requête différemment : elle valide le pointeur de requête, calcule la longueur de la requête, alloue un tampon sur le tas dimensionné à strlen(request) + 1, copie la requête, puis tokenise la copie sur le tas en place. Cela supprime la copie de tampon de pile à taille fixe du chemin d'analyse observé et est cohérent avec une remédiation de la gestion non sécurisée des requêtes.
Pour une vue rapide du constat, adaptée aux recruteurs et aux analystes, voir Comparaison visuelle des correctifs. Elle contient trois diagrammes reconstitués et assainis couvrant :
Les figures sont explicitement étiquetées comme des reconstitutions à partir des notes d'analyse Ghidra enregistrées, et non comme des captures d'écran de l'interface 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
Les échantillons gs_web analysés ont été suivis par SHA-256 :
| Firmware | Rôle | SHA-256 |
|---|---|---|
| 1.0.7.79 | Vulnérable | 29dd365affbc9aaa3a1f8833edda8a41a03813692004f890830fc5bbdf324dab |
| 1.0.7.81 | Corrigé | 0cac4c54426db16d9f738a0c0b4715c600754f0f17430a6330ab8421310a8942 |
Les images firmware du fournisseur et les binaires extraits ne sont pas inclus dans ce dépôt.
gs_web.api.values.get et les références croisées pour localiser la logique de traitement des requêtes associée.Voir docs/methodology.md pour plus de détails.
Ce dépôt est destiné à la recherche défensive en sécurité autorisée, à l'analyse de vulnérabilité, à l'éducation et à la documentation technique reproductible. Il ne contient pas de code d'exploitation, de charges utiles armées, de firmware du fournisseur, d'identifiants ou d'instructions pour un accès non autorisé.
Le projet est une analyse statique comparative de correctifs. L'exploitation dynamique, les tests sur appareil réel et la validation de l'exploitabilité sortaient du périmètre réalisé. Voir docs/limitations.md.
Vivian Onyinye Uba
Cybersécurité | Détection de menaces | Recherche en vulnérabilité | Sécurité OT/ICS