2026 年 8 月 16 日,Windows 上最经典的 SSH / telnet 客户端 PuTTY 发布了 0.85 稳定版。与以往的版本不同,0.85 没有任何新功能,全部是安全修复——而且其中几项是可以被远程触发的。如果你还在用旧版本,这一版值得尽快升级。
PuTTY 是什么
PuTTY 是一个开源的终端仿真器与网络客户端,最早由 Simon Tatham 于 1999 年发布,如今依然是 Windows 上使用最广的 SSH 客户端之一。它体积小、无需安装(单个 exe 即可运行)、支持多种协议,是运维和嵌入式调试的常备工具。
PuTTY 其实是一个套件,下载包里包含多个各司其职的工具:
| 工具 | 作用 |
|---|---|
putty.exe | 图形界面客户端(SSH / telnet / rlogin / raw / serial) |
plink.exe | 命令行连接工具,脚本化运维与自动化采集 |
pscp.exe / psftp.exe | 基于 SSH 的文件传输(SCP / SFTP) |
puttygen.exe | 密钥生成与格式转换(如 OpenSSH ↔ PPK) |
pageant.exe | SSH 认证代理(密钥 agent,常驻后台托管私钥) |
其中 plink.exe 用于命令行自动化采集的用法,我此前在 《plink.exe 命令行工具:telnet 连接设备调试与数据采集》 里专门写过,这里不再展开。
0.85 版本:四项安全修复
0.85 的变更列表只有 4 项,全部与安全相关,没有功能改动。这正是它值得单独说一说的原因——一个只修漏洞不发功能的版本,往往意味着漏洞比较要紧。
| # | 类型 | 漏洞位置 | 能否远程触发 | 潜在后果 |
|---|---|---|---|---|
| 1 | 安全修复 | Pageant 中的 use-after-free | ✅ 可远程触发 | 可能 被利用执行任意代码(尚未证实) |
| 2 | 安全修复 | OpenSSH encrypt-then-MAC 密码模式缓冲区溢出 | ✅ 可远程触发 | 内存破坏 |
| 3 | 安全修复 | 私钥解密时的缓冲区溢出 | ⚠️ 需恶意构造的私钥 | 内存破坏 |
| 4 | DoS 修复 | 连接建立阶段 | ✅ 服务器 / 中间人可触发 | 紧密循环、启动时无限消耗内存 |
下面逐条说明。
1. Pageant 的 use-after-free
Pageant 是 PuTTY 的 SSH 认证代理,它常驻后台、替你托管私钥,其他程序通过它完成签名而不直接接触私钥。0.85 修复了 Pageant 中一个可被远程触发的 use-after-free(释放后使用)漏洞。
官方措辞很克制——「Might be exploitable to execute code, although this is not proved.」意思是「可能被利用执行代码,但尚未证实」。即便如此,对于常驻后台、直接接触私钥的 agent 组件来说,这类内存破坏漏洞的优先级始终是最高的。
2. OpenSSH encrypt-then-MAC 模式的缓冲区溢出
这是一个位于加密层的可远程触发缓冲区溢出,出问题的是 encrypt-then-MAC 这种密码模式。不过它的触发条件比较苛刻:
该模式仅在服务器不支持其他任何加密模式时才会被使用。
也就是说,只有当远端服务器刻意(或被迫)只提供这一种模式时,这条攻击路径才走得通。但「远程可触发」本身就是足够的升级理由——SSH 客户端面对的是不可信的远端主机。
3. 私钥解密时的缓冲区溢出
这一项与私钥文件有关:当 PuTTY 解密一个被恶意构造的私钥时,可能触发缓冲区溢出。官方对此的定性是:
Only triggerable on purpose if you let somebody else generate your key for you.
即「只有当你让别人替你生成密钥时,才可能被故意触发」。换句话说,你只要坚持自己生成私钥、不接收来路不明的私钥文件,这条路径基本走不通。但它提醒我们一个老生常谈的原则:私钥文件本质上是不可信输入,导入前要确认来源。
4. 拒绝服务:紧密循环与无限内存消耗
最后一项是 DoS(拒绝服务)修复,包含两个表现:
- 服务器可以让 PuTTY 陷入紧密循环(tight loop),卡死占满 CPU;
- 即便只是中间人攻击者,也能让 PuTTY 在启动阶段消耗无限内存。
第二条尤其值得注意——它意味着不需要连上恶意服务器,只要网络路径上有人劫持响应,就能在连接建立的早期阶段把 PuTTY 拖垮。
为什么要尽快升级
综合来看,0.85 是一版「越早升级越好」的发布:
- 可远程触发的漏洞占了多数(4 项里 3 项可由远端或中间人触发);
- Pageant 常驻后台且手握私钥,是攻击面里最敏感的一环;
- 没有功能改动,意味着升级几乎没有行为变化成本,不用担心兼容性回归。
尤其对于经常用 PuTTY 连接陌生服务器、或开着 Pageant 做 key agent 的同学,建议直接升级到 0.85。
下载与校验
下载页面提供了 Windows 各架构(64 位 / 32 位的 x86 与 Arm)的安装包、独立 exe 和 zip,以及 Unix 源码包。官网地址:
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
下载后建议核对校验和,页面提供了 MD5、SHA-1、SHA-256、SHA-512 以及 GPG 签名。Windows 下可以用自带的 certutil 计算 SHA-256:
certutil -hashfile putty.exe SHA256
检查当前版本
不确定自己装的是哪个版本?命令行工具直接 -V:
plink.exe -V
# 或
putty.exe -V
图形界面则在 Help → About PuTTY 里查看。如果版本低于 0.85,就该更新了。
总结
PuTTY 0.85 是一次罕见的「纯安全修复」发布:4 项改动全部是漏洞与 DoS 修复,其中 Pageant 的 use-after-free 和加密层缓冲区溢出均可被远程触发。升级成本极低(无功能变化),安全收益明确。
这也再次印证了那句话——像 PuTTY、SSH 客户端这类直面不可信远端主机的工具,及时跟进安全更新,比追求新功能重要得多。