緊急安全通告:多款 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
英文地址,請注明出處:http://en.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…