内容提要
OpenSSH 10.6 发布,禁用 LZ77 压缩字典,因研究发现多通道共享压缩状态可能导致明文泄露,攻击方式类似 CRIME 和 BREACH。同时拒绝命令行用户名中的 $ 和 \,防止被 shell 解释。压缩仍可使用但效果降低,建议在应用层压缩。此外,后量子签名算法去掉实验后缀,scp -R 远程复制开始淘汰。
延伸解读
压缩攻击的实际门槛
文章指出,该攻击需要攻击者能向同一SSH会话的一个通道注入选定明文,并观察加密流量,同时秘密数据在另一通道传输。且OpenSSH默认关闭压缩,只有手动启用压缩时才会受影响。因此,普通交互式会话风险极低,但自动化任务若启用压缩且满足条件,则可能面临信息泄露。
升级后的压缩策略调整
OpenSSH 10.6禁用了LZ77字典编码,但保留Huffman编码,压缩仍可用但效率下降。官方建议将压缩移至应用层,通常性能更好且不受此攻击影响。对于通过受限连接传输大量可压缩数据的自动化作业,升级后可能需要调整压缩位置,否则可能遇到带宽或速度问题。
用户名限制的影响范围
新版本拒绝命令行用户名中的$和\,以防止其被shell解释。但通过SSH配置文件中的User指令设置的用户名不受此限制。因此,依赖命令行传递含这些字符用户名的脚本或代理工具需要修改,而合法账户仍可通过配置文件正常使用。
其他可能影响工作流的变更
后量子签名算法ssh-mldsa44-ed25519去掉了实验性后缀,使用旧实现创建的密钥需要重新生成或移除。同时,scp -R的远程到远程复制开始被淘汰,10.6中仍可用但会发出警告,未来将不再支持。自动化流程若依赖这些功能,应提前规划迁移。
Q&A
OpenSSH 10.6 为什么禁用了 LZ77 压缩字典?
因为研究人员发现,在多通道 SSH 会话中共享压缩状态可能导致明文泄露。攻击者通过向一个通道注入选定明文并观察加密流量,可以利用压缩历史推断另一个通道中的秘密信息,攻击方式类似 CRIME 和 BREACH。
OpenSSH 10.6 对用户名中的哪些字符进行了限制?为什么?
OpenSSH 10.6 拒绝命令行用户名中的 $ 和 \ 字符,以防止它们通过 ProxyCommand、Match exec 等指令被 shell 解释执行。但通过配置文件中的 User 指令设置的用户名不受此限制。
禁用 LZ77 后,SSH 压缩会有什么变化?
压缩仍然可用,但效果会降低,因为只保留了 Huffman 编码。OpenSSH 建议在应用层进行压缩,这样通常性能更好且不受此攻击影响。大多数交互式会话可能感觉不到差异,但传输大量可压缩数据的自动化任务可能受影响。
攻击者如何利用 SSH 压缩漏洞恢复明文?
攻击者向一个通道注入选定明文,并观察加密流量。由于 LZ77 压缩字典跨通道共享,攻击者控制的数据会影响另一个通道中秘密数据的压缩方式。当猜测匹配秘密的一部分时,加密流量会略微变短,从而泄露信息。
OpenSSH 10.6 中后量子签名算法有什么变化?
混合后量子签名算法 ssh-mldsa44-ed25519 去掉了实验性的 @openssh.com 后缀,这意味着使用旧实现创建的密钥需要重新生成或删除。
OpenSSH 10.6 对 scp -R 命令做了什么调整?
OpenSSH 10.6 开始逐步淘汰 scp -R 用于远程到远程的复制。该命令在 10.6 中仍然可用,但会发出警告,并最终将被忽略。