知名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.79、0.80版。是不是發現漏一個版本?是的PuTTY0.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