当前位置: 首页 > news >正文

OpenSSH远程代码执行漏洞 (CVE-2024-6387)

1. 前言

OpenSSH是一套基于安全外壳(SSH)协议的安全网络实用程序,它提供强大的加密功能以确保隐私和安全的文件传输,使其成为远程服务器管理和安全数据通信的必备工具。

OpenSSH 自 1995 年问世近 20 年来,首次出现了未经验证的远程执行(RCE)漏洞,攻击者可以提权至 root 最高权限,在不需要用户交互的情况下执行任意代码。

该漏洞是由于OpenSSH服务器 (sshd) 中的信号处理程序竞争问题,未经身份验证的攻击者可以利用此漏洞在Linux系统上以root身份执行任意代码。

2. 漏洞信息

2.1 发现

该漏洞于今年 5 月被网络安全公司 Qualys 发现,追踪编号为 CVE-2024-6387,存在于 OpenSSH 服务器(sshd)中,由于信号处理器竞赛条件存在缺陷,可以让未经认证的远程攻击者以 root 用户身份执行任意代码。

2.2 相关公告

Debian 安全公告:

如果客户端没有在 LoginGraceTime 秒(默认为 120 秒)内通过身份验证,那么 sshd 的 SIGALRM 处理程序就会被异步调用,并调用各种不安全的异步信号函数。

Qualys 公司的公告:

攻击者利用该漏洞,可以让系统全面瘫痪,以 root 最高级别权限全面接管系统,安装恶意软件、篡改数据和创建后门便于后续访问等等。

而且攻击者可以利用该漏洞发起连锁攻击,以已经被入侵的系统为立足点,辐射攻击网络中其它存在问题的设备。

奇安信公司的安全风险通告:

2.2技术细节

以下是我对Qualys 提供的技术文档的总结。

CVE-2024-6387是一个影响OpenSSH服务器的漏洞(sshd),存在于glibc基础的Linux系统上。这一漏洞源于一个信号处理竞态条件,当客户端未在指定的LoginGraceTime秒内完成认证时,sshd的SIGALRM信号处理程序会被异步调用,而这个信号处理程序调用了非异步信号安全的函数(如syslog())。这个漏洞的重现来源于2006年报道的CVE-2006-5051漏洞。

影响版本
  • OpenSSH < 4.4p1:若未对CVE-2006-5051完成补丁,容易受到这个信号处理竞态条件的影响。
  • 4.4p1 <= OpenSSH < 8.5p1:不受此漏洞影响。
  • 8.5p1 <= OpenSSH < 9.8p1:由于2020年10月的一个错误提交重新引入了这个漏洞。
漏洞细节及利用
  • 信号处理竞态条件:当sshd的LoginGraceTime到期后,其SIGALRM处理程序会调用syslog()等非异步信号安全的函数,从而导致潜在的远程代码执行(RCE)。
利用方式
  1. 理论研究

    • 找到一个有用的代码路径,如果在正确的时间被SIGALRM打断,那么sshd会处于一种不一致的状态,然后利用这种不一致状态进行攻击。
  2. 实践经验

    • 通过中断sshd的公钥解析代码中的free()调用,造成堆中内存状态不一致。
    • 利用这种不一致状态在SIGALRM处理程序的另一个free()调用中实现远程代码执行。
时间策略
  • 旧版本攻击

    • SSH-2.0-OpenSSH_3.4p1:通过实践发现平均需要约10,000次尝试来赢得竞态条件,最终大约需要一周时间获得远程root shell。
    • SSH-2.0-OpenSSH_4.2p1:类似的方法大约需要1-2天获得远程root shell。
  • 现代版本攻击

    • SSH-2.0-OpenSSH_9.2p1
      • 在SIGALRM中断malloc()调用,造成堆内存不一致。
      • 利用不一致内存状态在SIGALRM处理程序中的另一个malloc()调用(尤其在syslog()内部)。
      • 平均需要10,000次尝试约3-4小时以内实现,最终6-8小时内获得远程root shell。
针对amd64的利用前景
  • 计划针对Rocky Linux 9进行攻击,利用glibc映射的地址特点及malloc系列函数的漏洞进行远程代码执行。
修复与缓解
  • 官方修复:2024年6月6日的commit(81c1099)修复了这一漏洞,改进了sshd信号处理的机制。
  • 临时解决方案:对于无法立即更新或重编译的系统,可以通过配置LoginGraceTime为0来暂时规避远程代码执行问题,但会造成潜在的拒绝服务(DoS)风险。

2.3 漏洞利用

尽管该漏洞很严重,但 Qualys 称 regreSSHion 很难被利用,需要多次尝试才能实现必要的内存破坏。

Qualys 的技术文件对漏洞利用的描述如下:

