2023-12-18 官方发布了PuTTY 0.80
本次发布主要是针对Terrapin攻击(CVE-2023-48795)的修改发布。
更多详细的内容请查看PuTTY Change Log。
为了缓解此漏洞,需要启用OpenSSH项目定义的名为'strict KEX'的SSH扩展,PuTTY 0.80中已有实现。并且这个漏洞是双向的,所以需要服务器与客户端同时实现这个扩展。已经实现这一扩展的相关应用可以简单参考:list of SSH implementations。在没有缓解措施的情况下,该漏洞也只能是在使用某些加密算法时被利用。在PuTTY支持的算法中受影响的包括:ChaCha20-Poly1305(PuTTY中的名称为ChaCha20)以及AES-CBC(AES系列中的一种模式)。可以通过设置避免使用ChaCha20,AES-CBC更多的依赖服务器的设置选择,PuTTY不能完全主导。
其它关于Terrapin攻击的更多信息请自行查找了解,强烈建议更新相关软件到最新版本以避免这个问题。PuTTY 0.79 及其之前的版本都会受到它的影响,如果可能的话强烈建议使用PuTTY 0.80或者之后的版本,当然这由你自己决定。
基于上述原因,此次同步更新cnPuTTY 0.80.0.1发布。其中包含对cnPuTTY本身问题的简单修正。详细的内容如下:
1.Windows系统下的相关说明
在连接中没有实现'strict KEX'扩展并且使用了易受攻击的算法时,PuTTY将弹出Terrapin攻击风险的报警信息如下:
如果继续进行连接,连接建立后的事件日志如下:
存在Terrapin攻击隐患的日志输出
2023-12-25 23:45:30 查找主机 "192.168.44.137" 来自 SSH连接
2023-12-25 23:45:30 连接到 192.168.44.137 端口 22
2023-12-25 23:45:30 我们声明的版本:SSH-2.0-PuTTY_Release_0.80
2023-12-25 23:45:30 连接到 192.168.44.137
2023-12-25 23:45:30 远程版本:SSH-2.0-OpenSSH_9.2p1 Debian-2
2023-12-25 23:45:30 使用SSH协议版本 2
2023-12-25 23:45:30 没有GSSAPI安全可用的使用条件
2023-12-25 23:45:30 当前SSH连接容易受到'Terrapin'攻击(别名CVE-2023-48795)
2023-12-25 23:46:43 尽管存在'Terrapin'漏洞,但用户仍旧要求继续进行连接
2023-12-25 23:46:43 执行 NTRU Prime / Curve25519 hybrid key exchange,使用哈希 SHA-512 (unaccelerated)
2023-12-25 23:46:43 服务器也有ecdsa-sha2-nistp256/rsa-sha2-512/rsa-sha2-256主机密钥,但我们未存储它们
2023-12-25 23:46:43 主机密钥指纹是:
2023-12-25 23:46:43 ssh-ed25519 255 SHA256:yAU3FBTxrgwp4RtC/IyqtoKx9jXYOPPa8zMKDIa6Q00
2023-12-25 23:46:43 已初始化 ChaCha20 出站加密
2023-12-25 23:46:43 已初始化 Poly1305 出站MAC算法(在ETM模式)(加密要求)
2023-12-25 23:46:43 已初始化 ChaCha20 入站加密
2023-12-25 23:46:43 已初始化 Poly1305 入站MAC算法(在ETM模式)(加密要求)
2023-12-25 23:47:22 发送密码
2023-12-25 23:47:22 授予访问权限
2023-12-25 23:47:22 打开主会话通道
2023-12-25 23:47:22 已开通主通道
2023-12-25 23:47:22 已分配 pty
2023-12-25 23:47:22 已启动 shell/command
在连接中实现'strict KEX'扩展时,无论算法如何,都能避免漏洞的使用。这需要服务器与客户端共同支持。建立连接后,事件日志中会提示“启用严格的密钥交换规则”,如下:
///实现'strict KEX'扩展时的事件日志
2023-12-27 23:19:15 查找主机 "192.168.44.131" 来自 SSH连接
2023-12-27 23:19:15 连接到 192.168.44.131 端口 22
2023-12-27 23:19:15 我们声明的版本:SSH-2.0-PuTTY_Release_0.80
2023-12-27 23:19:15 连接到 192.168.44.131
2023-12-27 23:19:15 远程版本:SSH-2.0-OpenSSH_9.2p1 Debian-2+deb12u2
2023-12-27 23:19:15 使用SSH协议版本 2
2023-12-27 23:19:15 没有GSSAPI安全可用的使用条件
2023-12-27 23:19:15 启用严格的密钥交换规则
2023-12-27 23:19:15 执行 NTRU Prime / Curve25519 hybrid key exchange,使用哈希 SHA-512 (unaccelerated)
2023-12-27 23:19:15 服务器也有ecdsa-sha2-nistp256/rsa-sha2-512/rsa-sha2-256主机密钥,但我们未存储它们
2023-12-27 23:19:15 主机密钥指纹是:
2023-12-27 23:19:15 ssh-ed25519 255 SHA256:hQMU2IJghTkNZROO6rx4mwyUqfLjhqCfZmvHOcjh56k
2023-12-27 23:19:15 已初始化 AES-256 SDCTR (AES-NI accelerated) 出站加密
2023-12-27 23:19:15 已初始化 HMAC-SHA-256 (unaccelerated) 出站MAC算法
2023-12-27 23:19:15 已初始化 AES-256 SDCTR (AES-NI accelerated) 入站加密
2023-12-27 23:19:15 已初始化 HMAC-SHA-256 (unaccelerated) 入站MAC算法
2023-12-27 23:19:23 发送密码
2023-12-27 23:19:23 授予访问权限
2023-12-27 23:19:23 打开主会话通道
2023-12-27 23:19:24 已开通主通道
2023-12-27 23:19:24 已分配 pty
2023-12-27 23:19:24 已启动 shell/command
与Windows系统相关的发布内容如下图所示:
对应压缩包包含相应平台的程序参考如下如所示:
.sig文件为对应程序的数字签名,checksums文件包含对应程序的SHA256、SHA1、MD5校验值以便验证程序的完整性。获得相关程序后,请按需要自行选择使用。
2.Linux系统下的相关说明
在连接中没有实现'strict KEX'扩展并且使用了易受攻击的算法时,PuTTY同样将弹出Terrapin攻击风险的报警信息如下:
在本次cnPuTTY 0.80.0.1的发布中,修改了字体设置面板的显示如下图所示:
与Linux系统相关的发布内容如下图所示:
对应压缩包包含相应平台的可执行程序参考如下如所示:
可执行程序默认存放的路径为/usr/bin/,单个程序没有提供独立的数字签名与校验信息,以对应平台压缩包为整体提供数字签名与校验信息。具体请查看对应的checksums文件。
在压缩包当中,除了可执行程序外,还存在cnputty.desktop文件以及一些图标文件。本次发布与之前的cnPuTTY 0.79.0.1一样,采用比较简单的方式,直接提供二进制可执行文件,而不是以特定封装包的形式进行发布,请知悉。
在获得压缩包后,可直接解压文件,并将usr文件夹复制到根目录,相关文件会自动添加到指定目录。然后需要对可执行文件赋予相关权限。接着需要复制cnputty.desktop文件到桌面以方便使用。cnputty.desktop图标显示异常时,可能需要运行以下命令来刷新图标缓存
sudo gtk-update-icon-cache /usr/share/icons/hicolor
然后重新允许cnputty.deskto执行。完成这些后,就可用正常使用cnPuTTY了。需要注意的是在不同的Linux发行版本中,可能会因为能够使用字体的差异造成无法正常打开会话。这时你需要在字体设置中选择当前系统可用的字体来正常打开会话。
其它更多的参考信息请查看:cnPuTTY 0.79.0.1—PuTTY Release 0.79中文版本简单说明~~ 中Linux系统下的相关发布信息。
3.MacOS系统下的相关说明
在连接中没有实现'strict KEX'扩展并且使用了易受攻击的算法时,PuTTY也将弹出Terrapin攻击风险的报警信息如下:
与MacOS系统相关的发布内容如下图所示:
对应压缩包包含内容参考如下如所示:
与cnPuTTY 0.79.0.1发布相同,这里同样也只提供x86_64平台下的相关程序。.sig为数字签名文件,checksums.txt文件包含各文件的MD5、SHA1和SHA256的校验值。cnPuTTY.zip解压后为可独立使用的cnPuTTY.app应用。其中包含putty可执行程序,图标文件putty.icns,以及一个Info.plist文件。这里是一个简易的app应用程序,不是一个完整的、标准的苹果系统下的app封装包,在测试使用过程中能够正常使用。
在获取相关文件后,请根据自己的使用自行设置权限、路径位置及环境变量。对于plink、pscp、psftp、puttygen这四个命令行工具,可以直接使用。它们不依赖第三方库文件。对于pageant、putty必须安装第三方GTK库来获得支持,否则无法正常使用。对于cnPuTTY.app应用同样需要第三方GTK库支持,并且可以直接放置到应用程序文件夹来方便使用。
这里仅是一个简易发布,未包含和集成第三方运行库。所以需要使用者自行解决相关库依赖问题。第三方GTK库支持,推介通过Homebrew来进行安装。Homebrew具体安装过程略,请自行查找解决。安装好后,通过 brew install gtk+3 命令来安装第三方GTK库。完成后可正常使用pageant、putty、cnPuTTY.app程序。你也可以通过MacPorts或者GTK-OSX来获得GTK支持。如果你采用了这两种方法来获得GTK支持,那么这里的相关程序可能不适用于你的环境,你可能需要重新生成编译。请注意:本例中,在MacOS当中安装额外的X Window环境来支持PuTTY不是必须的选项。当然如果你需要可以安装X Window相关支持,实现方式也有很多中方法。推介使用XQuartz,它包含X11的服务器和客户端库以及一个终端实例。
完成所有之后,你可用以图形界面的方式单独使用cnPuTTY.app应用,或者只使用命令行工具来完成会话,又或者通过XQuartz来管理和启动图形界面连接会话。
其它更多的参考信息请查看:cnPuTTY 0.79.0.1—PuTTY Release 0.79中文版本简单说明~~ 中MacOS系统下的相关发布信息。
4.JK补丁版的相关说明
原始补丁网站的链接:PuTTY for win32 storing configuration into file
27. 12. 2023 - Update: this modified PuTTY is now based on PuTTY 0.80 (version 0.22.0)
使用JK补丁可以获得磁盘存储支持,这个补丁是由国外大神重写了PuTTY中处理存储/加载配置的相关函数来实现。相较于其它方式,这个更接近原版本程序并且使用方便,无需额外文件支持。国外大神从2005年至今一直长期支持补丁更新实属非常难得。
运行包含补丁的程序会在同级目录中自动生成会话目录、SSH主机密钥目录以及随机种子文件,如下:
./sessions/packedSessionName
./sshhostkeys/packedHostName
./putty.rnd
添加补丁后,提高了程序使用的便携性,可以放置在U盘或者其它介质中,而不需要每次使用时都去重新配置,方便在需要的地方使用它。除了将相关配置信息存储到文件外,与普通版本的程序使用没有任何差别。
与JK补丁相关的发布内容如下图所示:
其它更多的参考信息请查看:cnPuTTY 0.79.0.1—PuTTY Release 0.79中文版本简单说明~~ 中JK磁盘存储补丁的相关发布信息。
5.如何获得相关程序等内容??
第一推介的建议是不去使用它,包括但不限于cnPuTTY的MacOS、Linux以及Windows下的程序,因为这样你将不会面临任何相关问题。
【重要提醒:没有人能够确定或者保证cnPuTTY会跟随PuTTY的后续更新发布同步更新,也不能够确保或者保证cnPuTTY自身版本会进行后续更新或者修补,也许cnPuTTY的发布、更新仅仅是一次性的。请知悉!!】
可执行程序的获得,这是cnPuTTY出处的唯一永久性可执行程序的分享链接:https://pan.baidu.com/s/1NOdcUNUOAapHL4baKxDoVg?pwd=7wz9https://pan.baidu.com/s/1NOdcUNUOAapHL4baKxDoVg?pwd=7wz9可在网盘中获得如下所有内容:
请根据需要自行选择,其中cnPuTTY_Release_public.asc为发布公钥,可以用来验证数字签名以确保程序完整性。该公钥已经上传到公共域的服务器当中,也可以从相关服务器自行获取。公钥相关信息如下:
cnPuTTY_Release_public.asc
指纹:E165 4745 E33E D940 E5A8 70A1 D7EE F8BB 0749 C805
源代码的获得,当然这也是cnPuTTY出处的唯一永久性源代码的分享链接:https://github.com/dZ8Lx9OwX/cnPuTTYhttps://github.com/dZ8Lx9OwX/cnPuTTY
自此所有cnPuTTY 0.80.0.1的相关信息已经分享完毕,剩下的事情请自行决定。
【必要的安全提醒】:介于PuTTY历史上有出现“内置后门事件”,在此无法确保是否有人出于另外的原因修改了cnPuTTY导致不可预知的后果或者事件,所以在此特别强调了本发布的唯一分享途径,其它途径不确定是否相同。是否从其他可以信赖的地方获得可执行程序或源代码,这是你的选择!!其他任何人所做的修改都不应当被认为是与本发布相同,如果你进行了类似的修改工作,请务必让他人有明确的区分,以免混淆。当然这也是对你有益的,其他任何善意的修改都值得肯定。
【免责声明】:本篇内容及其它相关内容遵从相同的原则,这个原则也同样来源和适用于cnPuTTY、cnPuTTY CAC及cnKiTTY相关信息及内容。相关内容及发布与PuTTY、PuTTY CAC及KiTTY遵从相同的发布许可,不提供任何保证、不承担任何责任。包括但不限于已发布内容、已知信息或者其他相关的信息,以及直接或者间接的其他任何未知的情况,均不提供任何担保、不承担任何责任。你应当充分验证自己的需求和使用,以免造成不必要的麻烦。更多的其他信息请以相关网站的内容为准。所有的相关信息的获得请自行甄别验证,并自行承担相关责任。