首页 > 其他分享 >Haxx curl相关漏洞修复参考[CVE-2022-4355]

Haxx curl相关漏洞修复参考[CVE-2022-4355]

时间:2023-08-21 23:03:07浏览次数:36  
标签:bin Haxx libcurl openssl usr 2022 4355 curl local

Haxx curl/libcurl 安全漏洞修复参考

libcurl是一个免费,易用的客户端传输库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP等协议。libcurl支持SSL认证,HTTP POST, HTTP PUT, FTP 上传, HTTP form based upload, proxies, cookies,用户名+密码认证(Basic, Digest, NTLM, Negotiate, Kerberos),文件断点续传,http代理转发。

低版本的libcurl存在较多低危、中危安全漏洞,如CVE-2020-8284、CVE-2020-8285、CVE-2020-8286

部分漏洞的原因

  • 1、CVE-2020-8284

当 curl 执行被动 FTP 传输时,会首先尝试该EPSV命令,如果不支持该命令,则回退到使用PASV,而服务器对PASV命令的响应包括 (IPv4) 地址和端口号,供客户端连接以执行实际数据传输。

攻~击者可以恶意利用针对curl的FTP PASV响应来绕过对数据的访问限制,获取敏感信息

  • 2、 CVE-2020-8285

libcurl 提供通配符匹配功能CURLOPT_CHUNK_BGN_FUNCTION当 libcurl 遍历所有可用条目的列表时,该功能允许回调,将有关如何处理目录中的特定条目信息返回给 libcurl。

当此回调返回时,CURL_CHUNK_BGN_FUNC_SKIP功能会告诉 libcurl 不处理该文件,然后libcurl中的内部函数递归调用自身以处理下一个目录条目。

如果有足够数量的文件条目并且回调返回“跳过”的次数足够多时,则 libcurl 会耗尽堆栈空间。(确切的数量和平台架构、编译器因素有关)

攻~击者会利用此机制,控制覆盖堆栈的数据,造成拒绝服务

  • 3、CVE-2020-8286

libcurl 通过CURLOPT_SSL_VERIFYSTATUS选项提供“OCSP Stapling”功能(客户端向服务端发起 SSL 握手请求时,服务器将证书的 OCSP 信息随证书链一同发送给客户端,已提升OCSP访问性能) 。设置后,libcurl 验证服务器可作为 TLS 握手的一部分来响应 OCSP,但是 libcurl 在构建或被告知使用 OpenSSL 作为 TLS 后端时,客户端并未验证正确的证书设置,此缺陷将允许攻~击进行欺诈性的 OCSP 响应,而不是真实响应(类似中间人欺骗),导致弱身份验证成功

