OpenSSH 远程代码执行漏洞CVE-2024-6387
该漏洞是由于OpenSSH服务 (sshd) 中的信号处理程序竞争问题,未经身份验证的攻击者可以利用此漏洞在Linux系统上以root身份执行任意代码。目前该漏洞技术细节已在互联网上公开,该漏洞影响范围较大,建议尽快做好自查及防护。
影响版本: 8.5p1 - 9.7p1
查看最新版本文件
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
代码块直接复制粘贴即可
sudo apt-get -y update && \
sudo apt-get install -y build-essential zlib1g-dev libssl-dev && \
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz && \
tar -xzf openssh-9.8p1.tar.gz && \
cd openssh-9.8p1 && \
./configure && \
make && \
sudo make install && \
sudo systemctl restart ssh && \
echo 'export PATH=/usr/local/bin:/usr/local/sbin:$PATH' >> ~/.bashrc && \
source ~/.bashrc && \
sudo sed -i 's|ExecStartPre=/usr/sbin/sshd|ExecStartPre=/usr/local/sbin/sshd|; s|ExecStart=/usr/sbin/sshd|ExecStart=/usr/local/sbin/sshd|; s|ExecReload=/usr/sbin/sshd|ExecReload=/usr/local/sbin/sshd|' /lib/systemd/system/ssh.service && \
grep -E 'ExecStartPre|ExecStart|ExecReload' /lib/systemd/system/ssh.service && \
sudo rm /usr/local/etc/sshd_config && \
sudo ln -s /etc/ssh/sshd_config /usr/local/etc/sshd_config && \
sudo systemctl daemon-reload && \
sudo systemctl restart sshd && \
sudo rm /usr/sbin/sshd && \
ps -ef | grep sshd
ssh -V
查看版本
ssh -V
更新安装必须的包
sudo apt-get -y update
sudo apt-get install build-essential zlib1g-dev libssl-dev
下载最新的包:
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
解压:
tar -xzf openssh-9.8p1.tar.gz
cd openssh-9.8p1
编译:
./configure
make
安装:
sudo make install
重启服务:
sudo systemctl restart ssh
查看版本
ssh -V
如果版本没显示openssh-9.8p1,就是需要添加环境变量:
echo 'export PATH=/usr/local/bin:/usr/local/sbin:$PATH' >> ~/.bashrc
验证生效
source ~/.bashrc
查看版本(出现openssh-9.8p1就OK)
ssh -V
修改 ssh.service 文件中的 ExecStartPre、ExecStart 和 ExecReload 行,
将 /usr/sbin/sshd 改为 /usr/local/sbin/sshd
sudo sed -i 's|ExecStartPre=/usr/sbin/sshd|ExecStartPre=/usr/local/sbin/sshd|; s|ExecStart=/usr/sbin/sshd|ExecStart=/usr/local/sbin/sshd|; s|ExecReload=/usr/sbin/sshd|ExecReload=/usr/local/sbin/sshd|' /lib/systemd/system/ssh.service
确认修改内容:
grep -E 'ExecStartPre|ExecStart|ExecReload' /lib/systemd/system/ssh.service
重新加载服务:
sudo systemctl daemon-reload
sudo systemctl restart sshd
列出正在运行的SSH进程(确认是否是 /usr/local/sbin/sshd)
ps -ef | grep sshd
注意:以上操作ssh的配置文件就变成了/usr/local/etc/sshd_config,需要给新配置文件更新内容
把新配置文件删掉,创建链接到/etc/ssh/sshd_config,并加载服务
sudo rm /usr/local/etc/sshd_config
sudo ln -s /etc/ssh/sshd_config /usr/local/etc/sshd_config
sudo systemctl daemon-reload
sudo systemctl restart sshd
清理旧版本(可选)
sudo rm /usr/sbin/sshd
前排提醒
Ubuntu 的软件源更新了 https://ubuntu.com/security/notices/USN-6859-1
Debian 11 12 已经修复了 https://security-tracker.debian.org/tracker/CVE-2024-6387
centos暂时不知道
尽量使用包管理更新openssh
make install安装会导致后续无法使用包管理更新
我的机器都是小于8.5p1版本 是不是不用更新
@nike123 #1
理论上小于8.5p1版本,就不受该漏洞影响,但是……低版本恐怕会受其它漏洞影响哦
虽然不受影响,还是更新了~~
@芷理 #4
我用的debian10和11……太尴尬
@heian9119 #5
哈哈 debian10 用apt更一下试试
我用的12 看别人说11也ok 在低版本没试过
我还有好几台Ubuntu用make install更新了- - 没注意官方已经更新了源
无所谓了 这玩意没啥大问题基本上也不会在动
不错👍
@芷理 #6 ubuntu用官方源更新了还是8.9p1,咋整
谢谢分享
如果这么想的话,那只能用每小时都滚动更新的arch系统了…debian ubuntu cent都是老古董版本的组件
用了发行版,就只能信任发行版