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依赖项。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/655297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十一篇【传奇开心果系列】BeeWare的Toga开发移动应用示例:Briefcase和Toga 哥俩好

传奇开心果博文系列 系列博文目录BeeWare的Toga开发移动应用示例系列博文目录一、前言二、Briefcase和toga各自的主要功能分别介绍三、使用Toga 开发移动应用Briefcase工具是最佳拍档四、Briefcase搭档Toga创建打包发布联系人移动应用示例代码五、运行测试打包发布六、归纳总结…

二、Vue3文件目录介绍

node_modules: 项目的依赖库; src : 我们主要操作的地方,组件的增加、修改等都在这个文件夹里操作; assets: 放置静态资源,包括公共的 css 文件、 js 文件、iconfont 字体文件、img 图片文件 以及其他资源类文件。之所…

RabbitMQ之三种队列之间的区别及如何选型

目录 不同队列之间的区别 Classic经典队列 Quorum仲裁队列 Stream流式队列 如何使用不同类型的队列​ Quorum队列 Stream队列 不同队列之间的区别 Classic经典队列 这是RabbitMQ最为经典的队列类型。在单机环境中,拥有比较高的消息可靠性。 经典队列可以选…

数据库管理-第141期 DG PDB - Oracle DB 23c(20240129)

数据库管理141期 2024-01-29 第141期 DG PDB - Oracle DB 23c(20240129)1 概念2 环境说明3 操作3.1 数据库配置3.2 配置tnsname3.3 配置强制日志3.4 DG配置3.5 DG配置建立联系3.6 启用所有DG配置3.7 启用DG PDB3.8 创建源PDB的DG配置3.9 拷贝pdbprod1文件…

2023年算法CDO-CNN-BiLSTM-ATTENTION回归预测(matlab)

2023年算法CDO-CNN-BiLSTM-ATTENTION回归预测(matlab) CDO-CNN-BiLSTM-Attention切诺贝利灾难优化器优化卷积-长短期记忆神经网络结合注意力机制的数据回归预测 Matlab语言。 切诺贝利灾难优化器Chernobyl Disaster Optimizer (CDO)是H. Shehadeh于202…

薅运营商羊毛?封杀!

最近边小缘在蓝点网上看到一则消息 “浙江联通也开始严格排查PCDN和PT等大流量行为 被检测到可能会封停宽带”。 此前中国联通已经在四川和上海等多个省市严查家庭宽带 (部分企业宽带也被查) 使用 PCDN 或 PT,当用户的宽带账户存在大量上传数据的情况,中…

Jupyter notebook文件默认存储路径以及更改方法

目录 1、文件默认存储路径怎么查?2、文件默认存储路径怎么改? 转自:https://blog.csdn.net/fengyeer20120/article/details/109483362 初次使用Jupyter Notebook,确实好用啊!但安装Anaconda后,打开Jupyter …

gorm框架之常用增删改查(CRUD)

最好的文档其实是官方的文档,大家可以参考这个文档链接,本文也只是个搬运工: GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. 新建(create) 新建单条记录 一般新建记录…

cocos creator 调用预设体Prefab中的方法(调用另一个节点的方法)

调用预设体中的方法 通过cc.instantiate(this.star)创建这个预设体实例这个star预设体中添加了一个脚本组件star.ts 获取到这个脚本组件star.getComponent(‘star’).test(),并调用其中的test()方法同理可以用该方式像另一个节点中传值 //星星预设体property(cc.Pr…

[深度学习]paddleocrv4模型推理要比v3版本慢很多原因

请问为何 Mkldnn 在 ChineseV4 下运行会比 Onnx 和 Openblas 慢很多? 资料来源:https://github.com/sdcb/PaddleSharp/issues/75 qaqz111 commented on Dec 6, 2023 • edited 按 Readme 里面的说明来看,貌似 mkl 比 openblas 是要快的&…

【PostGIS】POSTGIS实现聚类统计提取外轮廓

项目需求根据某些条件进行聚类统计,然后返回聚类的外轮廓,这里主要用到POSTGIS的两个算法,一个是聚类统计功能,一个是提取外轮廓的功能。 1. 聚类统计 Postgis主要实现并提供了四种聚类方法,前两个为窗口函数&#x…

【动态规划】【图论】【C++算法】1575统计所有可行路径

作者推荐 【动态规划】【字符串】【行程码】1531. 压缩字符串 本文涉及知识点 动态规划汇总 图论 LeetCode1575统计所有可行路径 给你一个 互不相同 的整数数组,其中 locations[i] 表示第 i 个城市的位置。同时给你 start,finish 和 fuel 分别表示出…

RK3568 Android 13 系统裁剪

android 13 系统裁剪是个大工程,裁剪也是需要大量的测试,才能保证系统的稳定性,以下是RK官方给出的裁剪方案,有兴趣的可以去看一下,对裁剪不是要求过高的可以根据官方的建议,对系统进行裁剪: Rockchip And…

Web开发8:前后端分离开发

在现代的 Web 开发中,前后端分离开发已经成为了一种常见的架构模式。它的优势在于前端和后端可以独立开发,互不干扰,同时也提供了更好的可扩展性和灵活性。本篇博客将介绍前后端分离开发的概念、优势以及如何实现。 什么是前后端分离开发&am…

数据结构小练兵

二、程序填空 共1题 (共计18分) 第1题 (18.0分) 题号:316 难度:中 第1章 /*------------------------------------------------------- 【程序填空】 ----------------------------------------------…

Spring 学习1

1、什么是Spring Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言…

OpenHarmony隐藏应用(应用不在桌面显示,隐藏应用图标)

注意:此种方式是在OpenHarmony系统中生效 目录 一.找到UnsgnedReleasedProfileTemplate.json文件 二.修改 UnsgnedReleasedProfileTemplate.json文件 三.重新签名 一.找到UnsgnedReleasedProfileTemplate.json文件 什么是U

【书生·浦语大模型实战营】学习笔记目录

【书生浦语大模型实战营01】《书生浦语大模型全链路开源体系》【书生浦语大模型实战营02】《轻松玩转书生浦语大模型趣味Demo》学习笔记【书生浦语大模型实战营03】《基于 InternLM 和 LangChain 搭建你的知识库》学习笔记【书生浦语大模型实战营04】《(4)XTuner 大模型单卡低成…

5G安卓核心板开发板_MT6833天玑700规格参数

核心板采用沉金生产工艺,耐腐蚀抗干扰,支持-20℃-70℃环境下7x24小时稳定运行,尺寸仅为45mmx48mm x2.65mm,可嵌入到各种智能产品中,助力智能产品便携化及功能差异化。 联发科MT6833处理器采用台积电 7nm 制程的5G SoC…

log4j 日志级别及优先级排序

日志级别及优先级排序 : OFF(关闭) > fatal(致命错误) > error (错误) > warn (警告) > info(普通信息) > debug(调试信息) > TRACE > ALL(所有日志) 程序会打印 > 所设置级别的日志,故设置的日志等级越高,打印出来…