紧急安全通告:多款 OpenSSH 与 glibc 高危漏洞曝光,CVE-2023-38408 等须立即修复

概述:OpenSSH(OpenBSD Secure Shell)是加拿大OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。 OpenSSH 9.6及之前版本存在安全漏洞,该漏洞源于当使用常见类型的DRAM时,mm_answer_authpassword中已验证的整数值不能抵抗单个比特的翻转,导致攻击者可以绕过身份验证。

目录

一、🚨高危漏洞

二、⚠️ 中危漏洞(建议修复)

三、🔎 低危漏洞(可作为加固措施)

四、✅修复建议

五、🛠修复方案

5.1 在线升级

1. 检查当前版本

2. 在不同系统上的升级方法

🔹 Ubuntu / Debian

🔹 CentOS / RHEL / AlmaLinux

🔹 Amazon Linux / Fedora

3. 升级前的安全措施

4. 升级后验证

5.2 离线升级

1. 上传到服务器

2. 升级 OpenSSL

3. 升级 OpenSSH

4. 备份配置并检查

5. 重启 sshd 并验证

六、 🛡️补充

1. 进入目录并解压

2. 安装依赖

3. 检查依赖是否安装好

七、⚠️异常情况

1.命令:ssh -V

1. 检查新版本是否正确

2. 替换系统默认命令

3. 让 OpenSSH 用新的 OpenSSL

4. 重启 sshd 并验证

2、命令:sshd -t -f /etc/ssh/sshd_config

1.修复权限只允许 root 读写,其他用户不能访问:

2.确认文件归属

3.检查配置文件确认 /etc/ssh/sshd_config 里有类似:

4.重启 sshd

🔄 如果私钥丢失/损坏


一、🚨高危漏洞

  1. CVE-2023-38408(ssh-agent PKCS11 远程代码执行漏洞)

    • 影响版本:OpenSSH 9.3p2 之前

    • 危害:可被远程执行代码

    • 风险分值:9.8

    • 修复:升级至最新版本 OpenSSH

  2. CVE-2024-6387(信号处理竞争条件,远程 root RCE)

    • 影响:glibc 系统上,未经身份验证攻击者可 root 权限执行代码

    • 风险分值:8.1

    • 修复:升级至官方修复版本

  3. CVE-2023-51767(内存比特翻转绕过认证)

    • 危害:攻击者可能绕过密码认证

    • 风险分值:7.0

    • 修复:升级至 OpenSSH 9.7 以上

  4. CVE-2024-6409(信号处理竞争条件漏洞)

    • 危害:可能导致 DoS 或提权

    • 风险分值:7.0

    • 修复:升级至最新版本


二、⚠️ 中危漏洞(建议修复)

  1. CVE-2025-26465(VerifyHostKeyDNS 代码处理不当,可被中间人攻击)

    • 风险分值:6.8

  2. CVE-2023-51385(命令注入漏洞)

    • 风险分值:6.5

  3. CVE-2023-48795(绕过完整性检查)

    • 风险分值:5.9


三、🔎 低危漏洞(可作为加固措施)

  1. CVE-2025-32728(DisableForwarding 指令未完全禁用转发)

    • 风险分值:3.8

  2. CVE-2021-36368(代理转发认证问题)

    • 风险分值:3.7

四、✅修复建议

  1. 立即升级 OpenSSH 至最新稳定版(>= 9.8 或最新 2025 年版本)
    你现在是 OpenSSH 8.8,非常落后,几乎所有漏洞都出在这里。

  2. 如果暂时不能升级,可以考虑临时缓解措施:

    • 禁用 ssh-agent(避免 CVE-2023-38408)

    • 缩短 LoginGraceTime(缓解 CVE-2024-6387)

    • 关闭 VerifyHostKeyDNS 选项(缓解 CVE-2025-26465)

    • 确认 DisableForwarding 配置(缓解 CVE-2025-32728)

  3. 防护措施

    • 使用防火墙限制 SSH 访问来源(只允许管理端 IP)

    • 启用 Fail2ban 或类似工具防暴力破解

    • 开启 SSH 登录日志监控

五、🛠修复方案

