OpenSSH 9.6/9.6p1 (2023-12-18)的发布说明(中文译文)

2024-01-30 01:20

本文主要是介绍OpenSSH 9.6/9.6p1 (2023-12-18)的发布说明(中文译文),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

OpenSSH 9.6/9.6p1 (2023-12-18)

OpenSSH 9.6 于 2023 年 12 月 18 日发布。相关镜像位于OpenSSH。OpenSSH 是 100% 完整的 SSH 协议 2.0 实现包括 sftp 客户端和服务器支持。

再次感谢 OpenSSH 社区的帮助,继续支持该项目,特别是那些将代码或补丁、报告的错误、测试的快照或捐赠给项目,做出贡献的人。

有关捐赠的更多信息,请访问: OpenSSH网站

自 OpenSSH 9.5 以来的变化

======================

此版本包含许多安全修复和一些小功能和错误修复。

安全

====

此版本包含对新发现的SSH 传输协议风险的修复,与受限 PKCS#11 相关的逻辑错误ssh-agent(1) 中的密钥以及使用包含无效字符的用户名或主机名调用ssh(1)的程序的对策。

* ssh(1), sshd(8):OpenSSH 9.6 通过引入“strict KEX”协议扩展来应对所谓的“Terrapin attack”。这种攻击允许中间人(MITM)在加密开始之前发送额外的消息,并在加密启动后立即删除相等数量的连续消息,从而在早期加密的SSH传输协议中造成有限的完整性破坏。虽然这种攻击在密码学上比较新颖,但其对安全性的影响相对有限。
“strict KEX”协议扩展主要做了两方面的改变来增强初始密钥交换的完整性:
1、终止不必要的连接:它要求在密钥交换过程中,如果收到任何不必要或意外的消息(包括之前合法但不严格要求的消息,如SSH2_MSG_DEBUG),则终端点必须终止连接。这消除了早期协议中的大部分可变性。
2、重置MAC计数器:它在每次密钥交换结束时重置消息认证码(MAC)计数器,防止之前插入的消息在密钥交换完成后对序列号造成持久性更改。
这些更改中的任何一项都应该足以阻止Terrapin攻击。
要在现有的SSH实现中实施这些协议扩展,您需要:
1、更新SSH库:确保您的SSH客户端和服务器都更新到了支持“strict KEX”的版本(如OpenSSH 9.6或更高版本)。
2、配置SSH:在SSH配置文件(通常是sshd_config对于服务器,和客户端的配置文件对于客户端)中启用“strict KEX”。具体的配置选项可能会因版本和实现而异,所以请查阅您所使用的SSH版本的文档。
3、测试:在部署到生产环境之前,在测试环境中彻底测试新的配置,以确保它与现有的系统和应用程序兼容,并且按预期工作。
4、保持更新:继续关注SSH和相关安全性的更新,因为新的攻击和漏洞可能会不断被发现。
最后,请注意,这些建议基于您提供的信息,并假设您正在使用的是或计划升级到支持“strict KEX”的SSH版本。如果您使用的是不同的SSH实现或版本,请查阅该实现的官方文档以获取具体的指导。* ssh-agent(1):在添加PKCS#11托管的私钥时,如果指定了目标约束,而PKCS#11令牌返回了多个密钥,那么只有第一个密钥会应用这些约束。常规私钥、FIDO令牌和无约束密钥的使用不受影响。 * ssh(1):如果向ssh(1)传递了包含shell元字符的无效用户或主机名,并且ProxyCommand、LocalCommand指令或“match exec”谓词通过%u、%h或类似的扩展令牌引用了用户或主机名,那么攻击者如果可以向ssh(1)提供任意的用户/主机名,就可能会根据用户提供的ssh_config(5)指令中存在的引号来执行命令注入。
这种情况可能出现在git子模块中,因为存储库可能包含用户/主机名中包含shell字符的子模块。在从不受信任的来源检出存储库时,git不会在用户或主机名中禁止使用shell元字符。
尽管我们认为确保传递给ssh(1)的参数的有效性是用户的责任,特别是在上述git示例这样的安全边界上,但OpenSSH 9.6现在禁止在通过命令行提供的用户和主机名中使用大多数shell元字符。这种防范措施并不能保证在所有情况下都有效,因为对于ssh(1)来说,普遍过滤可能与用户提供的命令相关的shell元字符是不可行的。
通过ssh_config(5)提供的用户/主机名不受这些限制,允许继续使用使用奇怪名称的配置,假设用户知道他们在自己的配置文件中正在做什么。
简而言之,这是一个关于ssh安全性的重要更新,它试图防止恶意用户或攻击者利用用户/主机名中的shell元字符进行命令注入攻击。然而,它并不能提供100%的安全保证,因此用户仍需小心谨慎地处理自己的SSH配置和命令。
潜在的不兼容更改

