Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2025-01525
- Vendor: 全聯實業
- Title: 全聯 PX Pay App 發票記帳 Hardcoded Secrets leads to Authentication Bypass
- Introduction: 寫死 AES 與 HMAC 明文金鑰,攻擊者可以還原演算法並偽造 token
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
已修補
-
未複測
-
公開
處理歷程
- 2025/12/15 14:47:34 : 新提交 (由 CheN.. 更新此狀態)
- 2025/12/15 14:55:23 : 新提交 (由 CheN.. 更新此狀態)
- 2025/12/18 17:10:16 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/01/05 14:13:32 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/01/05 14:13:32 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/01/05 14:13:32 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/01/07 14:04:52 : 已修補 (由 組織帳號 更新此狀態)
- 2026/01/07 14:04:56 : 已修補 (由 組織帳號 更新此狀態)
- 2026/01/07 14:05:05 : 已修補 (由 組織帳號 更新此狀態)
- 2026/01/15 03:00:11 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2025-01525
- 通報者:SamChen_696 (CheN..)
- 風險:高
- 類型:存取控制缺陷 (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://pxmart-einvoice.cmoney.tw/api/accountbook/User/AccountDataByMonthsAndCalDropFromInvoice
https://pxmart-einvoice.cmoney.tw/api/accountbook/record/User/ExpenseRecord
敘述
備註:同步通報至 HITCON ZeroDay
概述
前天看到 App 裡面有個蠻有趣的區域叫 “發票記帳”,似乎是跟 CMoney 廠商一起合作開發出來的功能,覺得挺有趣的 所以決定探索看看。在逆向 apk 後 靜態分析反編譯的程式碼,發現有做些混淆但不太強,經過一番探索在 x9.h 找到寫死的 AES 與 HMAC 明文金鑰和連結 https://pxmart-einvoice.cmoney.tw/ ,打開後 network 顯示有個 api 端點 https://pxmart-einvoice.cmoney.tw/api/token/v2/auth 似乎是用來交換 Token 的,請求必須包含 X-Cmoney、X-Date 以及帶有簽章的 Authorization 等特殊參數。回頭進一步探索分析 ca.b 和 v9.a 等檔案,成功還原這些 Header 的加密與簽章演算法。之後我撰寫了 Python 腳本來模擬 App 的行為,在完全不需要帳號密碼的情況下成功騙過伺服器,將任意 Member ID 轉換成合法的 JWT Token。透過抓包 App 找到多個可利用的 api 端點,可以任意讀取和寫入目標帳號的 "發票與記帳"。
重置步驟
-
生成偽造簽章,執行第一版 Python 腳本,利用外洩的金鑰與還原的演算法,針對目標 Member ID 生成合法的 API 簽章與加密參數。
-
將生成的 Headers 帶入 向 Auth API 發送 POST 請求。伺服器驗證簽章通過後,將回傳該會員的有效 JWT Token。
-
使用取得的 JWT Token,即可呼叫記帳 API (https://pxmart-einvoice.cmoney.tw/api/accountbook/User/AccountDataByMonthsAndCalDropFromInvoice) 讀取目標會員的敏感消費紀錄。
PoC
洩漏金鑰
演算法還原
測試結果
2 種版本的 Python 腳本,見郵件附件
影片簡單展示如何操作第二版本的 PoC 程式及證明其影響,請至共享資料夾查看。
影響
接管發票記帳區域:攻擊者可繞過帳密驗證,偽造簽章直接取得任意會員的有效 Token。操作此區域所有功能。
修補建議
移除客戶端金鑰:App 不應持有任何 AES/HMAC 金鑰。
金鑰輪替:金鑰已確認外洩,修補後須立即更換新金鑰。