IT学习网 - 爱学习 - 最具影响力综合资讯网站 -- 中国IT界的领航者!
热门关键字:      88888  as  xxx
站外
广告
站外
广告

注意了,cURL的漏洞也不少

发布时间:2016-12-02 13:59文章来源:互联网文章作者: 互联网点击次数:
安全专家对cURL进行了审计,发现了数十个安全问题,这些漏洞在最新的版本中已经被修复。 cURL想必大家都不陌生,它是一款开源的命令行工具和库,支持多种协议传输数据。cURL如今的应用还是比较广泛的,包括网络设备、打印机、智能手机,甚至是一些物联网设备
cURL.png
安全专家对cURL进行了审计,发现了数十个安全问题,这些漏洞在最新的版本中已经被修复。 cURL想必大家都不陌生,它是一款开源的命令行工具和库,支持多种协议传输数据。cURL如今的应用还是比较广泛的,包括网络设备、打印机、智能手机,甚至是一些物联网设备比如汽车。

主动审计

前不久,cURL开发者、Mozilla员工Daniel Stenberg请Mozilla Secure Open Source(SOS)项目对cURL进行安全审计。
“我请Mozilla Secure Open Source项目进行了一次安全审计。这个项目是由Mozilla寻找第三方公司一起参与,并且最终买单完成的。参与审计的公司名为Cure53。” Stenberg在博客中写道。“我之所以申请审计是因为最近我感觉存在一些安全相关的问题,我觉得我们在安全方面可能有所欠缺,所以想让专家们检查一下。”
Cure53的5名专家对cURL进行了为期20天的审计,发现了总共23个安全问题。

审计结果

这些安全问题中,有9个是安全漏洞。专家融合了其中2个安全漏洞——其中一个被归类为“plain bug”,因为要在实际攻击场景进行利用会很困难。另外,审计发现了4个高危漏洞和4个中危漏洞。 高危漏洞的漏洞编号为CVE-2016-8617, CVE-2016-8619, CVE-2016-8622和CVE-2016-8623。这些都是远程执行漏洞。 比如说下面这个漏洞:

CRL-01-014 unescape_word()整型溢出造成负数数组索引(高危)

dict.c中的unescape_word()函数中存在以下代码: static char *unescape_word(struct Curl_easy *data, const char *inputbuff)
{
char *newp;
char *dictp;
char *ptr;
int len;
char ch;
int olen=0;
newp = curl_easy_unescape(data, inputbuff, 0, &len);
if(!newp)
return NULL;
dictp = malloc(((size_t)len)*2 + 1); /* add one for terminating zero */
if(dictp) {
/* According to RFC2229 section 2.2, these letters need to be escaped with
\[letter] */
for(ptr = newp;
(ch = *ptr) != 0;
ptr++) {
if((ch <= 32) || (ch == 127) ||
(ch == '\'') || (ch == '\"') || (ch == '\\')) {
dictp[olen++] = '\\';
}
dictp[olen++] = ch;
}
dictp[olen]=0;
}
free(newp);
return dictp;
}

很明显,len要比pow(2,31)小,但是输出可以拓展至两倍大小,也就是说当olen的值是INT_MAX时,可以被增加。这就会导致有符号整型溢出。 由于olen一直被用作数组索引,负的数组索引就会指向未分配的内存。 要验证漏洞,可以在6GB以上空闲内存的64位电脑上运行下面的代码。这个测试会获取一个超过1GB长的dict:// URL。 #include <curl/curl.h>
#include <stdint.h>
#include <string.h>
#include <err.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char *dicturl = malloc(23 + (1ULL<<30) + 5 + 1);
if (!dicturl)
errx(1, "malloc");
strcpy(dicturl, "dict://localhost/MATCH:");
memset(dicturl + 23, '\"', (1ULL<<30) + 5);
注意了,cURL的漏洞也不少
本文由 IT学习网 整理,转载请注明“转自IT学习网”,并附上链接。
原文链接:http://www.ourlove520.com/Article/diannao/wangluo/594728.html

标签分类:

上一篇:上一篇:谁对企业安全工作有最大推动力?
下一篇: 下一篇:没有了
无觅关联推荐,快速提升流量