
A Proof of Concept (PoC) exploit for CVE-2025-70886, a persistent denial-of-service vulnerability in Halo CMS (v2.22.4 and earlier) that allows remote attackers to crash the admin comment interface by submitting malformed payloads.
Une preuve de concept (PoC) pour CVE-2025-70886, une vulnérabilité persistante de déni de service dans Halo CMS (v2.22.4 et versions antérieures) qui permet à un attaquant distant de planter l'interface de commentaires administrateur en soumettant des charges malformées.
Un problème dans Halo v2.22.4 et antérieur permet à un attaquant distant de provoquer un déni de service via une charge utile falsifiée envoyée au point de terminaison de soumission de commentaires publics.
Un attaquant peut soumettre une charge utile de commentaire falsifiée/malformée (champs manquants tels que subjectRef.version) via le point de terminaison de soumission de commentaires publics. Le commentaire malformé est stocké et déclenche ensuite une exception non gérée lorsque la page de commentaires admin le lit/l'affiche, résultant en un déni de service persistant pour la page de gestion des commentaires jusqu'à ce que l'enregistrement incriminé soit supprimé ou que la validation/gestion côté serveur soit corrigée.
À la fin de l'exécution, le job Summary publie un tableau montrant chaque version de Halo et son statut :
likely_vulnerable — L'API a retourné HTTP 500 lors de la vérification.not_confirmed — L'API n'a pas retourné HTTP 500.Résultats : https://github.com/HowieHz/CVE-2025-70886/actions/runs/21742076721
⚠️ Avertissement : Réservé aux environnements de test autorisés
Cloner le dépôt PoC
git clone https://github.com/HowieHz/CVE-2025-70886
cd CVE-2025-70886
Déployer une instance de test Halo CMS
Initialiser le système
Exécuter le script PoC (Assurez-vous que l'environnement Node.js est configuré.)
node src/poc.js --base-url http://localhost:8090 --payload fixtures/payload.sample.json
Options disponibles :
--base-url : URL de base du site Halo (par exemple http://localhost:8090)--payload : Chemin vers un fichier JSON de charge utile de commentaire valide capturée--dry-run : Afficher uniquement la charge utile modifiée, ne pas envoyer--header : En-tête supplémentaire sous forme 'Clé: Valeur' (répétable)--help : Afficher l'aideVérifier la vulnérabilité