AlleyPin 翔評互動 API JWT 簽名密鑰可猜測,可偽造 Token 繞過所有 API 端點認證 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2026-00409
  •  發信 Vendor: 翔評互動股份有限公司
  • Title: AlleyPin 翔評互動 API JWT 簽名密鑰可猜測,可偽造 Token 繞過所有 API 端點認證
  • Introduction: 攻擊者可偽造任意 JWT Token,無需帳號即可完全繞過認證存取所有 API 端點。
  • 獎勵金

處理狀態

目前狀態

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

處理歷程

  • 2026/03/24 17:44:15 : 新提交 (由 Marco 更新此狀態)
  • 2026/03/24 17:50:27 : 新提交 (由 Marco 更新此狀態)
  • 2026/03/25 15:03:42 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/04/09 16:52:46 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/04/09 16:52:46 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/05/11 17:54:31 : 新提交 (由 Marco 更新此狀態)
  • 2026/05/19 12:32:12 : 複測申請中 (由 組織帳號 更新此狀態)
  • 2026/05/25 15:45:35 : 新提交 (由 Marco 更新此狀態)
  • 2026/05/25 17:00:36 : 新提交 (由 Marco 更新此狀態)
  • 2026/05/25 17:05:03 : 新提交 (由 Marco 更新此狀態)
  • 2026/05/25 17:06:12 : 新提交 (由 Marco 更新此狀態)
  • 2026/05/25 17:34:48 : 複測申請中 (由 組織帳號 更新此狀態)
  • 2026/05/27 12:53:36 : 確認已修補 (由 Marco 更新此狀態)
  • 2026/05/28 03:00:04 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2026-00409
  • 通報者:mlgzackfly (Marco)
  • 風險:嚴重
  • 類型:存取控制缺陷 (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
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

[已編輯]

敘述

漏洞描述

整理利用方式與 ZD-2026-00383 類似,不過此次主要問題為 JWT 使用可輕易猜測的弱密鑰。

AlleyPin 的 API 認證使用 JWT(JSON Web Token),簽名演算法為 HS256(HMAC-SHA256)。經測試發現其 JWT 簽名驗證使用弱密碼作為共用 signing key。

攻擊者只需取得或猜測該弱密鑰,即可偽造任意 JWT Token,無需註冊帳號或取得任何合法認證資訊,即可繞過 API 認證機制。

此漏洞影響多個核心微服務子系統,包括:

  • 對外 API
  • 內部管理 API
  • 預約系統
  • 合約系統
  • 其他共用 JWT 驗證服務

環境資訊

  • 技術棧:Go 後端、HS256 JWT 驗證
  • 漏洞位置:JWT HS256 簽名驗證流程(所有需認證之 API 端點)

重現漏洞方式

步驟一:偽造 JWT Token

使用 HMAC-SHA256 搭配弱密鑰,可自行簽署合法 JWT Token。

攻擊者可建立包含管理員權限欄位(如 role: admin)的 payload,並利用弱密鑰完成簽章,藉此繞過後端 JWT 驗證。

成功簽章後,即可攜帶偽造 JWT 呼叫原本需要授權的 API 端點。


步驟二:驗證簽章可成功繞過認證

當 JWT 使用錯誤簽章時,系統會回傳簽章驗證失敗訊息:

{"error":"invalid token signature"}

當 JWT 使用正確弱密鑰完成簽章後,API 會接受該 Token,並回傳 HTTP 200 OK,代表認證已被成功繞過。

圖片


步驟三:存取受保護 API

未攜帶合法 JWT 時:

{"error":"forbidden"}

攜帶偽造 JWT 後,可成功通過認證並存取原本需授權的 API 功能。

即使查詢參數為隨機值,仍可觀察到:

  • JWT 驗證已成功通過
  • 系統進入後續業務邏輯處理流程
  • 僅因查詢資料不存在而回傳資料錯誤

此現象可證明 JWT 驗證機制已被繞過。

圖片


步驟四:實際存取診所管理資料

透過公開 API 可取得診所對應之 client identifier,之後即可利用偽造 JWT 存取內部管理 API。

回傳 HTTP 200 後,可取得診所管理資料,包含:

欄位 說明 洩漏情況
contactName 聯絡人姓名 [已隱碼]
cellPhoneNumber 手機 [已隱碼]
email Email [已隱碼]
address 地址 [某縣市已隱碼]
VAT 統編/敏感資訊 [已隱碼,長度 22 chars]
username 帳號 [已隱碼]
googleAccountAccessToken Google OAuth Token [已隱碼]
googleAccountId Google 帳號 ID [已隱碼]
fbFanPageToken Facebook 粉專 Token (存在)
contractStartDay 合約起始日 [部分隱碼]
contractEndDay 合約結束日 [部分隱碼]

圖片


風險分析

最嚴重之風險包括:

  • googleAccountAccessToken 為有效 OAuth Access Token,可直接操作診所 Google 商家檔案
  • 敏感欄位存在明文儲存情況
  • 攻擊者可大規模列舉公開診所資訊後,批次取得診所管理資料與 OAuth Token
  • 同一組 signing key 被多個微服務共用,導致單點失陷即可影響整體系統

影響

  1. 完整認證繞過
    攻擊者可自行偽造 JWT Token,繞過 API 認證。

  2. 敏感資料外洩
    可存取診所管理資料、病患資料與 OAuth Token。

  3. 商業資料外洩
    可存取合約、設定、客戶管理資訊。

  4. 資料竄改風險
    可修改預約、通知、客戶設定等資料。

  5. 跨微服務全面影響
    同一 signing key 用於多個核心服務,導致影響範圍擴大。


根因

  • 使用 HS256 對稱式 JWT 驗證
  • 使用弱密碼作為 signing key
  • 多個微服務共用同一組 JWT signing key
  • 缺乏 key rotation 與 secret management 機制

修補建議

1. 立即更換 JWT 簽名密鑰 — 使用密碼學安全的隨機密鑰(至少 256 bits),切勿使用可猜測的字串
2. 改用非對稱加密演算法 — 使用 RS256 或 ES256 取代 HS256,降低密鑰洩漏風險
3. 限制內部 API 存取 — api.internal.alleypin.cc 應限制為 VPC 內部存取,不應對外暴露

擷圖

留言討論

聯絡組織

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