
CVE-2026-25126에 대한 개념 증명으로, PolarLearn에서 포럼 투표 방향 매개변수의 부적절한 런타임 검증을 통한 투표 수 조작을 시연하며, 수정 세부 사항을 포함합니다.
CVE-2026-25126에 대한 PoC로, PolarLearn 포럼 투표 API의 높은 심각도 비즈니스 로직 취약점입니다.
엔드포인트 POST /api/v1/forum/vote는 direction 필드에 대한 엄격한 런타임 검증을 적용하지 않습니다.
TypeScript 타입은 런타임에 강제되지 않으므로, 공격자는 다운스트림에서 잘못 처리되는 임의의 문자열을 보낼 수 있습니다.
이로 인해 소위 유령 반대 투표(ghost downvotes) 를 생성하여 투표 수를 조작할 수 있습니다.
API는 검증 없이 JSON 본문을 신뢰합니다:
const body: VoteRequestBody = await request.json()
const { postId, direction } = body
const result = await VoteServer(postId, direction)
다운스트림 로직은 예상치 못한 null이 아닌 값을 반대 투표로 처리하고, 잘못된 값을 영속화합니다.
잘못된 투표와 null 재설정을 번갈아 사용하면, 단일 사용자가 투표 수를 반복적으로 감소시킬 수 있습니다.
fetch 지원)git clone https://github.com/<your-username>/CVE-2026-25126-PoC.git
cd CVE-2026-25126-PoC
poc.js를 열고 다음을 교체하세요:
POST_ID를 대상 포럼 게시물 ID로COOKIE를 인증된 세션 쿠키로node poc.js
각 주기 후에 투표 수가 잘못 감소해야 합니다. 포럼 페이지를 새로 고쳐 조작된 점수를 확인하세요.
엄격한 런타임 검증을 구현하여 패치되었습니다:
"up", "down", 또는 null만 허용