由于该漏洞的远程竞态条件性质,使得利用它变得具有挑战性,需要多次尝试才能成功攻击。这可能导致内存损坏,并需要克服地址空间布局随机化(ASLR)。深度学习技术的进步可能显著提高利用率,从而为攻击者在利用此类安全漏洞时提供巨大的优势。

2.4 影响版本

8.5p1 <= OpenSSH < 9.8p1

2.5 处理建议

1. 目前官方已有可更新版本,建议受影响用户升级至最新版本:

OpenSSH > 9.8p1

官方补丁下载地址:

https://www.openssh.com/releasenotes.html

2. 使用防火墙等网络控制手段限制 SSH 访问,并实施网络分段以防止横向移动(指网络攻击者或威胁行为者在搜索最终成为攻击活动目标的关键数据和资产时用来逐步在网络中移动的技术)。

3. 如果 OpenSSH 服务器无法立即更新,可在 sshd 配置文件中将 "LoginGraceTime" 设置为 0,但要注意这可能会使服务器遭受拒绝服务攻击。

最后

这个漏洞影响极广,因为openSSH被广泛使用。漏洞成功利用后的影响也是极大的,因为可以以root身份执行任意代码。但是同时我们也发现这个漏洞利用难度很大,需要多次尝试才能实现攻击。

在如今AI时间,深度学习技术的加持可以帮助黑客显著提高漏洞利用成功率,所以这个漏洞我们不容轻视。

参考资料

Qualys博客:

regreSSHion: Remote Unauthenticated Code Execution Vulnerability in OpenSSH server | Qualys Security Blog

问题代码:
whttps://www.qualys.com/2024/07/01/cve-2024-6387/regresshion.txt

奇安信CERT

OpenSSH 远程代码执行漏洞(CVE-2024-6387)安全风险通告 (qq.com)

阿里云漏洞库

阿里云漏洞库

IT之家

相关文章:

OpenSSH远程代码执行漏洞 (CVE-2024-6387)

1. 前言 OpenSSH是一套基于安全外壳&#xff08;SSH&#xff09;协议的安全网络实用程序&#xff0c;它提供强大的加密功能以确保隐私和安全的文件传输&#xff0c;使其成为远程服务器管理和安全数据通信的必备工具。 OpenSSH 自 1995 年问世近 20 年来&#xff0c;首次出现了…...

高薪程序员必修课-java并发编程的bug源头

前言 Java并发编程虽然强大&#xff0c;但也容易引发复杂的bug。并发编程的bug主要源自以下几个方面&#xff1a;竞态条件、死锁、内存可见性问题和线程饥饿。了解这些bug的源头及其原理&#xff0c;可以帮助开发者避免和解决这些问题。以下是详细的讲解和相应的示例。 1. 竞态…...

c++:#include 某文件.h底层如何寻找其.cpp实现

在C中&#xff0c;当你编写了一个头文件&#xff08;如MyLibrary.h&#xff09;和对应的实现文件&#xff08;如MyLibrary.cpp&#xff09;时&#xff0c;其他源文件&#xff08;如main.cpp&#xff09;只需要包含头文件&#xff08;#include "MyLibrary.h"&#xff…...

uniapp中如何进行微信小程序的分包

思路&#xff1a;在uniapp中对微信小程序进行分包&#xff0c;和原生微信小程序进行分包的操作基本上没区别&#xff0c;主要就是在pages.json中进行配置。 如图&#xff0c;我新增了一个包diver-page 此时需要在pages.json中的subPackages数组中新增一项 root代表这个包的根…...

win10下安装PLSQL14连接Oracle数据库

问题背景 在使用Oracle开发过程中&#xff0c;经常会使用工具来连接数据库&#xff0c;方便查询、处理数据。其中有很多工具可以使用&#xff0c;比如dbeaver、plsql等。本文主要介绍在win10环境下&#xff0c;plsql14的安装步骤以及安装过程中遇到的一些问题。 安装步骤及问题…...

高考失利咨询复读,银河补习班客服开挂回复

补习班的客服在高考成绩出来后&#xff0c;需要用专业的知识和足够的耐心来回复各种咨询&#xff0c;聊天宝快捷回复软件&#xff0c;帮助客服开挂回复。 ​ 前言 高考成绩出来&#xff0c;几家欢喜几家愁&#xff0c;对于高考失利的学生和家长&#xff0c;找一个靠谱的复读补…...

java 代码块

Java中的代码块主要有三种类型&#xff1a;普通代码块、静态代码块、构造代码块。它们的用途和执行时机各不相同。 普通代码块&#xff1a;在方法内部定义&#xff0c;使用一对大括号{}包围的代码片段。它的作用域限定在大括号内&#xff0c;每当程序执行到该代码块时就会执行其…...

vue中避免多次请求字典接口

