觀點 · 資訊分享

自架筆記 Note Mark 爆登入繞過:用 SSO 註冊的帳號,輸入特定字串就能登入,0.19.3 已修

開源筆記服務 Note Mark 公布嚴重漏洞 CVE-2026-41571:以 OIDC(單一登入)註冊的使用者沒有儲存密碼,內部登入卻會拿一個固定的占位值來比對,導致任何人可能用特定字串登入這些帳號。請升級到 v0.19.3。

發布
2026-04-26
篇幅
約 3 分鐘 · 1,362 字
結構
7 節 + 3 題常見問題
標籤
#Note Mark#CVE-2026-41571#OIDC#自架服務
自架筆記 Note Mark 爆登入繞過:用 SSO 註冊的帳號,輸入特定字串就能登入,0.19.3 已修

一句話看懂:Note Mark 用 OIDC 註冊的帳號沒有密碼,登入時卻拿一個固定占位值比對,導致任何人可能冒登這些帳號;請升級到 v0.19.3。

Note Mark 登入驗證被繞過資訊圖卡:SSO 註冊的帳號沒有密碼,卻被拿一個固定占位值比對

先用白話講:這是什麼漏洞?

想像一間公寓的門禁:住戶平常用「感應卡」(單一登入)進門,所以門鎖系統裡,這些住戶的「密碼欄」是空白的。但系統有個奇怪的設計:遇到密碼欄空白時,會拿一組「預設答案」來比對。結果只要有人報出那組預設答案,就能被當成這位住戶。

這就是這次的問題:預設答案是固定的、而且公開可預測。

發生什麼事

2026 年 4 月 25 日,GitHub 公布 Note Mark 的安全公告(CVE-2026-41571):

  • 後端的密碼比對函式,在使用者沒有儲存密碼時,會改用一個內建的占位雜湊(原本是為了避免計時攻擊)
  • 用 OIDC 註冊的使用者,資料庫裡的密碼是空的
  • 結果:對這些帳號,送出特定的占位字串當密碼,比對會通過,伺服器就會發出有效的登入工作階段
  • 公告指出,這個繞過不需要驗證、也不需要使用者操作;GitHub 給的 CVSS 3.1 分數為 9.4

為什麼更容易被利用?

公告提到兩個預設值:

預設設定 影響
內部登入預設開啟 就算你用 OIDC,內部登入入口仍然存在
匿名使用者搜尋預設開啟 未登入的人也可能先列出使用者名稱

公告也指出,登入後還能呼叫改密碼的功能,用同樣的占位值當「舊密碼」,替該帳號寫入新密碼,讓真正的使用者之後無法走內部登入。

給開發者的技術細節

  • 修正版本是 v0.19.3;公告是以 v0.19.2 驗證的
  • 升級後建議檢查:有沒有 OIDC 帳號出現異常的登入紀錄或密碼被改過
  • 如果你用不到內部登入,可以關閉;若有 OIDC 就只開 OIDC
  • 這個案例的共通教訓:「沒有密碼」的帳號,驗證函式應該直接拒絕密碼登入,而不是拿占位值去比對

我的看法

這個漏洞很有意思,因為它的起點其實是一個「好意」:為了防止攻擊者靠回應時間差推測帳號是否存在,設計了占位雜湊。但實作時漏想了「占位值也能被當成正確答案」。資安的缺口常常出現在這種為了補一個洞而新增的程式碼裡。

對自架的人,我的建議是:筆記、知識庫這類服務,常常存放著連線資訊、客戶資料或內部文件。除了升級,記得把用不到的登入方式關掉,並且不要把服務直接放在公網上,至少加一層反向代理或 VPN。

名詞小辭典

  • OIDC(OpenID Connect):一種單一登入的標準,讓你用既有帳號(如公司或自架身分系統)登入其他服務。
  • 雜湊(Hash):把密碼轉換成不可逆的字串後儲存,避免直接存明文。
  • 計時攻擊:靠觀察系統回應時間的微小差異來推測資訊的攻擊方式。
  • CVSS:替資安漏洞打嚴重程度分數的標準,滿分 10。

資料來源

常見問題

Note Mark 是什麼?
一個開源、可自架的 Markdown 筆記服務,支援用 OIDC(如公司或自架的單一登入)登入。
哪些人會受影響?
依公告,影響的是「透過 OIDC 註冊、本身沒有儲存密碼」的帳號,且內部登入功能有開啟(預設就是開啟)。
升級以外還要做什麼?
如果你有用 OIDC,建議檢查是否有帳號的密碼被異常設定過;公告也提到,攻擊者登入後可以替這些帳號設定新密碼,讓原本的使用者無法用內部登入。另外,用不到內部登入的話,可以關閉它。
LINE