密碼管理器聲稱其資料庫(vault)是安全的,即使伺服器被駭,第三方也無法存取。然而,最新研究顯示,在啟用帳戶復原或共享功能時,此承諾可能無法兌現。研究人員發現,若攻擊者能控制伺服器,便有機會竊取或修改使用者資料庫中的敏感資訊,甚至在某些情況下完全取得整個資料庫。此類漏洞在 Bitwarden、Dashlane 和 LastPass 等主流密碼管理器中被發現,凸顯了「零知識」聲明的潛在局限性。
過去 15 年,密碼管理器已從技術愛好者使用的利基安全工具,發展成為大眾不可或缺的安全工具,估計有 9400 萬美國成年人(約 36%)已採用。它們不僅儲存密碼,還包括加密貨幣憑證、付款卡號和其他敏感資料。
八大主流密碼管理器都採用「零知識」一詞來描述其複雜的加密系統,以保護儲存在其伺服器上的使用者資料庫。雖然各供應商的定義略有不同,但總體而言,它們都做出了大膽的保證:惡意內部人員或成功入侵雲端基礎設施的駭客,都無法竊取資料庫或其中儲存的資料。鑑於 LastPass 過去的資料外洩事件,以及國家級駭客有動機和能力獲取高價值目標的密碼資料庫,這些保證似乎合乎情理。
Bitwarden、Dashlane 和 LastPass 這三個被約 6000 萬人使用的密碼管理器,是這類聲明的典型代表。例如,Bitwarden 表示「即使是 Bitwarden 的團隊也無法讀取您的資料(即使我們想這麼做)」。Dashlane 則表示,沒有使用者的主密碼,「惡意行為者無法竊取資訊,即使 Dashlane 的伺服器被入侵」。LastPass 表示,除了使用者本人,沒有人可以存取「儲存在 LastPass 資料庫中的資料(連 LastPass 自己也不行)」。
然而,新的研究表明,這些聲明在所有情況下都不完全屬實,特別是在啟用帳戶復原功能或將資料庫設定為共享或將使用者分組時。研究人員逆向工程或仔細分析了 Bitwarden、Dashlane 和 LastPass,並發現了能夠讓伺服器控制者(無論是系統管理員還是入侵者)實際竊取資料,甚至在某些情況下竊取整個資料庫的方法。研究人員還設計了其他攻擊,可以削弱加密強度,使其密文能夠被轉換為明文。
「我們描述的漏洞數量眾多,但在技術層面上大多不夠深入,」來自蘇黎世聯邦理工學院(ETH Zurich)和盧加諾大學(USI Lugano)的研究人員寫道。「儘管對密碼管理器進行了十多年的學術研究,並且對我們研究的三種產品進行了多次審計,但這些漏洞顯然之前並未被發現。這激勵了理論和實踐上的進一步工作。」
研究人員在訪談中表示,他們沒有進行更深入分析的其他幾家密碼管理器,很可能也存在相同的缺陷。唯一獲准命名的公司是 1Password。他們補充說,幾乎所有的密碼管理器都只在啟用某些功能時才容易受到攻擊。
最嚴重的攻擊——針對 Bitwarden 和 LastPass——允許內部人員或攻擊者讀取或寫入整個資料庫的內容。在某些情況下,它們利用了金鑰託管機制中的弱點,該機制允許使用者在忘記主密碼時重新獲得帳戶存取權。其他攻擊則利用了對舊版密碼管理器支援中的弱點。針對 Dashlane 的資料庫竊取攻擊,在共享項目時允許讀取但不能修改。
針對 Bitwarden 金鑰託管的一種攻擊,是在家庭或組織新成員註冊時執行的。Bitwarden 群組管理員邀請新成員後,被邀請者的客戶端會存取伺服器,並取得群組對稱金鑰和群組公鑰。客戶端然後使用群組公鑰加密對稱金鑰,並將其發送給伺服器。產生的密文將用於恢復新使用者的帳戶。在帳戶註冊過程中,此資料從伺服器傳送給客戶端時,從未進行完整性檢查。
攻擊者可以利用此弱點,將群組公鑰替換為攻擊者創建的金鑰對中的公鑰。由於攻擊者知道對應的私鑰,因此可以解密密文,然後代表目標使用者執行帳戶恢復。結果是,一旦被邀請者接受了家庭或組織的邀請,攻擊者就可以讀取和修改該成員資料庫的全部內容。
正常情況下,此攻擊僅在群組管理員啟用自動恢復模式時有效,該模式與手動選項不同,不需要成員互動。但由於客戶端在註冊過程中下載的群組策略未經完整性檢查,攻擊者可以將恢復設定為自動,即使管理員選擇了需要使用者互動的手動模式。
更嚴重的是,此攻擊中的攻擊者還會獲得該成員所屬的所有其他群組的群組對稱金鑰,因為所有群組成員都知道這些金鑰。如果任何額外的群組使用帳戶恢復,攻擊者也可以獲取這些成員的資料庫。「此過程可以以蠕蟲狀重複進行,感染所有啟用金鑰恢復且成員重疊的組織,」研究論文解釋道。
針對 Bitwarden 帳戶恢復的第二種攻擊,可以在使用者輪換資料庫金鑰時執行,這是 Bitwarden 建議使用者在懷疑主密碼洩漏時採取的選項。當帳戶恢復開啟時(手動或自動),使用者客戶端會重新生成恢復密文,這如前所述,涉及取得一個使用組織公鑰加密的新公鑰。研究人員將群組公鑰標記為 pk org。他們將攻擊者提供的公鑰標記為 pk adv org,恢復密文標記為 c rec,使用者對稱金鑰標記為 k′。
關鍵在於,pk org 並非從使用者資料庫中檢索;而是客戶端與伺服器進行同步操作以獲取它。至關重要的是,此同步操作提供的組織資料未經任何身份驗證。這為攻擊者提供了另一個機會,通過提供一個攻擊者知道其私鑰 sk adv org 的新公鑰 pk adv org,並將帳戶恢復設置為 true,來獲取受害者的使用者金鑰。客戶端隨後將發送一個帳戶恢復密文 c rec,其中包含新的使用者金鑰,攻擊者可以解密該密文以獲取 k′。
針對 Bitwarden 帳戶恢復的第三種攻擊,允許攻擊者恢復使用者的主金鑰。它濫用了金鑰連接器(key connector)功能,該功能主要由企業客戶使用。
允許 LastPass 資料庫竊取的攻擊也針對金鑰託管,特別是 Teams 和 Teams 5 版本,當成員的主金鑰被稱為超級管理員(superadmin)的特權使用者重置時。下次成員通過 LastPass 瀏覽器擴充功能登錄時,其客戶端將檢索分配給組織中每個超級管理員的 RSA 金鑰對,用每個金鑰對加密其新金鑰,並將產生的密文發送給每個超級管理員。
由於 LastPass 也未能驗證超級管理員金鑰,攻擊者可以再次將超級管理員公鑰(pk adm)替換為自己的公鑰(pk adv adm)。
幾種攻擊允許讀取和修改共享資料庫,這些資料庫允許使用者與一個或多個其他使用者共享選定的項目。當 Dashlane 使用者共享項目時,其客戶端應用程式會生成一個新的對稱金鑰,該金鑰直接加密共享項目,或在與群組共享時,加密群組金鑰,進而加密共享項目。無論哪種情況,新創建的 RSA 金鑰對(屬於共享使用者或群組)都未經驗證。然後使用私鑰加密項目。
攻擊者可以提供自己的金鑰對,並使用公鑰加密發送給接收者的密文。然後,攻擊者使用其對應的私鑰解密該密文,以恢復共享的對稱金鑰。藉此,攻擊者可以讀取和修改所有共享項目。當在 Bitwarden 或 LastPass 中使用共享功能時,類似的攻擊也是可能的,並導致相同的後果。
攻擊者或伺服器控制者可以利用的另一條途徑是針對所有三個密碼管理器提供的向後兼容性,以支援較舊、安全性較低的舊版本。儘管進行了增量更改以加強應用程式對論文中所述攻擊的防禦,但所有三個密碼管理器都繼續支援沒有這些改進的版本。這種向後兼容性是故意決定的,旨在防止尚未升級的使用者無法存取其資料庫。
這些攻擊的嚴重性低於先前描述的攻擊,但有一項例外,即針對 Bitwarden 的攻擊。該密碼管理器的舊版本使用單一對稱金鑰來加密和解密來自伺服器的使用者金鑰以及資料庫內的項目。這種設計使得攻擊者有可能篡改內容。為了增加完整性檢查,新版本通過 HMAC 雜湊函數增強對稱金鑰來提供經過驗證的加密。
為了保護使用舊版應用程式的客戶,Bitwarden 密文具有屬性 0 或 1。0 表示經過驗證的加密,而 1 表示支援舊的未驗證方案。舊版本還使用 Bitwarden 已棄用的金鑰層次結構來加強應用程式。為了支援舊的層次結構,如果伺服器未提供金鑰對,新版本會為使用者生成一個新的 RSA 金鑰對。如果伺服器未提供使用者密文,新版本將繼續使用主金鑰加密秘密金鑰部分。
此設計使 Bitwarden 面臨多種攻擊。最嚴重的攻擊允許讀取(但不能修改)攻擊執行後創建的所有項目。簡而言之,這是因為攻擊者可以偽造伺服器發送的密文,並導致客戶端使用它來派生攻擊者已知的使用者金鑰。
修改會導致使用 CBC(密碼區塊鏈)加密,這是一種容易受到多種攻擊的加密形式。攻擊者可以利用這種較弱的形式,通過填充 Oracle 攻擊(padding oracle attack)來檢索資料庫的明文。由於 HMAC 保護仍然完好,因此無法進行修改。
令人驚訝的是,Dashlane 也容易受到類似的填充 Oracle 攻擊。研究人員設計了一個複雜的攻擊鏈,允許惡意伺服器將 Dashlane 使用者的資料庫降級為 CBC 並竊取內容。研究人員估計,此攻擊需要約 125 天才能解密密文。
針對所有三個密碼管理器的其他攻擊,允許攻擊者大大減少雜湊迭代次數——對於 Bitwarden 和 LastPass,從預設的 600,000 次減少到 2 次。主密碼的重複雜湊處理,在伺服器洩漏導致雜湊被盜的情況下,使其更難被破解。對於所有三個密碼管理器,伺服器會將指定的迭代次數發送給客戶端,但沒有機制來確保它達到預設數量。結果是,攻擊者在破解雜湊並獲取使用者主密碼所需的時間和資源減少了 300,000 倍。
三種攻擊——一種針對 Bitwarden,兩種針對 LastPass——針對研究人員所稱的「項目級加密」或「資料庫可塑性」(vault malleability)。密碼管理器不是將整個資料庫加密成一個單一的、龐大的塊,而是經常加密單獨的項目,有時甚至是項目中的單獨欄位。這些項目和欄位都使用相同的金鑰加密。攻擊利用此設計來竊取選定資料庫項目的密碼。
攻擊者通過替換 URL 欄位中的密文來發動攻擊,該欄位儲存登錄發生的連結,並將其替換為密碼的密文。為了增強可用性,密碼管理器提供了一個圖標,幫助視覺化識別網站。為此,客戶端會解密 URL 欄位並將其發送給伺服器。然後,伺服器會獲取相應的圖標。由於沒有機制可以防止項目欄位的交換,客戶端會解密密碼而不是 URL,並將其發送給伺服器。
「如果你為不同的欄位使用不同的金鑰,或者一次性加密整個集合,就不會發生這種情況,」論文合著者之一的 Kenny Paterson 說。「密碼學審計應該能發現它,但前提是你考慮到惡意伺服器。伺服器正在偏離預期的行為。」
下表總結了他們設計的 25 種攻擊的原因和後果:
圖片來源:Scarlata 等人。
研究人員承認,完全入侵密碼管理器伺服器是一個很高的門檻。但他們為威脅模型辯護。
「通過精心設計的營運安全措施,可以防止針對供應商伺服器基礎設施的攻擊,但假設這些服務成為複雜的國家級對手(例如通過軟體供應鏈攻擊或魚叉式網路釣魚)的目標,這是完全合理的,」他們寫道。「此外,一些服務供應商有被入侵的歷史——例如,LassPass 在 2015 年和 2022 年遭受了入侵,並在 2021 年發生了另一起嚴重的安全事件。」
他們接著寫道:「雖然我們所知的入侵都沒有涉及重新編寫伺服器以使其採取惡意行動,但這僅僅是針對已記錄的密碼管理器服務供應商的攻擊的一小步。更廣泛的實際攻擊已被記錄在案。」
設計密碼管理器或任何端對端加密服務的挑戰之一,是客戶端容易產生虛假的安全性感。
「當你同時編寫客戶端和伺服器軟體時,這是一個心理問題,」Paterson 解釋道。「你應該以極度謹慎的態度編寫客戶端,但如果你也編寫伺服器,那麼你的伺服器當然不會發送格式錯誤的封包或錯誤的資訊。你為什麼要這麼做?」
在許多情況下,工程師在收到研究人員的私人報告後,已經修復了描述的弱點。工程師仍在修補其他漏洞。在聲明中,Bitwarden、Lastpass 和 Dashlane 的代表強調了威脅模型的門檻很高,儘管他們網站上的聲明保證客戶的產品能夠承受它。與 1Password 的代表一起,他們還指出,他們公司的產品定期接受嚴格的安全審計並進行紅隊演練。
Bitwarden 通過內部審查、第三方評估和外部研究,不斷評估和改進其軟體。蘇黎世聯邦理工學院的論文分析了一種威脅模型,其中伺服器本身表現出惡意行為,並故意嘗試操縱金鑰材料和配置值。該模型假設伺服器完全被入侵,並且其惡意行為超出了雲端服務的標準操作假設。
LastPass 表示:「我們採取多層次、持續的安全保障方法,結合獨立監督、持續監控和與研究界的合作。我們的雲端安全測試包括研究中概述的惡意伺服器威脅模型所參考的場景。」
Dashlane 的聲明寫道:「Dashlane 進行嚴格的內部和外部測試,以確保我們產品的安全性。當出現問題時,我們會迅速採取行動,減輕任何潛在風險,並確保客戶對問題、我們的解決方案以及任何所需行動有清晰的了解。」
1Password 發布了一份聲明,其中部分內容如下:
我們的安全團隊深入審查了該論文,並未發現超出我們公開的安全設計白皮書中已記錄的攻擊向量的新攻擊途徑。
我們致力於不斷加強我們的安全架構,並針對包括惡意伺服器場景在內的進階威脅模型進行評估,並隨時間推移進行演進,以維持我們的使用者所依賴的保護措施。
1Password 還表示,其提供的零知識加密「意味著除了您之外,沒有人——甚至儲存資料的公司——可以存取和解密您的資料。即使儲存資料的伺服器被入侵,這也能保護您的資訊。」在公司上述連結的白皮書中,1Password 似乎允許這種可能性,它說:
目前沒有實用的方法讓使用者驗證他們正在加密資料的公鑰是否屬於其預期接收者。因此,惡意或被入侵的 1Password 伺服器可能會向使用者提供不誠實的公鑰,並成功發動攻擊。在此類攻擊下,1Password 伺服器有可能在使用者幾乎無法偵測或阻止的情況下獲取資料庫加密金鑰。
1Password 的聲明還保證該服務定期接受嚴格的安全測試。
所有四家公司都為其使用「零知識」一詞辯護。在此上下文中,該術語可能與零知識證明(zero-knowledge proofs)混淆,後者是一種完全無關的密碼學方法,允許一方在不洩露任何資訊的情況下向另一方證明其知道某條資訊。例如,證明可以顯示系統能夠確定某人是否年滿 18 歲,而無需知道確切的出生日期。
密碼管理器使用的這種「摻水」的零知識術語,似乎起源於 2007 年,當時一家名為 SpiderOak 的公司用它來描述其用於安全共享敏感資料的雲端基礎設施。有趣的是,SpiderOak 在收到使用者反饋後十年,正式取消了該術語的使用。
「可悲的是,這只是市場炒作,就像『軍用級加密』一樣,」論文的主要作者 Matteo Scarlata 說。「零知識似乎對不同的人意味著不同的東西(例如,LastPass 告訴我們他們內部不會採用惡意伺服器威脅模型)。與『端對端加密』不同,『零知識加密』是一個難以實現的目標,因此無法判斷一家公司是否做得對。」
Ars Technica 在 25 年來一直致力於從噪音中篩選出有價值的資訊。憑藉我們獨特的技術知識和對技術藝術與科學的廣泛興趣,Ars 在資訊的海洋中是值得信賴的來源。畢竟,您不需要知道一切,只需要知道重要的事。