vuex缓存所有字典项 背景vuex管理所有字典项调用字典接口处理字典项数据的filter页面中使用字典 背景 每次用到字典都需要通过对应的字典type调用一次字典接口&#xff0c;当一个页面用到字典项很多时&#xff0c;接口请求炒鸡多&#xff0c;会导致接口响应超时。 本篇文章改为…...

Snappy使用

Snappy使用 Snappy是谷歌开源的压缩和解压的开发包&#xff0c;目标在于实现高速的压缩而不是最大的压缩 项目地址&#xff1a;GitHub - google/snappy&#xff1a;快速压缩器/解压缩器 Cmake版本升级 该项目需要比较新的cmake&#xff0c;CMake 3.16.3 or higher is requi…...

跨越重洋:在Heroku上配置Pip镜像源的终极指南

&#x1f310; 跨越重洋&#xff1a;在Heroku上配置Pip镜像源的终极指南 Heroku是一个支持多种编程语言的云平台即服务&#xff08;PaaS&#xff09;&#xff0c;它允许开发者部署和管理应用程序。然而&#xff0c;由于Heroku的服务器位于海外&#xff0c;直接使用Python的包管…...

SpringBoot + 虚拟线程,性能炸裂!

一、什么是虚拟线程 虚拟线程是Java19开始增加的一个特性&#xff0c;和Golang的携程类似&#xff0c;一个其它语言早就提供的、且如此实用且好用的功能&#xff0c;作为一个Java开发者&#xff0c;早就已经望眼欲穿了。 二、虚拟线程和普通线程的区别 “虚拟”线程&#xf…...

Java Character类

Character是char的包装类 转义序列 Character类的方法...

Python中的爬虫实战:猫眼电影爬虫

随着互联网技术的快速发展&#xff0c;网络上的信息量越来越庞大。猫眼电影作为国内领先的电影数据平台&#xff0c;为用户提供了全面的电影信息服务。本文将介绍如何利用python编写简单的猫眼电影爬虫&#xff0c;获取电影相关数据。 爬虫概述 爬虫&#xff0c;即网络爬虫&a…...

WAIC2024 | 华院计算邀您共赴2024年世界人工智能大会,见证未来科技革新

在智能时代的浪潮汹涌澎湃之际&#xff0c;算法已成为推动社会进步的核心力量。作为中国认知智能技术的领军企业&#xff0c;华院计算在人工智能的广阔天地中&#xff0c;不断探索、创新&#xff0c;致力于将算法的潜力发挥到极致。在过去的时日里&#xff0c;华院计算不断探索…...

数据库原理之数据库基本概念

目录 前言 基本概念 数据库完整性 前言 今天我们来看看数据库的基本概念&#xff0c;帮助大家对数据库有一点点最基本的了解 基本概念 4个基本概念 数据data&#xff1a;描述事物的符号&#xff0c;数据库中存储的基本对象。 数据库Database&#xff1a;长期存储在计算机…...

vue2项目的打包以及部署

打包 当我们写好vue2的项目后&#xff0c;可以通过npm build来对项目进行打包 npm build 打包完成后我们可以看到在当面目录下生成了dis目录,src下的文件都会被打包进这个目录里&#xff0c;当然打包后的文件我们不能直接在浏览器打开&#xff0c;需要进行部署 部署 1.新建一个…...

Java的全局异常处理代码

第一步&#xff1a;先写一个异常管理类: package com.example.firefighting.exceptions;import com.example.firefighting.utils.Result; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerA…...

Hi3861 OpenHarmony嵌入式应用入门--LiteOS semaphore作为锁

CMSIS 2.0 接口中的 Semaphore&#xff08;信号量&#xff09;是用于嵌入式系统中多线程或中断服务例程&#xff08;ISR&#xff09;之间同步和共享资源保护的重要机制。Semaphore 是一种用于控制对多个共享资源访问的同步机制。它可以被看作是一个计数器&#xff0c;用于跟踪可…...

注意!年龄越大,社交圈子越窄?其实这是老人的理性选择!数学家告诉你:何时该跳槽,何时该坚守!你必须知道的三个智慧:让你的人生更加精彩!

我们到底应该在什么情况下探索新事物&#xff0c;什么情况下专注于已有的东西呢&#xff1f;本质上来说&#xff0c;这个问题就是在询问&#xff0c;你究竟应该耗费精力去探索新的信息&#xff0c;还是专注从既有的信息中获取收获&#xff1f; 有人采访了临终的老人&#xff0c…...

[SwiftUI 开发] 嵌套的ObservedObject中的更改不会更新UI

1. 发生问题的demo 业务逻辑代码 class Address: ObservableObject {Published var street "123 Apple Street"Published var city "Cupertino" }class User: ObservableObject {Published var name "Tim Cook"Published var address Addr…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...