受歡迎的虛擬終端與網路檔案傳輸工具PuTTY,被發現存在嚴重的ECDSA私鑰生成漏洞CVE-2024-31497,攻擊者可利用此漏洞恢復私鑰並偽造簽章,官方建議使用者立即撤銷受影響的私鑰。受影響的PuTTY版本包括0.68至0.80的每一個版本。

PuTTY中的嚴重漏洞CVE-2024-31497,讓攻擊者可以從一些已經簽章的訊息和公鑰恢復出私鑰,一旦攻擊者取得私鑰,便能夠偽造簽章、假冒身分,進而登入使用該私鑰的任何伺服器。

該漏洞之所以嚴重,是因為攻擊者不需要長期控制伺服器或持續擁有存取權,短暫入侵使用該私鑰進行身分驗證的伺服器,或是暫時獲得儲存私鑰的Pageant工具存取權限,就可獲得簽章,也就是說,攻擊者只需要短暫的存取伺服器,即可產生嚴重的後果。

PuTTY的這個漏洞與nonce隨機值(或稱為k值)的生成方法有關。nonce是一個在簽章過程需要隨機生成的一次性數值,當攻擊者能夠猜到或是發現使用了相同k值的兩個簽章,就能立即恢復出私鑰。由於PuTTY是在Windows上開發,早期Windows缺乏加密用隨機數生成器,PuTTY選擇了一種確定性方法來產生k值。

這種方法不仰賴外部隨機數生成器,而且由於生成k值完全相依於輸入資料和雜湊函式,減少了隨機數來源品質不夠高,可能導致的安全風險。但這種方法實作不當也可能出現安全問題,在PuTTY這個案例中,這種k值生成方法可用於多數的ECDSA曲線,但卻會在NIST P521曲線加密演算法引入偏差,這種偏差足以允許攻擊者恢復私鑰,攻擊者只要收集60個簽章,便可恢復出私鑰。

不過,值得慶幸的是CVE-2024-31497漏洞的影響範圍有限,只有使用521位元的ECDSA私鑰受到影響,具體來說,包括帶有私鑰指紋ecdsa-sha2-nistp521、載入到Windows Pageant中被描述為NIST p521,或者在SSH協定或是私鑰檔案中,ID以ecdsa-sha2-nistp521開頭的私鑰。

PuTTY開發團隊放棄過去產生k值的舊系統,針對所有DSA和ECDSA私鑰類型,切換使用RFC 6979技術。不過,就算PuTTY的CVE-2024-31497漏洞被修復,過去使用受漏洞影響的舊k值生成器所產生的簽章,仍會導致P521私鑰相關資訊洩漏。

攻擊者只要能獲得過去的簽章和相關的公鑰,就能恢復出私鑰冒出用戶身分,因此對於使用受影響版本的PuTTY與P521私鑰的用戶來說,除了更新軟體之外,也要立即撤銷並替換新的私鑰。

熱門新聞

Advertisement