CVE-2023-38408漏洞升级ssh版本
- 漏洞说明
- 修复步骤
- RPM包编译
漏洞说明
- 漏洞名称:OpenSSH-ssh-agent 存在越权访问漏洞
- 影响范围:ssh-agent@(-∞, 9.3-p2) openssh@(-∞, 9.3p2-1)
- 漏洞描述:SSH-Agent是SSH的一部分,它是一个用于管理私钥并支持公钥身份验证的程序。用户使用 SSH-Agent 转发代理功能连接攻击者恶意服务器时,由于 SSH-Agent 未对加载的共享库进行限制,攻击者可通过将恶意共享库作为参数传递给 SSH-Agent 并通过其调用dlopen/dlclose函数加载/卸载位于用户客户端主机的共享库,实现远程代码执行。
- 处置建议:目前该漏洞已经修复,受影响用户可升级到以下版本:OpenSSH 版本>=9.3p2
目前根据查到的资料好像是没法通过个调整配置文件来解决这个问题的,只能升级openssh版本,目前9.4p1版本也发布了,但我的建议还是升级到9.3p2就行了,因为9.4开始强制使用openssl1.1.1及以上版本,就算改spec文件的限制也是不奏效了,必须同步升级openssl,9.3p2还是可以用openssl1.0.2版本进行编译和安装。
修复步骤
RPM包编译
安装依赖
yum install -y wget rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel unzip libXt-devel imake gtk2-devel openssl-libs curl which make perl perl-WWW-Curl
创建工作目录,有的版本的rpmbuild安装好以后会自动创建,没有就自己建一下:
mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
从官网获取源码包,这里获取的源码包为openssh-9.3p2.tar.gz
,下载下来后先加压缩,spec文件在openssh-9.3p2/contrib/redhat
路径下,将spec文件拷贝到rpmbuild/SPECS下
,记得删除openssl的高版本限制:
%if %{compat_openssl}
BuildRequires: compat-openssl10-devel
%else
BuildRequires: openssl-devel >= 1.0.1
BuildRequires: openssl-devel < 1.1 // 删除这一行
%endif
接下来的一步非常重要,将/etc/pam.d/sshd
拷贝为openssh-9.3p2/contrib/redhat/sshd.pam
文件,这么做的原因是spec文件中有一步会把openssh-9.3p2/contrib/redhat/sshd.pam
部署到/etc/pam.d/sshd
,默认的ssh.pam文件如果被拷贝过去就会导致升级完连不上服务器
修改完成后,重新把包打包:
tar -cvf openssh-9.3p2.tar.gz openssh-9.3p2/
把压缩包放到rpmbuild/SOURCES
目录下,执行编译命令,等待打包完成:
rpmbuild -bb SPECS/openssh.spec
编译好的RPM包放在rpmbuild/RPMS
目录下:
接下来只需要把对应的RPM包放到yum仓库中重新createrepo就可以使用yum update进行包的升级了: