[Bounty] SITCON 學生計算機年會 售票系統邀請碼使用次數重置漏洞 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2026-01084
  •  發信 Vendor: SITCON 學生計算機年會
  • Title: [Bounty] SITCON 學生計算機年會 售票系統邀請碼使用次數重置漏洞
  • Introduction: 取消自己的報名時,系統會把「整張票券底下所有邀請碼」的使用次數一起扣減,導致任何登入使用者可透過重複「報名→取消」無限重置(含他人已用完)的邀請碼,繞過邀請制票券的名額與存取控制

處理狀態

目前狀態

公開
Last Update : 2026/09/29
  • 新提交
  • 已審核
  • 已通報
  • 已修補
  • 未複測
  • 公開

處理歷程

  • 2026/08/24 23:48:52 : 新提交 (由 0x52 0x79 0x61 0x6e 更新此狀態)
  • 2026/08/24 23:54:03 : 新提交 (由 0x52 0x79 0x61 0x6e 更新此狀態)
  • 2026/08/28 18:31:33 : 審核中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/09/21 09:26:42 : 已修補 (由 組織帳號 更新此狀態)
  • 2026/09/29 03:00:12 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2026-01084
  • 通報者:ryantseng (0x52 0x79 0x61 0x6e)
  • 風險:中
  • 類型:邏輯漏洞 (Logic Flaws)

參考資料

攻擊者可經由該漏洞繞過網站邏輯行為進行惡意攻擊。

漏洞說明: OWASP - Testing for business logic
https://www.owasp.org/index.php/Testing_for_business_logic

漏洞說明: CWE-840: Business Logic Errors
https://cwe.mitre.org/data/definitions/840.html
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://tickets.sitcon.org/

敘述

取消報名的 API PUT /api/registrations/:id/cancel 在還原邀請碼使用次數(usedCount)時,
使用了 updateMany({ where: { ticketId } }),將該票券底下所有usedCount值小於0的邀請碼
各減 1,而不是只還原「這筆報名實際使用的那一張」

根本原因是資料模型 Registration 並未記錄該筆報名使用了哪一個邀請碼,程式因此無從得知要
還原哪一張,只好整批扣減。任一登入使用者可藉由重複「報名 -> 取消」的循環,把該票券下所有
邀請碼的usedCount壓到 0,包含他人已用完的邀請碼,使其重新變為可用。

前置條件

  • 一個一般登入帳號(無需任何管理權限)。
  • 若目標票種requireInviteCode值是true,攻擊者只需持有一張自己合法的邀請碼;
    若票種未強制邀請碼但底下存在邀請碼,則連碼都不需帶入。
  • 取消功能開放

重現影片:Click Me

影響:

  • 邀請制/限量票種的名額與存取控制失效:已發放且用滿的邀請碼可被無限重置後重複使用。
  • 攻擊者可持有多張同時有效的報名(用完 A -> 取消 -> A、B 同時歸零 -> 以其他帳號分別再用 A、B)。
  • 主辦方後台顯示的「已使用 / 剩餘」即為被污染之數值,不好察覺。

佐證:
資料庫驗證,數字與後台一致:

SELECT code, "usedCount", "usageLimit"
FROM invitation_code WHERE code IN ('A的碼','B的碼');

圖片

擷圖

留言討論

聯絡組織

 發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。
;