针对低版本的libcurl,官方已经在新版的curl源码中,进行了修复(日志:https://github.com/curl/curl/commit/d9d01672785b),如下图:

这里介绍通过源码编译高版本curl的方式,对libcurl进行升级,来修复安全漏洞

0、备份服务器

如为云服务器,建议先备份服务器快照或镜像,避免升级的版本和之前业务不兼容导致服务出现异常

1、编译安装较高版本curl

如下命令:

wget https://curl.se/download/curl-7.80.0.tar.gz --no-check-certificate #下载官方源码包
#解压缩、编译安装
tar -xzvf curl-7.80.0.tar.gz 
cd curl-7.80.0
./configure --with-openssl
make -j4 && make install  #默认安装位置在/usr/local/bin/curl
#查看安装后的版本
/usr/local/bin/curl -V
2、卸载低版本的curl

如下命令:

#ubuntu操作系统
apt remove curl -y #卸载旧版本curl
ln -s  /usr/local/bin/curl /usr/bin/curl #添加编译的高版本curl到环境变量
#centos操作系统
yum remove curl -y #卸载旧版本curl
ln -s  /usr/local/bin/curl /usr/bin/curl #添加编译的高版本curl到环境变量
3、避“坑”参考
3.1 编译报错
  • 编译时遇到报错 --with-openssl was given but OpenSSL could not be detected

解决方法:

#安装openssl和openssl的库/头文件 包
#ubuntu操作系统,分开执行下面的命令
sudo apt install openssl
sudo apt install libssl-dev
#centos操作系统
yum -y install openssl openssl-devel
  • 编译时,报错/usr/bin/ld: cannot find crti.o: No such file or directory 或者 类似C compiler cannot create executables

原因:

早期旧版本的Ubuntu等操作系统,混合编译缺少支持,需要安装gcc-multilib

解决方法:

sudo apt install gcc-multilib
3.2 新版本curl执行报错
  • 安装完成后,执行curl命令/usr/local/bin/curl -V报错 /usr/local/bin/curl: symbol lookup error: /usr/local/bin/curl: undefined symbol: curl_multi_poll

原因:

未找到动态库引用位置,需要添加动态库路径到系统动态库配置文件

解决方法:

#添加动态库路径到系统动态库配置文件
echo "/usr/lib" >> /etc/ld.so.conf
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig -v && ldconfig /etc/ld.so.conf
#再次验证版本
/usr/local/bin/curl -V

标签:bin,Haxx,libcurl,openssl,usr,2022,4355,curl,local
From: https://blog.51cto.com/kele/7180581

相关文章

  • 昨晚又进行了一场 1对1 的劝退式聊天(支持在线)2022
    昨晚又进行了一场1对1的劝退式聊天,对话的基本模式是:他:你看我这药怎么样?我:你得先搞清楚谁有病……他:做成片剂还是胶囊呢?我:你得先搞清楚要治什么病……在没搞清楚用户需求之前,就拉起了研发团队、做出了一个App,并以“加功能”的方式“迭代”,显然是节奏出了问题。希望他能调整策略。......
  • Visual Studio 2022 连接MySQL 查询表中数据
     注:①MySqlConnection是用于与MySQL数据库进行连接和交互的类。它位于MySql.Data.MySqlClient命名空间中。    ②builder.ConnectionString返回一个包含连接字符串的字符串,这个连接字符串是通过使用MySqlConnectionStringBuilder对象构建的。连接字符串包含了......
  • VS2022运行过程中出现中文乱码
    在使用VS时,可能会遇到出现中文乱码的情况。下面是解决方法:1.在文件开头设定编码格式:#pragmaexecution_character_set("utf-8")这样可以解决一部分情况。2.点击VS》文件》高级保存选项》编码中utf-8。有些VS版本中文件中没有找到高级保存选项,可以参考这个链接:http://t.......
  • CSP-J2022 复盘
    T1乘方方法\(1\):使用快速幂,判断答案是否\(\geq10^9\)。方法\(2\):特判\(1\)的情况,其余的可以直接乘。此处给出方法\(2\)的代码。#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;lla,b;intmain(){ cin>>a>>b; if(a==1)cout<<1; else{ ......
  • 带你来吃瓜!Andy Pavlo教授带您一文回顾数据库的2022年
    theme:fancy编辑/翻译:宇亭校对:王学姣、李浩本文是由数据库界知名专家AndyPavlo教授写的2022年数据库回顾文章,这个系列从去年开始,非常经典,也比较系统的整理了一下数据库界的大事件(当然,主要还是以国外的居多),StoneDB团队对本文进行了翻译,小编在一些链接部分加了注释,方便大家......
  • Visual Studio 2022 实用调试技巧
    1、什么是bug?bug本意是昆⾍”或“⾍⼦”,现在⼀般是指在电脑系统或程序中,隐藏着的⼀些未被发现的缺陷或问题,简称程序漏洞。“Bug”的创始⼈格蕾丝·赫柏(GraceMurrayHopper),她是⼀位为美国海军⼯作的电脑专家,1947年9⽉9⽇,格蕾丝·赫柏对HarvardMarkII设置好17000个继电器进⾏......
  • 西农2022级ACM招新考题
    准备放弃一段时间算法。西农2022级ACM招新上周结束了,五一假期研究了一下题解,整理发在博客。1.这真的是签到题print("\"ACMwelcomesyou\\n\"")2.4和数#include<bits/stdc++.h>usingnamespacestd;constintmaxn=1e6+10;intf[maxn+1];intl,r;boolche......
  • 「C」2022/10/26晚学习总结
    2022/10/26晚学习总结主要内容范围:教材23章今晚浅学了一点点东西,记录一下.fma函数在math.h里,浮点数乘加,比自己手动算精度高.doublefma(doublex,doubley,doublez);返回值:x*y+zmemcpy函数在string.h里,内存复制,他和strcpy的区别是,他不仅仅能复制字符......
  • Adobe Photoshop官方软件Photoshop 2022正式版下载 系列软件
    Photoshop2022v23.0.2.101是由Adobe公司最新推出的高效、专业、实用的图像处理软件,同时该软件主要是以其强悍的编辑和调整、绘图等功能得到广泛的应用,其中还有各种图片的调整和图画绘制以及图像的修复、调色等一系列的工具都是数不胜数,使用范围也是非常的广,我们从照片修饰到海报......
  • 朝花夕拾:NHOI 2022 T6
    原题题意:题目描述给定一颗树有\(n\)个结点,每个结点上有一个权值\(a_i\),对于每条至少包含两个点的简单路径,它的贡献为路径上点的数量(包括端点)\(\times\)路径上所有点的\(a_i\)的最大公约数(gcd)。求所有简单路径的贡献之和,对\(998244353\)取模。......