
Proof-of-concept per CVE-2026-25126 che dimostra la manipolazione del conteggio dei voti in PolarLearn tramite una validazione runtime impropria del parametro di direzione del voto nel forum, con dettagli sulla correzione.
Ricerca: Joshua van Rijswijk
PoC per CVE-2026-25126, una vulnerabilità di logica di business ad alta gravità nell'API di voto del forum PolarLearn.
L'endpoint POST /api/v1/forum/vote non applica una validazione rigorosa a runtime del campo direction.
Poiché i tipi TypeScript non vengono applicati a runtime, un attaccante può inviare stringhe arbitrarie che vengono gestite in modo errato a valle.
Ciò consente la manipolazione dei conteggi dei voti creando i cosiddetti ghost downvotes (voti negativi fantasma).
L'API si fida del corpo JSON senza validazione:
const body: VoteRequestBody = await request.json()
const { postId, direction } = body
const result = await VoteServer(postId, direction)
La logica a valle tratta qualsiasi valore inatteso non nullo come un voto negativo e persiste valori non validi.
Alternando un voto non valido con un reset a null, un singolo utente può decrementare ripetutamente il conteggio dei voti.
fetch)git clone https://github.com/<your-username>/CVE-2026-25126-PoC.git
cd CVE-2026-25126-PoC
Aprire poc.js e sostituire:
POST_ID con l'ID del post del forum di destinazioneCOOKIE con il proprio cookie di sessione autenticatonode poc.js
Dopo ogni ciclo, il conteggio dei voti dovrebbe diminuire in modo errato. Aggiornare la pagina del forum per confermare il punteggio manipolato.
Corretto implementando una validazione rigorosa a runtime:
"up", "down" o null