
Proof-of-Concept für CVE-2026-25126, das die Manipulation von Abstimmungsergebnissen in PolarLearn durch eine fehlerhafte Laufzeitvalidierung des Parameters für die Abstimmungsrichtung im Forum demonstriert, einschließlich Details zur Behebung.
Forschung: Joshua van Rijswijk
PoC für CVE-2026-25126, eine Sicherheitslücke mit hohem Schweregrad in der Geschäftslogik der PolarLearn-Forum-Abstimmungs-API.
Der Endpunkt POST /api/v1/forum/vote erzwingt keine strenge Laufzeitvalidierung des Feldes direction.
Da TypeScript-Typen zur Laufzeit nicht erzwungen werden, kann ein Angreifer beliebige Zeichenfolgen senden, die nachgelagert falsch verarbeitet werden.
Dies ermöglicht die Manipulation von Abstimmungszahlen durch die Erstellung sogenannter Geister-Downvotes.
Die API vertraut dem JSON-Body ohne Validierung:
const body: VoteRequestBody = await request.json()
const { postId, direction } = body
const result = await VoteServer(postId, direction)
Die nachgelagerte Logik behandelt jeden unerwarteten Nicht-Null-Wert als Downvote und speichert ungültige Werte.
Durch das Abwechseln einer ungültigen Abstimmung mit einem Null-Reset kann ein einzelner Benutzer die Abstimmungszahl wiederholt verringern.
fetch-Unterstützung)git clone https://github.com/<your-username>/CVE-2026-25126-PoC.git
cd CVE-2026-25126-PoC
Öffnen Sie poc.js und ersetzen Sie:
POST_ID durch die Ziel-Forum-Post-IDCOOKIE durch Ihr authentifiziertes Sitzungscookienode poc.js
Nach jedem Zyklus sollte die Abstimmungszahl fälschlicherweise sinken. Aktualisieren Sie die Forum-Seite, um den manipulierten Wert zu bestätigen.
Behoben durch Implementierung einer strengen Laufzeitvalidierung:
"up", "down" oder null