{"id":"CVE-2026-25126","summary":"PolarLearn's unvalidated vote direction allows vote count manipulation","details":"PolarLearn is a free and open-source learning program. Prior to version 0-PRERELEASE-15, the vote API route (`POST /api/v1/forum/vote`) trusts the JSON body’s `direction` value without runtime validation. TypeScript types are not enforced at runtime, so an attacker can send arbitrary strings (e.g., `\"x\"`) as `direction`. Downstream (`VoteServer`) treats any non-`\"up\"` and non-`null` value as a downvote and persists the invalid value in `votes_data`. This can be exploited to bypass intended business logic. Version 0-PRERELEASE-15 fixes the vulnerability.","aliases":["GHSA-ghpx-5w2p-p3qp"],"modified":"2026-09-18T11:30:35.643084162Z","published":"2026-01-29T22:06:37.224Z","database_specific":{"cwe_ids":["CWE-20"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/25xxx/CVE-2026-25126.json","unresolved_ranges":[{"extracted_events":[{"fixed":"0-PRERELEASE-15"}],"source":"AFFECTED_FIELD"}],"cna_assigner":"GitHub_M"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/25xxx/CVE-2026-25126.json"},{"type":"ADVISORY","url":"https://github.com/polarnl/PolarLearn/security/advisories/GHSA-ghpx-5w2p-p3qp"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-25126"},{"type":"FIX","url":"https://github.com/polarnl/PolarLearn/commit/e6227d94d0e53e854f6a46480db8cd1051184d41"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/polarnl/polarlearn","events":[{"introduced":"0"},{"fixed":"e6227d94d0e53e854f6a46480db8cd1051184d41"}],"database_specific":{"source":"REFERENCES"}}],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-25126.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N"}]}