CVE-2023-51767 是硬件层面的 Rowhammer 问题,不属于 OpenSSH 自身逻辑漏洞,所以没有给出补丁,但保持 OpenSSH 升级到 9.7+ 仍然是最佳实践,因为:

  • 新版本修复了其他安全问题(比如内存泄露、DoS、认证绕过等)。

  • 安全团队通常会在新版本中加固潜在风险(比如在敏感变量上增加防护)。

  • 便于日后维护,避免安全扫描时反复报旧版本漏洞。

注意:本文重点讲解离线升级方案

5.1 在线升级

1. 检查当前版本
ssh -V

例如输出:

OpenSSH_9.6p1, OpenSSL 3.0.2 15 Mar 2022

2. 在不同系统上的升级方法
🔹 Ubuntu / Debian

sudo apt update
sudo apt install --only-upgrade openssh-server

如果仓库还没 9.7,可以用 ppa 或者 自行编译

sudo apt build-dep openssh
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz
tar -xzf openssh-9.7p1.tar.gz
cd openssh-9.7p1
./configure
make
sudo make install
🔹 CentOS / RHEL / AlmaLinux

系统自带版本通常比较旧,可以用 第三方 repo源码编译


sudo yum update openssh

如果仓库没有 9.7:

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz
tar -xzf openssh-9.7p1.tar.gz
cd openssh-9.7p1
./configure
make
sudo make install
🔹 Amazon Linux / Fedora

Amazon Linux 官方声明“不修复 Rowhammer 类问题”,但你依旧可以升级:


sudo dnf upgrade openssh

3. 升级前的安全措施
  • 保持一个 root 会话不断开(避免 ssh 升级过程中掉线)。

  • 备份配置

    
    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  • 验证配置文件语法

    
    sshd -t

4. 升级后验证

ssh -V systemctl status sshd

确保版本号 ≥ 9.7,并且 sshd 正常运行。

5.2 离线升级

检查系统现有版本

ssh -V

输出:

OpenSSH_9.1p1, OpenSSL 1.0.2k-fips 26 Jan 2017

服务器连不上 www.openssl.orgcdn.openbsd.org,最稳妥的办法就是:

在能上网的本地电脑下载源码包

下载好以后,把 openssh-9.7p1.tar.gz 文件准备好。

  • OpenSSH 9.7p1 源码包

  • OpenSSL 3.0 LTS 版本(如果以后还想升级 OpenSSL)

  •  https://download.csdn.net/download/t631048648/91799482(编译 OpenSSH / OpenSSL 依赖 gccmakezlib-develpam-devel

  •  https://download.csdn.net/download/t631048648/91799479(zlib-develpam-devel 编译 OpenSSH 必须的依赖包)

1. 上传到服务器

把两个文件传到 /root(假设你已经上传好了,可以直接下一步)。

ls -lh /root/openssh-9.7p1.tar.gz /root/openssl-3.0.17.tar.gz

确认文件存在。


2. 升级 OpenSSL

先升级 OpenSSL(因为 OpenSSH 依赖它)。

cd /root
tar -xzf openssl-3.0.17.tar.gz
cd openssl-3.0.17# 编译安装
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
make -j$(nproc)
make install# 建立软链接,替换旧 openssl
mv /usr/bin/openssl /usr/bin/openssl.bak.$(date +%F-%H%M%S)
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl# 更新库文件路径
echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl.conf
ldconfig -v# 验证版本
openssl version

预期输出:

OpenSSL 3.0.17 XX XXX 2024


3. 升级 OpenSSH

这里有一个依赖,可以先去第六章节查看。

cd /root
tar -xzf openssh-9.7p1.tar.gz
cd openssh-9.7p1# 安装依赖本文第六章节# 配置编译,指定新的 OpenSSL
./configure --with-ssl-dir=/usr/local/openssl --with-ssl-engine --sysconfdir=/etc/ssh
make -j$(nproc)
make install# 备份配置
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F-%H%M%S)# 检查配置
./sshd -t -f /etc/ssh/sshd_config# 重启服务
systemctl restart sshd
ssh -V

4. 备份配置并检查
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F-%H%M%S)
./sshd -t -f /etc/ssh/sshd_config

5. 重启 sshd 并验证
systemctl restart sshd ssh -V

目标输出:

OpenSSH_9.7p1, OpenSSL 3.0.17 ...


