『CVE』简析CVE-2023-48795:SSH协议前缀截断攻击(Terrapin攻击)

文章目录

  • OpenSSH 9.6更新公告
  • Terrapin攻击 (CVE-2023-48795)
    • 基本信息
    • 利用手段
    • 利用路径
    • 利用条件
    • 利用原理及示意图
    • 危害
    • Terrapin-Scanner
  • 基于Terrapin的潜在风险:CVE-2023-46445 & 46446
  • 参考

OpenSSH 9.6更新公告

*ssh(1), sshd(8):

implement protocol extensions to thwart the so-called “Terrapin attack” discovered by Fabian Bäumer, Marcus Brinkmann and Jörg Schwenk. This attack allows a MITM to effect a limited break of the integrity of the early encrypted SSH transport protocol by sending extra messages prior to the commencement of encryption, and deleting an equal number of consecutive messages immediately after encryption starts. A peer SSH client/server would not be able to detect that messages were deleted.


实施协议扩展以挫败 Fabian Bäumer、Marcus Brinkmann 和 Jörg Schwenk 发现的所谓 “Terrapin 攻击”。这种攻击允许中间人(adversary-in-the-middle, MITM) 在加密开始前发送额外信息,并在加密开始后立即删除相同数量的连续信息,从而有限度地破坏早期加密 SSH 传输协议的完整性。对等 SSH 客户端/服务器将无法检测到信息已被删除。

While cryptographically novel, the security impact of this attack is fortunately very limited as it only allows deletion of consecutive messages, and deleting most messages at this stage of the protocol prevents user user authentication from proceeding and results in a stuck connection.


虽然在密码学上很新颖,但幸运的是,这种攻击对安全的影响非常有限,因为它只允许删除连续的报文,而在协议的这一阶段删除大部分报文会阻止用户验证的进行,并导致连接卡死。

The most serious identified impact is that it lets a MITM to delete the SSH2_MSG_EXT_INFO message sent before authentication starts, allowing the attacker to disable a subset of the keystroke timing obfuscation features introduced in OpenSSH 9.5. There is no other discernable impact to session secrecy or session integrity.


已发现的最严重影响是,它使 MITM 能够删除在身份验证开始前发送的 SSH2_MSG_EXT_INFO 消息,使攻击者能够禁用 OpenSSH 9.5 中引入的按键定时混淆功能的一个子集。对会话保密性或会话完整性没有其他明显影响。

OpenSSH 9.6 addresses this protocol weakness through a new “strict KEX” protocol extension that will be automatically enabled when both the client and server support it. This extension makes two changes to the SSH transport protocol to improve the integrity of the initial key exchange.


OpenSSH 9.6 通过新的 **"严格 KEX "**协议扩展解决了这一协议弱点,当客户端和服务器都支持该扩展时,它将自动启用。该扩展对 SSH 传输协议做了两处修改,以提高初始密钥交换的完整性。

Firstly, it requires endpoints to terminate the connection if any unnecessary or unexpected message is received during key exchange (including messages that were previously legal but not strictly required like SSH2_MSG_DEBUG). This removes most malleability from the early protocol.


首先,它要求端点在密钥交换过程中收到任何不必要或意外信息(包括 SSH2_MSG_DEBUG 等以前合法但并非严格要求的信息)时终止连接。这就消除了早期协议的大部分可变性。

Secondly, it resets the Message Authentication Code counter at the conclusion of each key exchange, preventing previously inserted messages from being able to make persistent changes to the sequence number across completion of a key exchange. Either of these changes should be sufficient to thwart the Terrapin Attack.


其次,它在每次密钥交换结束时重置信息验证码计数器,防止先前插入的信息在密钥交换完成后对序列号进行持续更改。无论哪种变化,都足以挫败 Terrapin 攻击。

More details of these changes are in the PROTOCOL file in the OpenSSH source distribition.


有关这些更改的更多详情,请参阅 OpenSSH 源代码发行版中的 PROTOCOL 文件。

Terrapin攻击 (CVE-2023-48795)

基本信息

CVE-2023-48795: BaseScore N/A

CVSS:3.1/N/A

The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remote attackers to bypass integrity checks such that some packets are omitted (from the extension negotiation message), and a client and server may consequently end up with a connection for which some security features have been downgraded or disabled, aka a Terrapin attack. This occurs because the SSH Binary Packet Protocol (BPP), implemented by these extensions, mishandles the handshake phase and mishandles use of sequence numbers. For example, there is an effective attack against SSH’s use of ChaCha20-Poly1305 (and CBC with Encrypt-then-MAC). The bypass occurs in chacha20-poly1305@openssh.com and (if CBC is used) the -etm@openssh.com MAC algorithms.


