
CVE-2026-25126の概念実証で、PolarLearnにおけるフォーラム投票方向パラメータの不適切なランタイム検証を介した投票数操作を実証し、修正の詳細を含みます。
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 値をすべてダウンボートとして扱い、無効な値を永続化します。
無効な投票と null リセットを交互に送信することで、単一のユーザーが投票数を繰り返し減らすことができます。
fetchgit clone https://github.com/<your-username>/CVE-2026-25126-PoC.git
cd CVE-2026-25126-PoC
poc.js を開き、以下を置き換えます:
POST_ID を対象のフォーラム投稿 ID にCOOKIE を認証済みセッション Cookie にnode poc.js
各サイクル後、投票数が誤って減少するはずです。 フォーラムページを更新して、改ざんされたスコアを確認します。
厳格な実行時検証を実装することで修正されました:
"up"、"down"、または null のみ