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
漏洞說明: 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的碼');
擷圖
留言討論
登入後留言
聯絡組織
發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。