Squid 安全漏洞(CVE-2023-5824)
Squid 安全漏洞(CVE-2023-46847)
Squid 安全漏洞(CVE-2023-46724)
Squid 安全漏洞(CVE-2023-46846)
Squid不受控制的递归漏洞(CVE-2024-25111)
包含修复以上版本
Squid 乃是一套涵盖代理服务器与 Web 缓存服务器的软件。此软件具备提供万维网缓存、流量过滤、代理上网等诸般功能。在 Squid 6.0.1 之前的版本中,存有代码问题所导致的漏洞,该漏洞源自 NULL 指针的取消引用,进而致使系统出现拒绝服务的状况。
一、 通过更换新版本squid解决,简单有效
新版的 Squid 需 gcc 7 及以上版本支持,且 C++17 的编译颇为繁琐。现今提供已编译好的新版本,可直接进行替换。
替换动态库 (代替 gcc 的升级)
1、首先 把旧的 动态库 例如 libstdc++.so.6.0.28 备份
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20'
mv libstdc++.so.6.0.28 libstdc++.so.6.0.28_OLD
2、删除 链接 libstdc++.so.6
rm libstdc++.so.6
3、上传新的动态库 libstdc++.so
4、重新建立连接
ln -s libstdc++.so libstdc++.so.6
5、找到squid的目录
6、备份旧的squid
cd /usr/local/
mv squid/ squid_OLD/
7、上传squid新版本压缩包
8、解压新的版本包。
tar -xzvf squid-6.9-VCS-20241024.tar.gz
9、squid -z 初始化 Squid 缓存目录
cd /usr/local/squid/sbin/
./squid -z
可以看到这里报错,需要赋予权限
chmod -R 777 /usr/local/squid/var
重新 squid -z
这样可以了。
10、 替换配置文件。
cp /usr/local/squid_OLD_20241024/etc/squid.conf /usr/local/squid/etc/
11、指定配置文件启动
/usr/local/squid/sbin/squid -s /usr/local/squid/etc/squid.conf
12、版本
./squid -v
其他说明
不换动态库的话会报这种相关类似的报错。
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20'
https://caoyutao.lanzoub.com/i5V1m2d956fg
密码:h2tk
二、源码编译升级。需要 gcc >7
1、gcc升级
进入解压后目录,进行依赖库下载
./contrib/download_prerequisites
这个包是已经包含了所需依赖的 可以不执行。但是编译过程中可能需要其他依赖包
生成Makefile文件
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
lscpu 可以查看cpu个数
编译安装
make -j4
make install
最终会有这个库
libstdc++.so
找到新的so文件
find . -name "libstdc++.so*"
把最新的 文件拷贝到 /usr/lib64下
参考文章开头
替换动态库 (代替 gcc 的升级)
卸载 旧的版本
yum remove gcc gcc-c++
环境变量
vim .bash_profile
PATH=$PATH:$HOME/bin:/usr/local/bin/export CC=/usr/local/bin/gccexport CXX=/usr/local/bin/g
立即生效
source ~/.bash_profile
验证gcc --version
gcc 升级的其他补充:
gcc 升级可能会用到的一些依赖包
rpm -ivh m4-1.4.19-10.el10.x86_64.rpm
rpm命令用来安装rpm包
rpm --import RPM-GPG-KEY-AlmaLinux-2
这个用来导入密钥文件。
接下来就是squid 的编译升级了
squid -v查看旧的版本的编译参数
./configure --prefix=/usr/local/squid --disable-carp --with-aufs-threads=32 --with-pthreads --enable-storeio=ufs,aufs --enable-disk-io=AIO,Blocking --enable-removal-policies=heap,lru --disable-wccp --enable-kill-parent-hack --disable-snmp --disable-poll --disable-select --enable-auth-modules=basic --with-aio --disable-ident-lookup --with-filedescriptors=65536 --enable-ltdl-convenience
make
make install
可能会遇到
找到这个文件 TypedMsgHdr.h 注释掉 重新编译
编译好之后 squid 在 /usr/local/squid/目录。
这个命令用来判断最新生成的so是否包含 CXX.
strings libstdc++.so |grep GLIBCXX_3.4.20
文件太多太大正在往云盘传,有需要私聊,欢迎沟通交流。
本文暂时没有评论,来添加一个吧(●'◡'●)