-------------------------

 * ssh(1), sshd(8):RFC4254连接/通道协议提供了一种类似于TCP的窗口机制,该机制限制了未经对方接受就可以发送的数据量。在过去,如果非标准的SSH实现对端超出了这个限制,ssh(1)/ sshd(8)会丢弃多余的数据。从OpenSSH 9.6开始,如果对端超过窗口限制超过了一个小的容差因子,ssh(1)/ sshd(8)现在将终止连接。这个更改对于遵循规范的SSH实现应该没有影响。
新功能

----------

 * ssh(1):添加一个%j令牌,该令牌可以扩展为配置的ProxyJump主机名(如果未使用此选项,则为空字符串),并且可以在ssh_config(5)关键字bz3610中使用。
* ssh(1):在客户端中添加对ChannelTimeout的支持,在服务器中的镜像相同选项,并允许ssh(1)终止静默通道。
* ssh(1), sshd(8), ssh-add(1), ssh-keygen(1): 添加对以PEM PKCS8格式读取ED25519私钥的支持。以前仅支持OpenSSH私钥格式。
* ssh(1), sshd(8):引入一种协议扩展,允许在服务器了解用于身份验证的用户名之后,重新协商可接受的用于公钥身份验证的签名算法。这允许在“Match user”块中更改sshd_config(5)的PubkeyAcceptedAlgorithms。
* ssh-add(1), ssh-agent(1):添加代理协议扩展,以便在加载PKCS#11密钥时指定证书。这允许在所有支持ssh-agent(1)的OpenSSH工具中使用由PKCS#11私钥支持的证书。以前只有ssh(1)支持这种用例。
错误修正

------------

* ssh(1):在决定是否启用击键时间混淆时,仅当具有TTY的通道处于活动状态时才启用它。
* ssh(1):将主循环从poll(3)切换到ppoll(3),并在检查在信号处理程序中设置的标志之前屏蔽信号。这避免了在向ssh发出退出信号和轮询之间可能出现的竞态条件。bz3531
* ssh(1):当连接到同时使用AddressFamily和CanonicalizeHostname指令的目标时,可能会忽略AddressFamily指令。bz5326
* sftp(1):正确处理服务器返回意外消息时的limits@openssh.com选项。
* 对PuTTY和Dropbear的regress/integration测试进行了一些修复。
* ssh(1):仅在身份验证结束时释放GSS OID,避免不必要的初始化/清理周期。bz2982
* ssh_config(5):在手册中提到“none”是IdentityFile的有效参数。bz3080
* scp(1):改进了在旧SCP/RCP协议模式下,因与服务器的路径不匹配客户端的glob(3)模式而被拒绝的调试。
* ssh-agent(1):如果之前的会话绑定操作失败,则拒绝针对目标受限密钥的签名操作。如果用户使用的ssh(1)客户端和ssh-agent(1)不匹配,而客户端支持代理不支持的密钥类型,那么这可能会防止将来出现故障开放的情况。
可移植性

-----------

* 更好地识别不受支持和不稳定的编译器标志,例如在多个clang版本中一直不稳定的-fzero-call-used-regs。
* 对回归测试可靠性和日志收集进行了一些修复。
* 更新RPM规范中的OpenSSL依赖项。

这篇关于OpenSSH 9.6/9.6p1 (2023-12-18)的发布说明(中文译文)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/658699

相关文章

Before和BeforeClass的区别及说明

《Before和BeforeClass的区别及说明》:本文主要介绍Before和BeforeClass的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Before和BeforeClass的区别一个简单的例子当运行这个测试类时总结Before和Befor

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增

Maven 依赖发布与仓库治理的过程解析

《Maven依赖发布与仓库治理的过程解析》:本文主要介绍Maven依赖发布与仓库治理的过程解析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录Maven 依赖发布与仓库治理引言第一章:distributionManagement配置的工程化实践1

idea报错java: 非法字符: ‘\ufeff‘的解决步骤以及说明

《idea报错java:非法字符:‘ufeff‘的解决步骤以及说明》:本文主要介绍idea报错java:非法字符:ufeff的解决步骤以及说明,文章详细解释了为什么在Java中会出现uf... 目录BOM是什么?1. BOM的作用2. 为什么会出现 \ufeff 错误?3. 如何解决 \ufeff 问题?最

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析