
Preuve de concept pour CVE-2026-25126 démontrant la manipulation du comptage des votes dans PolarLearn via une validation d'exécution inappropriée du paramètre de direction du vote du forum, avec les détails du correctif.
Recherche : Joshua van Rijswijk
PoC pour CVE-2026-25126, une vulnérabilité de logique métier de haute sévérité dans l'API de vote du forum PolarLearn.
Le point de terminaison POST /api/v1/forum/vote ne parvient pas à appliquer une validation stricte au moment de l'exécution du champ direction.
Étant donné que les types TypeScript ne sont pas appliqués au moment de l'exécution, un attaquant peut envoyer des chaînes arbitraires qui sont traitées de manière incorrecte en aval.
Cela permet de manipuler les compteurs de votes en créant ce que l'on appelle des votes négatifs fantômes.
L'API fait confiance au corps JSON sans validation :
const body: VoteRequestBody = await request.json()
const { postId, direction } = body
const result = await VoteServer(postId, direction)
La logique en aval traite toute valeur inattendue non nulle comme un vote négatif et persiste les valeurs invalides.
En alternant un vote invalide avec une réinitialisation à null, un seul utilisateur peut décrémenter à plusieurs reprises le compteur de votes.
fetch)git clone https://github.com/<your-username>/CVE-2026-25126-PoC.git
cd CVE-2026-25126-PoC
Ouvrez poc.js et remplacez :
POST_ID par l'ID du post du forum cibleCOOKIE par votre cookie de session authentifiénode poc.js
Après chaque cycle, le compteur de votes devrait diminuer de manière incorrecte. Actualisez la page du forum pour confirmer le score manipulé.
Corrigé en implémentant une validation stricte au moment de l'exécution :
"up", "down" ou null