《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > BusyBox 14個安全漏洞

BusyBox 14個安全漏洞

2021-11-12
來源:嘶吼專業版
關鍵詞: 安全漏洞

  Jfrog安全研究人員在BusyBox Linux工具中發現了14個安全漏洞

  BusyBox是一個使用非常廣泛的軟件套件,被稱為嵌入式Linux的瑞士軍刀,融合了多個通用Unix工具和applet到一個可執行文件中,可以運行在可編程邏輯控制器(PLC)、人機接口(HMI)和遠程終端單元(RTU)等Linux系統中。

  BusyBox 14個安全漏洞

  Jfrog安全研究人員在BusyBox Linux工具中發現了14個安全漏洞,攻擊者利用這些漏洞可以引發DoS條件、信息泄露和遠程代碼執行等,相關漏洞CVE編號為:

  ?CVE-2021-42373

  ?CVE-2021-42374

  ?CVE-2021-42375

  ?CVE-2021-42376

  ?CVE-2021-42377

  ?CVE-2021-42378

  ?CVE-2021-42379

  ?CVE-2021-42380

  ?CVE-2021-42381

  ?CVE-2021-42382

  ?CVE-2021-42383

  ?CVE-2021-42384

  ?CVE-2021-42385

  ?CVE-2021-42386

  CVE-2021-42374漏洞

  LZMA 是使用詞典壓縮的壓縮算法,可以使用范圍編碼器編碼輸出結果。LZMA壓縮算法會編碼壓縮的流,數據會被分成包,每個包是一個單獨的字節或者LZ77序列。。lzma格式包含一個13字節的頭,使用LZMA文件格式壓縮字符串abc的示例如下:

  CVE-2021-42374漏洞是LZMA中decompress_unlzma.c文件的unpack_lzma_stream函數中size檢查不充分導致的安全漏洞。

  while (global_pos + buffer_pos < header.dst_size) {

  …

  uint32_t pos;

  pos = buffer_pos - rep0;

  if ((int32_t)pos < 0)           // Insufficient check

  pos += header.dict_size; // dict_size is user-controlled

  match_byte = buffer[pos]; // Read OOB may occur here

  do {

  int bit;

  match_byte 《= 1;

  bit = match_byte & 0x100;

  …

  為觸發該漏洞和控制泄露數據的開始偏移量,需要確保滿足以下條件:

  buffer_pos = 0

  and

  rep0 = offset + dict_size

  因此,pos就會等于(offset + dict_size)。在加上dict_size后,就可以通過match_byte從期望的offset泄露內容信息。泄露的內存包含可以用于下一步攻擊的指針。

  引發越界訪問

  漏洞該漏洞的基本思想是準備一個LZMA編碼的流,在解碼時,滿足以上利用條件,并且pos等于一個負數(-offset)。這樣的話,解碼的流就會含有泄露的內存,可以寫入輸出流中。

  為了滿足buffer_pos=0這第一個條件,需要確保當前解碼緩存流清空后馬上能運行(state >= LZMA_NUM_LIT_STATES),這樣的話緩存指針位置就等于0。可以通過當前匹配的最后一個循環來實現:

  buffer[buffer_pos++] = previous_byte;

  if (buffer_pos == header.dict_size) {

  buffer_pos = 0;

  global_pos += header.dict_size;

  if (transformer_write(xstate, buffer, header.dict_size) != (ssize_t)header.dict_size)

  goto bad;

  IF_DESKTOP(total_written += header.dict_size;)

  }

  len--;

  } while (len != 0 && buffer_pos < header.dst_size); // match_last_iteration will end with buffer_pos = 0;

  第二個條件更難滿足,基本思想是在LZMA位流中編碼一個特殊的長度,解碼后可以被rep0變量使用。

  為實現OOB條件,需要寫一些字節,然后使用匹配來填充緩存header.dict_size,修改rep0為目標值。因此,pos會等于(-offset),就可以從offset泄露字節。

  從越界內存泄露信息

  在讀取match_byte后,就可以得到如下信息:

  do {

  int bit;

  match_byte 《= 1;

  bit = match_byte & 0x100;

  bit ^= (rc_get_bit(rc, prob + 0x100 + bit + mi, &mi) 《 8); /* 0x100 or 0 */

  if (bit)

  break;

  } while (mi < 0x100);

  while (mi < 0x100) {

  rc_get_bit(rc, prob + mi, &mi);

  }

  如果相關位與泄露的字節match_byte匹配,就會進入從prob + 0x100 + bit + mi讀取信息的循環,如果位不匹配,就會從prob + mi讀取。最后,泄露的位會清空為解壓的緩存。

  武器化ZIP文件

  雖然該漏洞是在LZMA壓縮算法中,但是zip文件格式也是支持LZMA壓縮算法的。而且從攻擊者的角度來看,zip更適合攻擊。因此,研究人員創建了一個PoC腳本來生成武器化的使用LZMA壓縮的zip文件:




電子技術圖片.png

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 夫妇当面交换中文字幕小说| 日韩视频在线观看一区二区| 办公室娇喘的短裙老师在线视频| 麻豆高清免费国产一区| 国产精品亚洲精品日韩已满| 99精品国产99久久久久久97| 巨龙肉色透明水晶丝袜校花| 久久一日本道色综合久| 日韩精品无码一本二本三本| 亚洲人成影院午夜网站| 欧美粗大猛烈老熟妇| 伊人免费视频二| 精品亚洲成a人在线观看| 嘟嘟嘟www在线观看免费高清| 青柠在线观看视频hd| 国产成人在线观看免费网站| 456在线视频| 国产精品日韩欧美| 91精品国产高清| 天天插天天狠天天透| а天堂中文最新一区二区三区| 我被丝袜长腿美女夹得好爽| 久久久亚洲欧洲日产国码农村| 日韩成人一区ftp在线播放| 亚洲aaa视频| 欧美一区二区三区在线观看| 亚洲成a人片在线看| 波多野结衣一区二区三区高清在线| 人妻少妇精品无码专区二区| 第一福利视频导航| 动漫美女人物被黄漫小说| 美女被羞羞网站免费下载| 国产三级电影网站| 豪妇荡乳1一5| 国产做无码视频在线观看| 高清亚洲综合色成在线播放放| 国产成人高清亚洲一区91| 欧美色图第三页| 国产精品va在线观看无码| 三级视频在线播放| 国产精品免费αv视频|