
Prueba de concepto para CVE-2026-25126 que demuestra la manipulación del recuento de votos en PolarLearn mediante una validación incorrecta en tiempo de ejecución del parámetro de dirección del voto en el foro, con detalles de la corrección.
Investigación: Joshua van Rijswijk
PoC para CVE-2026-25126, una vulnerabilidad de lógica de negocio de alta severidad en la API de votación del foro de PolarLearn.
El endpoint POST /api/v1/forum/vote no aplica una validación estricta en tiempo de ejecución del campo direction.
Debido a que los tipos de TypeScript no se aplican en tiempo de ejecución, un atacante puede enviar cadenas arbitrarias que se manejan incorrectamente en etapas posteriores.
Esto permite la manipulación de los conteos de votos mediante la creación de los llamados votos negativos fantasma.
La API confía en el cuerpo JSON sin validación:
const body: VoteRequestBody = await request.json()
const { postId, direction } = body
const result = await VoteServer(postId, direction)
La lógica posterior trata cualquier valor inesperado no nulo como un voto negativo y persiste valores inválidos.
Al alternar un voto inválido con un reinicio nulo, un solo usuario puede disminuir repetidamente el conteo de votos.
fetch)git clone https://github.com/<your-username>/CVE-2026-25126-PoC.git
cd CVE-2026-25126-PoC
Abra poc.js y reemplace:
POST_ID con el ID de la publicación del foro objetivoCOOKIE con su cookie de sesión autenticadanode poc.js
Después de cada ciclo, el conteo de votos debería disminuir incorrectamente. Actualice la página del foro para confirmar la puntuación manipulada.
Corregido mediante la implementación de validación estricta en tiempo de ejecución:
"up", "down" o null