警惕!curl SOCKS5 堆溢出漏洞安全通告
近日,亞信安全CERT監(jiān)測到curl項目組發(fā)布了curl SOCKS5 存在堆溢出漏洞的安全公告,該漏洞同時影響curl命令行工具和libcurl庫部分版本。當使用curl請求目標主機過程中使用SOCKS5代理時,如果目標主機名大于255字節(jié),curl會使用本地解析主機代替遠程解析造成堆緩沖區(qū)溢出。
鑒于curl和libcurl庫使用廣泛,亞信安全CERT建議廣大客戶排查受影響產品,但該漏洞利用條件較為苛刻,如暫時無法升級的客戶,可以通過亞信安全提供的臨時方案或對應產品進行防護。
libcurl是一個跨平臺的網(wǎng)絡協(xié)議庫,支持http、https、ftp、gopher、telnet、dict、file、和ldap協(xié)議。libcurl同樣支持HTTPS證書授權,HTTP POST、HTTP PUT、FTP 上傳、HTTP基本表單上傳、代理、cookies和用戶認證。libcurl 用于提供處理網(wǎng)絡通信和數(shù)據(jù)傳輸?shù)?Api 接口。
漏洞編號、類型和等級
編號:CVE-2023-38545
類型:代碼執(zhí)行
等級:高危
漏洞狀態(tài)
受影響的版本
7.69.0<= libcurl <= 8.3.0
漏洞利用條件
libcurl庫,以下任一條件
CURLOPT_PROXYTYPE 設置為CURLPROXY_SOCKS5_HOSTNAME,如:curl_easy_setopt(handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME)
CURLOPT_PROXY 或CURLOPT_PRE_PROXY使用socks5h://代理地址,如:curl_easy_setopt(handle, CURLOPT_PROXY, "socks5h://...")
代理環(huán)境變量設置為 socks5h://
curl命令行工具(7.x版本,以下任一條件)
使用--socks5-hostname參數(shù)
使用-x參數(shù)值為socks5h://格式
代理環(huán)境變量設置為 socks5h://
curl命令行工具(8.x版本)
在7.x版本利用條件上,CURLOPT_BUFFERSIZE未設置或者通過設置--limit-rate值小于65541
受影響版本排查
curl
使用curl -V查看curl版本信息
針對系統(tǒng)環(huán)境curl可以使用curl -V | egrep -o '^curl [678]+\.[0-9]+\.[0-9]+'查看版本信息
針對進程中的curl可以使用strings curl | egrep -o '^curl [678]+\.[0-9]+\.[0-9]+'查看版本信息
libcurl庫
針對系統(tǒng) lib 目錄及應用目錄中的文件分析,如strings libcurl.so | egrep -o 'libcurl[ -/]([678]+\.[0-9]+\.[0-9]+)'
針對運行中的應用可以通過分析進程打開文件來判斷,如sudo lsof | egrep -o '/.\.so.*' | xargs -I {} bash -c "strings {} | egrep -o 'libcurl[ -/]([678]+\.[0-9]+\.[0-9]+)'"
修復建議
建議受影響用戶升級至 curl >= 8.4.0
暫時無法升級的用戶建議:
不要將curl與CURLPROXY_SOCKS5_HOSTNAME代理一起使用
不要將代理環(huán)境變量設置為socks5h://
參考鏈接
https://github.com/curl/curl/commit/fb4415d8aee6c1
https://curl.se/docs/CVE-2023-38545.html
https://access.redhat.com/security/cve/cve-2023-38545
https://jfrog.com/blog/curl-libcurl-october-2023-vulns-all-you-need-to-know/
https://www.tenable.com/blog/cve-2023-38545-cve-2023-38546-frequently-asked-questions-for-new-vulnerabilities-in-curl