PuTTY多個版本出現高風險漏洞可洩漏私鑰但不用慌
知名SSH 用戶端PuTTY 日前被發現一枚高風險安全漏洞,該漏洞廣泛影響PuTTY 各個版本,包括:0.68、0.69、0.70、0.71、0.72、0.73、0.74、0.75、0.76、0.77、0.78、0.77、0.80.77、0.78、0. 。是不是發現漏了一個版本?是的PuTTY 0.67 版是不受影響的,目前該漏洞計劃是在0.81 版中修復,該版本尚未發布。
根據說明PuTTY 從0.68~0.80 版使用NIST P521 橢圓曲線演算法(ECDSA) 私鑰產生簽署的程式碼有嚴重漏洞,當PuTTY 使用金鑰向SSH 伺服器驗證身分時就會產生簽章。
壞消息是這個安全漏洞會洩漏使用者使用的私鑰,當攻擊者拿到幾十條簽名訊息和公鑰後就可以用來恢復私鑰然後偽造簽名,接著攻擊者就可以登入伺服器進行各種操作了。
作為安全建議PuTTY 建議使用者從伺服器中刪除舊公鑰檔案authorized_keys,其他SSH 伺服器中的等效金鑰也應該刪除,這樣金鑰的簽章檔案就不具備任何作用,再產生一對新金鑰替換即可。
好消息是目前經過檢查唯一受影響的密鑰類型為521 位元ECDSA,也就是說用戶如果使用的是其他類型的密鑰那麼是不受影響的,包括ED25519 等也都不受影響。
如何檢查金鑰類型:Windows PuTTYgen 產生器中可以看到金鑰指紋的提示框,包括ecdsa-sha2-nistp521 等,或載入到Windows Pageant 中的說明為NIST p521,也就是看到提示或說明中帶有p521 那就是受影響的密鑰類型。
為了徹底解決這個漏洞,PuTTY 0.80 版計劃完全放棄用於產生金鑰的舊系統,同時將所有DSA 和ECDSA 金鑰類型切換到RFC 6979 標準。
技術細節:https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/vuln-p521-bias.html