在 9.6 之前的 OpenSSH 和其他产品中找到的具有某些 OpenSSH 扩展的 SSH 传输协议允许远程攻击者绕过完整性检查,从而省略某些数据包(来自扩展协商消息),因此客户端和服务器可能最终获得某些安全功能已降级或禁用的连接。 又名 Terrapin 攻击。这是因为这些扩展实现的 SSH 二进制数据包协议 (BPP) 错误地处理了握手阶段,并错误地处理了序列号的使用。例如,针对 SSH 使用 ChaCha20-Poly1305(以及带有 Encrypt-then-MAC 的 CBC)的攻击存在有效攻击。旁路发生在 chacha20-poly1305@openssh.com 和(如果使用 CBC)-etm@openssh.com MAC 算法中。

利用手段

中间人攻击、SSH握手、流量攻击

利用路径

在SSH双方建立安全通道前,有一次明文消息握手,中间人此时向SSH服务器发送X条报文,可以阻止Server在安全通道中发送给Client的前X条消息,可以干扰连接的设置,降低所使用的安全性

握手使用计数器计算收发包数,之后计数器用于验证握手过程是否完整。只要计数正确,允许继续连接。

利用条件

  1. 特定加密算法:ChaCha20-Poly1305和CBC with Encrypt-then-MAC

  2. 攻击者处于中间人位置,可以在 TCP/IP 层拦截和修改连接的流量

  3. 本地网络发起,从Internet发起很困难

    The Terrapin attack requires an active Man-in-the-Middle attacker, that means some way for an attacker to intercept and modify the data sent from the client or server to the remote peer. This is difficult on the Internet, but can be a plausible attacker model on the local network.

利用原理及示意图

攻击者可以在初始密钥交换期间注入任意数量的SSH消息,并在交换完成后移除相同数量的消息,从而破坏SSH扩展协商(RFC8308),可降级连接的安全性。

ChaCha20-Poly1305:

攻击者在握手结束前注入 IGNORE 信息,计数器的变化会在安全通道中阻断 EXT_INFO消息

在这里插入图片描述

CBC-EtM:

攻击者在Client发送 NEWKEYS 之前注入 UNKNOWN。 由于Server已经发送了 NEWKEYS,UNIMPLMENTED 消息将在 EXTINFO 之后在安全通道内发送。 损坏的未实现消息很可能被忽略

在这里插入图片描述

危害

该漏洞官方描述为:General Protocol Flaw(一般协议缺陷)

……通过中间人攻击,攻击者可能迫使SSH客户端采用较弱的身份验证方式,并停用一些防御机制,目前很难准确评估这个漏洞的真正影响……

……漏洞利用成本高,在真实场景中被利用几率很低,但影响面较大……

The data in the messages exchanged after the completion of the handshake determines the severity of the attack’s repercussions.
握手完成后交换的消息中的数据决定了攻击影响的严重性。

Right now, the biggest mitigation factor for the attack is the MiTM requirement, which makes Terrapin a less severe threat. For this reason, patching CVE-2023-48795 may not be a priority in many cases.
目前,攻击的最大缓解因素是 MiTM 的需求,这使得 Terrapin 的威胁不那么严重。因此,在许多情况下,修补 CVE-2023-48795 可能不是优先事项。

Terrapin-Scanner

官方给出了一个漏扫工具,开源在gthb

https://github.com/RUB-NDS/Terrapin-Scanner
Terrapin Vulnerability Scanner 是一个用 Go 编写的小型实用程序,可用于确定 SSH 客户端或服务器对 Terrapin 攻击的漏洞。漏洞扫描程序需要与对等方建立单个连接,以收集所有支持的算法。但是,它不会执行完全成熟的 SSH 密钥交换,永远不会尝试在服务器上进行身份验证,并且在实践中不会执行攻击。相反,漏洞是通过检查支持的算法和对已知对策(严格密钥交换)的支持来确定的。这可能会错误地声明漏洞,以防对等方支持此工具未知的对策。

看一下该工具的核心代码,在Terrapin-Scanner/blob/main/tscanner/tscanner.go#Scan()

在这里插入图片描述
这里就是简单的发了个tcp包到目标服务器,通过ssh服务器返回的banner来判定是否符合版本号、是否使用了有问题的算法、是否修复了该漏洞

