Sign in

cURL/libcURL CURLOPT_ENCODING选项缓冲区溢出漏洞

SEBUG-ID:19250
SEBUG-Appdir:cURL
Published:2010-02-09
Vulnerable:
Daniel Stenberg curl 7.10.5 - 7.19.7
Discription:
BUGTRAQ  ID: 38162

cURL是命令行传输文件工具,支持FTP、FTPS、HTTP、HTTPS、GOPHER、TELNET、DICT、FILE和LDAP。

在下载数据时,libcurl库使用客户端软件所注册的回调函数将数据传送给应用程序,在完成传输之前会反复的调用该函数。回调函数可接收的最大数据大小为16K(CURL_MAX_WRITE_SIZE)。

在HTTP上使用libcurl库下载压缩的内容时应用程序可以要求libcurl自动解压数据。而解压期间libcurl可能错误的向回调函数发送最多可为64K的数据,因此盲目信任libcurl的最大缓冲区限制的应用可能会出现缓冲区溢出。

仅在编译了zlib且明确启用了自动解压(默认为禁用)的libcurl才会出现这个漏洞。
<*References
http://curl.haxx.se/docs/adv_20100209.html
*>
SEBUG Solution:
厂商补丁:

Daniel Stenberg
---------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://curl.haxx.se/libcurl-contentencoding.patch
// sebug.net [2010-03-10]