CVE:CVE-2005-4077
CNNVD:CNNVD-200512-121
cURL是命令行传输文件工具，支持FTP、FTPS、HTTP、HTTPS、GOPHER、TELNET、DICT、FILE和LDAP。
libcurl在解析URL时存在溢出漏洞，攻击者可以利用这个漏洞绕过PHP的safe_mode/open_basedir限制，或从apache内存窃取本地SSL证书。libcurl在解析URL时首先会为主机名和路径部分分配特定的缓冲区。如果URL较短的话，会为每个缓冲区至少分配256个字节；如果输入URL超过了256字节限制的话，libcurl就会分配2个缓冲区，大小为输入URL的长度。然后一些sscanf调用会解析URL。畸形的URL会导致sscanf将完整的输入URL拷贝到主机或路径缓冲区。由于最初的分配没有为0字节分配额外的空间，这可能导致大小差一(off-by-one)的情况。尽管这种溢出已经可以控制某些malloc()/free()的实现，攻击者还可以通过有"?"的主机名导致两个字节的溢出。如果libcurl发现主机名中存在"?"的话，就会认定为畸形URL，并未经任何大小检查便在其前面添加路径分隔符"/"。
solution:Upgrade daniel_stenberg curl to a higher version than 7.11.2,7.12,7.12.1,7.12.2,7.12.3,7.13,7.13.1,7.13.2,7.14,7.14.1,7.15,and avoid the version 7.11.2,7.12,7.12.1,7.12.2,7.12.3,7.13,7.13.1,7.13.2,7.14,7.14.1,7.15