在这里插入图片描述

基于Terrapin的潜在风险:CVE-2023-46445 & 46446

Python SSH客户端AsyncSSH的开源代码中存在可利用风险,目前Terrapin研究员上报了两个CVE

CVE-2023-46445: BaseScore 5.9

CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N

An issue in AsyncSSH before 2.14.1 allows attackers to control the extension info message (RFC 8308) via a man-in-the-middle attack, aka a “Rogue Extension Negotiation.”


低于 2.14.1 的 AsyncSSH 中存在一个问题,允许攻击者通过中间人攻击(也称为“恶意扩展协商”)来控制扩展信息消息 (RFC 8308)。

CVE-2023-46446: BaseScore 6.8

CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N

An issue in AsyncSSH before 2.14.1 allows attackers to control the remote end of an SSH client session via packet injection/removal and shell emulation, aka a “Rogue Session Attack.”


低于 2.14.1 的 AsyncSSH 中存在一个问题,允许攻击者通过数据包注入/删除和 shell 仿真来控制 SSH 客户端会话的远程端,也称为“恶意会话攻击”。

参考

oss-security - Announce: OpenSSH 9.6 released (openwall.com)

Terrapin attacks can downgrade security of OpenSSH connections

terrapin-attack.com

NVD - CVE-2023-48795 — NVD - CVE-2023-48795 (nist.gov)

NVD - CVE-2023-46445— NVD - CVE-2023-46445 (nist.gov)

NVD - CVE-2023-46446— NVD - CVE-2023-46446 (nist.gov)

Harden AsyncSSH state machine against message injection during handshake · ronf/asyncssh@83e43f5 (github.com)

新型攻击动摇互联网安全基础,SSH安全性是否被打破?

欢迎关注我的博客 :CSDN@Ho1aAs
版权属于:Ho1aAs
本文链接:https://ho1aas.blog.csdn.net/article/details/135199758
版权声明:本文为原创,转载时须注明出处及本声明

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第十六节TypeScript 类

1、简介 TypeScript是面向对象的JavaScript。 类描述了所创建的对象共同的属性与方法。 2、类的定义 class class_name { // 类作用域 } 定义类的关键字是class,后面紧跟类名,类可以包含以下几个模块: 字段 – 字段是类里面声明的变量。字…

java练习之abstract (抽象) final(最终) static(静态) 练习

1:分析总结:写出private、abstract、static、final之间能否联动使用,并写出分析原因 private static final 之间可以任意结合 abstract 不可以与private static final 结合使用 2:关于三个修饰符描述不正确的是(AD) A. static …

实习知识整理8:如何实现将商品加入购物车

情景分析:当我们进入商品详情页面时,一般会有两个按钮,一个是加入购物车,另一个是直接购买的按钮,我们先来看看加入购物车是如何实现的 1. 数据库表分析 需要3个表:商品表item、用户表user、购物车表cart 需…

基于JAVA的医院门诊预约挂号系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2 科室医生档案模块2.1.3 预约挂号模块2.1.4 医院时政模块 2.2 可行性分析2.2.1 可靠性2.2.2 易用性2.2.3 维护性 三、数据库设计3.1 用户表3.2 科室档案表3.3 医生档案表3.4 医生放号…

Autosar CAN开发05(从实际应用认识CAN波特率)

建议同时阅读本专栏的: Autosar CAN开发03(从实际应用认识CAN总线的物理层) Autosar CAN开发04(从实际应用认识CAN报文) Autosar CAN开发05(从实际应用认识CAN波特率) 前言 当知道了CAN的物…

STM32MP157D-DK1开发板Qt镜像构建

上篇介绍了STM32MP57-DK1开发板官方系统的烧录。那个系统包含Linux系统的基础功能,如果要进行Qt开发,还需要重新构建带有Qt功能的镜像 本篇就来介绍如何构建带有Qt功能的系统镜像,并在开发板中烧录构建的镜像。 1 Distribution包的构建 ST…

优化模型:MATLAB整数规划

一、整数规划介绍 1.1 整数规划的定义 若规划模型的所有决策变量只能取整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。 1.2 整数规划的分类 整数规划模型大致可分为两类: (1&…

HAL库的常用库函数(根据学习而更新)

目录 一、常用的GPIO相关HAL库函数 1、GPIO的初始化 2、配置GPIO引脚输出电平 3、切换指定引脚的电平,电平的翻转 4、读取指定GPIO引脚的电平 5、结构体 GPIO_InitTypeDef (引脚)定义: 6、高低电平的表示 7、延时函数&…

Java架构师系统架构需求分析实战

目录 1 导语2 需求分析实战3 核心方法论-架构立方体4 功能性模型-模块定义5 功能性模型-模块关系图6 功能性模型-模块细化 想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导语 架构设计的实战和思维方法的讨论,主要聚焦于需求分析的重要性和方…

buuctf-Misc 题目解答分解97-99

97.[BSidesSF2019]zippy 下载完就是一个流量包 追踪tcp nc -l -p 4445 > flag.zip unzip -P supercomplexpassword flag.zip Archive: flag.zip 压缩包密码 supercomplexpassword 保存为 flag.zip 解压得到flag 98.[GUET-CTF2019]虚假的压缩包 先从虚假的压缩包入手 &am…

逆向P1P2总结

字节八位 word 16位 deword 32 位 00 00 00 e8 是存储32位信息的起点 不是程序运行的起点 为什么电脑有32位与64位之分 寻址宽度 以字节为单位 0xfffffff 1 就是最大容量 转为十进制为 4294967296 / 1024 (k)/1024 (kb)/ 1…

软件测试面试八股文——基础篇

5)错误推测法:是基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法 6)正交实验法 7)判定表法 8)测试大纲法 3、提交缺陷的八大要素 1)缺陷编号&#xff1a…

