CVE-2026-46395
HAX CMS vulnérable à la divulgation de clé privée via une implémentation HMAC défectueuse
- Publié
- 5 juin 2026
- Mise à jour
- 5 juin 2026
- Attribution de CNA
- GitHub_M
- Preuve observée
- 8 août 2026
CVSS primaire
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XFaible · 30 prochains jours
- Percentile
- 22,3 %
- Date du modèle
- 21 sept. 2026
EPSS est une estimation statistique, et non une certitude ou une mesure d'impact. Combinez-le avec CVSS, le statut KEV, l'exposition et votre environnement.
Résumé
HAX CMS aide à gérer un univers de microsites avec des backends PHP ou Node.js. Avant la version 26.0.0, la fonction `hmacBase64()` dans le backend Node.js de HAXcms contient deux erreurs critiques de mise en œuvre cryptographique qui, ensemble, permettent à tout attaquant non authentifié d'extraire la clé de signature privée du système et de forger des JSON Web Tokens (JWT) arbitraires de niveau administrateur, leur permettant d'obtenir un accès administrateur complet avec une seule requête HTTP. Premièrement, la fonction transmet la chaîne littérale « 0 » comme clé de signature HMAC au lieu du paramètre de clé, ce qui fait que chaque instance HAXcms calcule des HMAC identiques pour la même entrée. Ensuite, après avoir calculé le HMAC, la fonction concatène le paramètre de clé réel, qui est « this.privateKey + this.salt », le secret de signature maître du système, directement sur la sortie. Le tampon combiné est encodé en base64 et renvoyé comme jeton. Chaque jeton base64url produit a la même structure : 32 octets de HMAC signés avec « 0 » et N octets de `privateKey+salt`. Un attaquant décode en base64 n'importe quel jeton, écarte les 32 premiers octets et lit directement la clé privée. Le point de terminaison `/system/api/connectionSettings` n'est pas authentifié et renvoie plusieurs jetons générés par cette fonction. Une seule requête GET vers ce point de terminaison expose la clé privée. Le backend PHP implémente cette fonction correctement avec la clé réelle et ne renvoie que le hachage. La version PHP produit des jetons de 44 caractères, tandis que la version Node.js cassée produit des jetons de 139 caractères ou plus. La version 26.0.0 corrige le problème.
Sources
1PoC et writeup pour CVE-2026-46395 : divulgation non authentifiée de clé privée via un HMAC cassé dans HAXcms Node.js (CWE-321/CWE-200). Recherche en sécurité autorisée uniquement.
Utilisation responsable
Utilisez les informations de vulnérabilité uniquement sur les systèmes que vous possédez ou que vous êtes autorisé à tester. Kitploit renvoie aux métadonnées de la recherche publique et ne stocke pas de code d'exploitation ni de charges utiles malveillantes.