CVE-2026-25126 的概念验证(PoC),这是 PolarLearn 论坛投票 API 中的一个高危业务逻辑漏洞。
端点 POST /api/v1/forum/vote 未能对 direction 字段执行严格的运行时验证。
由于 TypeScript 类型在运行时不会被强制执行,攻击者可以发送任意字符串,而这些字符串会在下游被错误处理。
这允许通过创建所谓的幽灵反对票来操纵投票计数。
该 API 信任 JSON 请求体而不进行验证:
const body: VoteRequestBody = await request.json()
const { postId, direction } = body
const result = await VoteServer(postId, direction)
下游逻辑将任何意外的非空值视为反对票,并持久化无效值。
通过交替使用无效投票和 null 重置,单个用户可以反复递减投票计数。
fetch 支持)git clone https://github.com/<your-username>/CVE-2026-25126-PoC.git
cd CVE-2026-25126-PoC
打开 poc.js 并替换:
POST_ID 为目标论坛帖子 IDCOOKIE 为你的已认证会话 Cookienode poc.js
每个周期后,投票计数应错误地减少。 刷新论坛页面以确认被操纵的分数。
通过实现严格的运行时验证进行修补:
"up"、"down" 或 null