💯 如下图所示说明更新成功

⚠️升级 sshd 时要 保持一个 root 会话不关闭,避免万一 sshd 配置错误把你锁在外面。

六、 🛡️补充

openssh-build-deps.tar.gzbuild-deps.tar.gz 上传到 /root。接下来就是在服务器上解压并安装这些离线依赖包:


1. 进入目录并解压

cd /root# 解压两个依赖包集合
tar -xzf openssh-build-deps.tar.gz
tar -xzf build-deps.tar.gz

2. 安装依赖

如果里面有很多 .rpm 文件,可以一次性安装:

rpm -ivh *.rpm --force --nodeps

⚠️ 注意:

  • --force 表示覆盖旧版本(如果系统已有)。

  • --nodeps 表示忽略依赖检查,避免因为缺少网络拉不下依赖包而失败。


3. 检查依赖是否安装好

确认 gccmakezlib-develpam-devel 都能用:

gcc --version
make --version
rpm -qa | grep zlib-devel
rpm -qa | grep pam-devel

七、⚠️异常情况

1.命令:ssh -V

输出:OpenSSH_9.1p1, OpenSSL 1.0.2k-fips 26 Jan 2017这个现象很关键 说明你编译 / 安装的 新 OpenSSH 和 OpenSSL 并没有被系统真正使用,
系统还是在调用 旧的二进制和库

  • ssh -V 输出 OpenSSH_9.1p1(旧的系统自带版本)
  • OpenSSL 1.0.2k-fips(CentOS/RHEL 7 自带的旧库)

查找新 ssh 在哪里

find /usr/local -name ssh -type f
find /usr/local -name sshd -type f

如果输出如下:

/usr/local/bin/ssh/usr/local/sbin/sshd

