衛福部與社家署 自然人憑證登入驗證漏洞 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2026-00918
  •  發信 Vendor: 衛生福利部與社會家庭署
  • Title: 衛福部與社家署 自然人憑證登入驗證漏洞
  • Introduction: 自然人憑證登入時,系統未將簽章後的資料送到後端做驗證。

處理狀態

目前狀態

公開
Last Update : 2026/09/12
  • 新提交
  • 已審核
  • 已通報
  • 未回報修補狀況
  • 未複測
  • 公開

處理歷程

  • 2026/07/13 18:01:58 : 新提交 (由 SJ 更新此狀態)
  • 2026/07/20 11:32:55 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/23 16:44:57 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/23 16:44:57 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/23 16:44:57 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/09/12 03:00:22 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

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

相關網址

grds.sfaa.gov.tw/login_cert.jsp
swis2.sfaa.gov.tw
ictp.sfaa.gov.tw
twbaby.sfaa.gov.tw/home/apply-data
atonline.sfaa.gov.tw/apply_loginMethod_2.jsp
dpws.sfaa.gov.tw/online_apply_login.jsp
swis.mohw.gov.tw/socs/new_login_cert.jsp
cmp.mohw.gov.tw/login_cert.jsp
nap2.mohw.gov.tw/login_cert.jsp
cfeda.mohw.gov.tw/login_cert_new.jsp
lcas.mohw.gov.tw/login_cert.jsp

敘述

上述系統皆以「自然人憑證(HiCOS/GCA 元件)」作為登入身分驗證。正確的憑證登入安全流程應為:

伺服器產生一次性隨機挑戰值,作為待簽資料(tbs)下發前端;
前端呼叫本機憑證元件,以使用者私鑰對該 tbs 簽章;
前端將簽章值(signature)+憑證(certb64)回傳後端;
後端以憑證公鑰驗證簽章、確認所簽 tbs 為本次下發者(防重放)、並查驗憑證鏈與撤銷狀態(CRL/OCSP),確認「使用者確實持有該憑證私鑰」後才放行。
經檢視 11 個系統之前端程式碼,第 2 步之後的安全控制全部缺失或失效:

前端雖取得簽章(data.signature),但該值取出後從未使用,亦未放入送往後端的任何欄位。
後端實際只收到由憑證公開內容解析出的識別資料(憑證序號/身分證字號/身分證末四碼)。
上述識別資料並非秘密:可由持卡人公開憑證資訊取得,或側錄一次正常登入封包取得。
待簽資料 tbs 多為寫死常數("1111"、"TBS"、"GCA")而非伺服器下發之一次性挑戰值,無防重放能力。
身分證末四碼與憑證之比對僅在前端 JavaScript 執行,可被繞過。

修補建議

下發一次性挑戰值:登入時由伺服器產生隨機 tbs(綁定 session、設定有效期),取代寫死的固定字串。
回傳並驗證簽章:前端須將 signature 與 certb64 一併送回;後端以憑證公鑰驗證簽章確由對應私鑰對該 tbs 所簽。
後端驗證待簽資料:確認所簽 tbs 與 session 下發者相符、未過期、未被重複使用(防重放)。
比對移至後端:身分證字號與憑證內容之比對必須於伺服器端執行,不可僅靠前端 JavaScript。
憑證鏈與撤銷驗證:後端驗證憑證簽發鏈(MOICA/GCA/GRCA 體系)並查驗 CRL/OCSP 撤銷狀態。
全面盤點同源樣板:本問題源自共用前端樣板,建議盤點所有採用同一套 cross-browser.js / CitizenDigitalCert.js / natural-card-handler.js 之系統一併修補。

擷圖

留言討論

聯絡組織

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