数据通信网络基础华为ICT网络赛道

目录 前言: 1.网络与通信 2.网络类型与网络拓扑 3.网络工程与网络工程师 前言: 数据通信网络基础是通信领域的基本概念,涉及数据传输、路由交换、网络安全等方面的知识。华为ICT网络赛道则是华为公司提出的一种技术路径,旨在通…

合并的单元格如何填充连续的序号

希望你以后碰到合并的单元格,不在一个个输入序号,用以下操作帮你输入连续的序号。 一、操作过程如下 1.有一个基准的单元格在同一列,而且这个基准单元格必须得是序号为1的单元格的上面的一个单元格,这样的话后面才能自动递增&am…

Cesium.js三维地图的实现(依托天地图CDN文件)

零、技术选型: Vue2、VueCli5、天地图、Cesium.js 一、通过天地图官网案例实现 需要引入天地图官方提供的CDN链接访问Cesium.js相关文件 相关文件: https://api.tianditu.gov.cn/cdn/demo/sanwei/static/cesium/Cesium.js https://api.tianditu.gov.cn/…

大数据技术学习笔记(十一)—— Flume

目录 1 Flume 概述1.1 Flume 定义1.2 Flume 基础架构 2 Flume 安装3 Flume 入门案例3.1 监控端口数据3.2 实时监控单个追加文件3.3 实时监控目录下多个新文件3.4 实时监控目录下的多个追加文件 4 Flume 进阶4.1 Flume 事务4.2 Flume Agent 内部原理4.3 Flume 拓扑结构4.3.1 简单…

PyQt5和Qt designer的详细安装教程

Qt designer界面和所有组件功能的详细介绍参考:https://blog.csdn.net/qq_43811536/article/details/135186862?spm1001.2014.3001.5501 目录 0. 写在前面1. Anaconda创建虚拟环境2. 安装PyQt5和Qt designer3. 测试安装成功 0. 写在前面 Qt Designer是Qt提供的一种…

智慧互联网银行引领金融变革,开源网安VulHunter护航数字化发展

某银行作为国内知名的互联网银行,以构建“智慧型互联行”为总体战略目标,始终坚持科技赋能金融的理念。通过AI、大数据、云计算等数字技术与金融业务的探索融合,实现以更低的成本为客户提供便捷、高效和优质体验的互联网金融服务。 架构升级助…

操作无法完成(错误 0x000006ba),Windows 11 PDF打印机无法使用解决办法

操作无法完成(错误 0x000006ba),Windows 11 PDF打印机无法使用解决办法 解决方式一 先重启一次电脑,看看是否可以解决问题。 解决方式二 重新启动 Printer Spooler 服务

【JAVA】黑马MybatisPlus 学习笔记【三】【拓展功能】

3.扩展功能 3.1.代码生成 在使用MybatisPlus以后,基础的Mapper、Service、PO代码相对固定,重复编写也比较麻烦。因此MybatisPlus官方提供了代码生成器根据数据库表结构生成PO、Mapper、Service等相关代码。只不过代码生成器同样要编码使用,…