结果说明:

  • 你新编译安装的 OpenSSH 9.7 已经存在:

    • /usr/local/bin/ssh

    • /usr/local/sbin/sshd

    • (还有一份在 /usr/local/openssh/,说明你可能在编译时用了 --prefix=/usr/local/openssh

  • 系统默认用的还是 /usr/bin/ssh/usr/sbin/sshd(老版本 9.1 + OpenSSL 1.0.2k)。

让系统使用新版本的 ssh/sshd

1. 检查新版本是否正确
/usr/local/bin/ssh -V
/usr/local/sbin/sshd -V

你应该能看到:

OpenSSH_9.7p1, OpenSSL 3.0.17 ...


2. 替换系统默认命令

先备份旧的,再做软链接:

mv /usr/bin/ssh /usr/bin/ssh.bak.$(date +%F-%H%M%S)
ln -s /usr/local/bin/ssh /usr/bin/sshmv /usr/sbin/sshd /usr/sbin/sshd.bak.$(date +%F-%H%M%S)
ln -s /usr/local/sbin/sshd /usr/sbin/sshd

3. 让 OpenSSH 用新的 OpenSSL

确认它链接的是 3.0.17:

ldd /usr/local/bin/ssh | grep ssl

如果输出还是 /usr/lib64/libssl.so.10(旧 1.0.2k),说明没走到新库,需要更新库搜索路径:

echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl.conf
ldconfig -v

再检查:

ldd /usr/local/bin/ssh | grep ssl

应该会看到 /usr/local/openssl/lib/libssl.so.3


4. 重启 sshd 并验证

systemctl restart sshd ssh -V

预期输出:

OpenSSH_9.7p1, OpenSSL 3.0.17 ...

2、命令:sshd -t -f /etc/ssh/sshd_config

报了/etc/ssh/ssh_host_*权限过宽(0640),导致 sshd 出于安全考虑拒绝使用这些私钥,结果就变成了:sshd: no hostkeys available -- exiting. 也就是说 sshd 根本起不来

1.修复权限
只允许 root 读写,其他用户不能访问:
chmod 600 /etc/ssh/ssh_host_*_key

(只改私钥,不要动 .pub 公钥文件)

正确权限应该是:

-rw-------  1 root root  /etc/ssh/ssh_host_rsa_key
-rw-------  1 root root  /etc/ssh/ssh_host_ecdsa_key
-rw-------  1 root root  /etc/ssh/ssh_host_ed25519_key
2.确认文件归属
chown root:root /etc/ssh/ssh_host_*_key
3.检查配置文件
确认 /etc/ssh/sshd_config 里有类似:

HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key
4.重启 sshd
systemctl restart sshd
systemctl status sshd

🔄 如果私钥丢失/损坏

如果 /etc/ssh/ssh_host_* 文件不存在或不可用,可以重新生成:

ssh-keygen -A

它会自动在 /etc/ssh/ 下生成新的 ssh_host_* 密钥对。


建议先跑:

ls -l /etc/ssh/ssh_host_*_key

最后在看一下是否修复

systemctl status sshd

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

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

相关文章

随时随地开发:通过 FRP 搭建从 Ubuntu 到 Windows 的远程 Android 调试环境

你是否曾梦想过这样的工作流:在咖啡馆里,你只带着一台轻薄的 Surface Pro,而代码的编译、运行和调试,全部交由家里那台性能强劲的 Ubuntu 台式机来完成?更酷的是,你甚至想将手机直接插在 Surface 上,让远端的 Ubuntu 无缝识别并进行开发。 今天,我们就将这个梦想变为现…

异步编程与面向对象知识总结

文章目录原型链关键字总结原型对象:prototype对象原型:__ proto__面向对象编程封装抽象多态总结异步编程基础循环宏任务嵌套微任务原型链关键字总结 原型对象:prototype 函数的属性,指向一个对象,这个对象是通过该函数作为构造函数创建的所有实例的原型 修改原型会…

Spring Boot + KingbaseES 连接池实战

文章目录一、前言二、什么是数据库连接池?三、SpringBoot KingbaseES 环境准备3.1 加依赖(pom.xml)3.2 基础连接信息(application.yml)四、四类主流连接池实战4.1 DBCP(迁移型 / 传统项目友好)…

矩阵待办ios app Tech Support

Getting Support: mail: 863299715qq.com

React中优雅管理CSS变量的最佳实践

在现代前端开发中,CSS变量(也称为CSS自定义属性)已成为管理样式系统的重要工具。它们提供了强大的动态样式能力,但在JavaScript中高效地访问和使用这些变量却存在一些挑战。本文将介绍一个优化的解决方案,帮助你在Reac…

智能制造——解读装备制造业智能工厂解决方案【附全文阅读】

适应人群为装备制造企业(如汽车、航空航天、能源装备等)中高层管理者、生产运营负责人、IT 部门(智能制造 / 工业互联网团队)、安全管理专员及园区数字化建设决策者。主要内容围绕装备制造业智能工厂解决方案展开,核心包括建设背景(解决生产安全管理缺失、工序手工记录无…

macos调用chrome后台下载wasm-binaries.tar.xz

实现脚本: down_wasm.sh DOWNLOAD_DIR="$HOME/Downloads" TARGET_FILE="wasm-binaries.tar.xz" TAG="32b8ae819674cb42b8ac2191afeb9571e33ad5e2" TARGET_DIR="$HOME/Desktop/sh/emsdk_setup/emsdk_deps"echo "下载路径: $DOW…

【Proteus仿真】按键控制系列仿真——LED灯表示按键状态/按键控制LED灯/4*4矩阵键盘控制LED

目录 1案例视频效果展示 1.1例子1:LED灯表示按键状态(两种方式) 1.2例子2:按键控制两排LED小灯闪烁移位 1.3例子3:按键控制LED灯逐个点亮/分组点亮/全部熄灭 1.4例子4:4*4矩阵按键实现带状LED灯控制 2例子1:LED灯…

829作业

用fgets&#xff0c;fputswanc代码#include<myhead.h> int main(int argc, const char *argv[]) {FILE *fp1 NULL;FILE *fp2 NULL;if (argc ! 3){printf("输入不合法:./a.out lydf.txt l.txt\n");return -1;}if ((fp1fopen(argv[1],"w"))NULL){pri…

CRMEB小程序订阅消息配置完整教程(PHP版)附常见错误解决

登录小程序后台 1.进入微信公众平台、小程序后台&#xff1a;功能->订阅消息。&#xff08;如未开通&#xff0c;点击申请即可开通&#xff09; 选择服务类目 2.选择服务类目&#xff1a;生活服务/百货/超市/便利店 同步小程序订阅消息 3.商城后台设置->消息管理 点击…

【已解决】阿里云服务器上前端访问不到后端

最开始我觉得后端根本没跑起来&#xff0c;但是我没用过阿里云的服务器&#xff0c;对pm2指令也完全不熟&#xff0c;不确定后端是不是在哪个我不知道的地方跑着。 还以为在阿里云控制台点运行&#xff0c;服务就会自己跑起来&#xff0c;但远程连接之后发现搞着搞着&#xff0…

分治算法详解:从递归思想到经典应用实战

分治算法是计算机科学中最重要的算法设计策略之一&#xff0c;它将复杂问题分解为规模更小的同类子问题&#xff0c;通过递归求解子问题并合并结果来解决原问题。本文将深入探讨分治算法的核心思想、设计模式以及经典应用案例。 文章目录一、分治算法核心思想1.1 分治策略的三个…

GitHub 热榜项目 - 日榜(2025-08-31)

GitHub 热榜项目 - 日榜(2025-08-31) 生成于&#xff1a;2025-08-31 统计摘要 共发现热门项目&#xff1a;15 个 榜单类型&#xff1a;日榜 本期热点趋势总结 本期GitHub热榜凸显三大技术热点&#xff1a;1) AI基础设施爆发式增长&#xff0c;微软MCP协议和Activepieces的A…

OpenCL C 平台与设备

1. 核心概念在 OpenCL C API 中&#xff1a;平台 (Platform)&#xff1a;代表一个 OpenCL 实现&#xff0c;通常对应硬件厂商&#xff08;NVIDIA、AMD、Intel等&#xff09;设备 (Device)&#xff1a;具体的计算硬件单元&#xff08;GPU、CPU、加速器等&#xff09;上下文 (Con…

R语言贝叶斯方法在生态环境领域中的高阶技术应用

贝叶斯统计已经被广泛应用到物理学、生态学、心理学、计算机、哲学等各个学术领域&#xff0c;其火爆程度已经跨越了学术圈。一&#xff1a; 1.1复杂数据回归&#xff08;混合效应&#xff09;模型的选择策略 1&#xff09;科学研究中数据及其复杂性 2&#xff09;回归分析历史…

学习笔记:MySQL(day1)

DDL&#xff08;Data Definition Language&#xff0c;数据定义语言&#xff09;是 SQL 语言的一部分&#xff0c;用于定义和管理数据库中的数据结构&#xff0c;包括创建、修改、删除数据库对象&#xff08;如数据库、表、视图、索引等&#xff09;。常见的 DDL 语句及其功能&…

C++ 模板初阶:从函数重载到泛型编程的优雅过渡

&#x1f525;个人主页&#xff1a;爱和冰阔乐 &#x1f4da;专栏传送门&#xff1a;《数据结构与算法》 、C &#x1f436;学习方向&#xff1a;C方向学习爱好者 ⭐人生格言&#xff1a;得知坦然 &#xff0c;失之淡然 文章目录前言一、引言&#xff1a;函数重载的痛点与模板…

从零开始的python学习——语句

ʕ • ᴥ • ʔ づ♡ど &#x1f389; 欢迎点赞支持&#x1f389; 个人主页&#xff1a;励志不掉头发的内向程序员&#xff1b; 专栏主页&#xff1a;python学习专栏&#xff1b; 文章目录 前言 一、顺序语句 二、条件语句 2.1、什么是条件语句 2.2、语法格式 2.3、缩进和代码…

Python基础之元组列表集合字典

目录一、元组&#xff08;Turple&#xff09;1.1、概念定义注意事项1.2、常见操作元组只支持查询操作&#xff0c;不支持增删改操作。查询元素二、列表1.1、概念定义注意事项1.2、常见操作添加修改查找删除排序列表推导式列表嵌套三、集合1.1、概念定义集合的特点1.2、常见操作…

Ubuntu 22.04 安装 向日葵远程Client端

通过向日葵主页的下载deb包有可能遇到安装失败的情况 #因向向日葵提供的libwebkit包是4.0-37了,而向日葵依赖的是3.0.0(Reading database ... 303666 files and directories currently installed.) Preparing to unpack SunloginClient-10.1.1.38139_amd64.deb.1 ... sunloginc…