上週,一位研究人員概述了他所稱的無密碼金鑰(passkey)的「新穎攻擊面」,無密碼金鑰是一種提供比基於密碼方法更安全替代方案的新驗證模式。事實上,該貼文中展示的攻擊既非新穎,也非無密碼金鑰獨有。這個區別很重要,因為這項研究在終端用戶和安全專業人員評估此新機制是否真正安全可靠時,引起了困惑。
此攻擊被稱為 Pass-ta-key,是將 passkey 與「傳遞金鑰」的短語結合,並向義大利麵致敬。安全公司 Palo Alto Networks 的研究員 Arie Olshtein 上週在一篇貼文中描述了 Pass-ta-key 如何在感染惡意軟體的 Windows 電腦上,竊取 Google Password Manager (GPM) 應用程式中儲存的所有無密碼金鑰。
這讓許多人感到驚訝,因為他們認為無密碼金鑰僅儲存在信任平台模組(TPM)中,這是 Windows 電腦上用於儲存加密金鑰和其他高度敏感資訊的、鎖定的硬體晶片中的安全區域。他們想知道,如果無密碼金鑰儲存在 TPM 中,Pass-ta-key 是如何能夠提取該應用程式儲存的全部無密碼金鑰的。
答案是,與普遍的看法相反,由行業組織 FIDO Alliance 管理的 FIDO 2 規範,並不強制要求將無密碼金鑰保存在 TPM 或任何其他專用硬體中(根據平台不同,它們有不同的名稱,包括安全區域、信任執行環境和 StrongBoxes)。事實上,大多數管理無密碼金鑰的平台和第三方軟體並不會將無密碼金鑰儲存在這種專用硬體中。幾乎唯一例外的是微軟,它為用戶提供了將無密碼金鑰儲存在 Windows TPM 中的選項。該公司主要將此選項推薦給企業,而非消費者。
在我開始為本文研究之前,我並不知道,除了執行 Windows 的平台之外,所有平台都將無密碼金鑰本地儲存在裝置上。幾年前,作業系統和第三方應用程式開發人員意識到,除非能夠輕鬆地將無密碼金鑰同步到用戶的所有裝置上,否則無密碼金鑰將無法獲得廣泛使用,於是轉向了本地儲存。要求 TPM 儲存使得同步變得不可能。將它們載入新裝置的 TPM 的唯一方法是逐一重新創建每個金鑰。
最終,FIDO 規範的架構師決定,將無密碼金鑰儲存在裝置上通常是安全的。他們的想法是,應用程式權限非常精細,裝置上潛伏的惡意軟體將無法存取構成無密碼金鑰安全核心的私鑰。例如,安裝在執行 macOS、iOS 和 Android 的裝置上的惡意軟體,除非作業系統本身透過某種罕見的零日漏洞受到損害,否則無法繞過這種隔離。到目前為止,在實際應用中,這些假設都被證明是正確的。
唯一的例外是 Windows。與所有其他平台不同,Windows 應用程式通常以用戶的所有權限執行,而其他平台預設鼓勵限制每個應用程式的權限。雖然 Windows 提供了一些旨在隔離應用程式的沙盒保護,但它並不能阻止未經沙盒處理的應用程式(如惡意軟體)存取沙盒應用程式的資料。也就是說,沙盒只提供單向保護。其他平台的沙盒技術保護性更強。
這意味著 Windows 惡意軟體在存取單獨應用程式使用的資料時,遇到的問題明顯更少。無密碼金鑰的架構師們一直密切關注這一差異,這在很大程度上是為了 Windows 的向後兼容性。由於無法確信儲存在 Windows 裝置上的無密碼金鑰在發生惡意軟體感染時不會被竊取,許多第三方開發人員選擇了一種新設計——將無密碼金鑰儲存在雲端的端對端加密的數據塊中。伺服器儲存的無密碼金鑰現在不僅是 GPM for Windows 使用的設計,1Password、Dashlane 和其他適用於微軟作業系統的第三方應用程式也採用了這種設計。
Pass-ta-key 攻擊中的惡意軟體利用其對 Google 帳戶的存取權限——在某些情況下,還利用了儲存在 TPM 中的用戶或裝置金鑰——來獲取秘密的無密碼金鑰。三種攻擊變體中最強大的一種,會讓受感染的 Windows 電腦偽裝成 iPhone。這會觸發 GPM 中的同步功能,允許用戶將所有儲存的無密碼金鑰轉移到新裝置。金鑰隨後被轉移到受感染的 Windows 電腦上。
這種風險一直存在,這也是為什麼有些人認為密碼管理器不安全的原因。根據 Olshtein 的描述,GPM 可能缺乏 1Password 等密碼管理器的一些保護措施,例如呼叫作業系統 API 來阻止其他進程讀取其記憶體。但總的來說,普遍接受的觀點是,一旦受感染的裝置登入敏感帳戶,就意味著大局已定。換句話說,Pass-ta-key 是一種存在已久的現實,與計算機安全一樣古老。這裡沒有什麼新穎之處,攻擊面延伸到任何需要驗證才能存取的資料。
無密碼金鑰的目的是消除可能被網路釣魚或伺服器洩漏的共享秘密。無密碼金鑰並非旨在抵禦針對儲存它們的裝置的實體攻擊。當 Windows 裝置受到損害時,Pass-ta-key 能夠提取金鑰並不令人意外。這項研究可能並不新穎,但如果它能幫助用戶理解,一旦裝置(特別是執行 Windows 的裝置)在登入帳戶時受到損害,儲存在那裡的所有資料都將任人取用,那麼它仍然是有益的。