精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

車聯網開源組件BusyBox漏洞分析及復現

蛇矛實驗室 ? 來源:蛇矛實驗室 ? 2023-02-21 17:49 ? 次閱讀

本環境是基于"火天網演攻防演訓靶場"進行搭建,火天系列產品提供模擬器級別的網絡環境構建系統,可以靈活的對目標網絡進行設計和配置,并且可以快速進行場景搭建和復現工作,產品也進行了車聯網設備對接,為車聯網安全訓練環境構建提供基礎資源支持

背景

近日,國內多家安全實驗室檢測到了針對于智能網聯汽車中使用都開源項目busybox漏洞,國外在2022年5月份報告了此漏洞,目前已經發布的CVE信息如下,信息中指出Busybox1.35-x版本中,awk應用由于use after free導致拒絕服務漏洞或可能獲取代碼執行權限。

漏洞原理

根據CVE發布信息公告來看,該漏洞屬于堆溢出漏洞,具體漏洞類型為use after free。簡單來說,use after free漏洞的形成過程如下,如果我們申請一塊內存然后釋放后,此時重新申請一塊相同大小的內存,操作系統為了內存空間的管理方便,會將上一次釋放掉的內存重新分配給我們。此時上一個申請的指針沒有被清空,而且重新給內存賦值的話,就會影響第二次申請內存中的內容。use after free的本質為倆個指針同時指向同一塊內存,而當一個chunk被free后,其中該chunk中的數據具有部分結構的控制作用,使用另一個指針修改控制結構的數據,程序控制流就會被改變。

示例如下,在下圖源碼中,我們使用指針chunk1指向了malloc分配了0x10字節的內存,隨后在內存中拷貝"test1"字符串到內存中,此時打印出來的chunk1地址為0x8c71e260,里面的內容為test1。隨后我們釋放掉chunk1,此時使用chunk2指針指向malloc重新分配的0x10字節,然后在chunk2內存中寫入"test2"字符串,打印出來chunk2的地址也是0x8c71e260。這時如果我們向chunk1指針指向的內存中寫入"test3"字符串,打印chunk2里面的內容,我們就會發現明明沒有修改chunk2的內容,但是打印時chunk2里面的內容卻變了。

0210418a-b1cc-11ed-bfe3-dac502259ad0.png

知道了漏洞的大概類型后,我們便可以進行簡單分析。首先在busybox官網(https://busybox.net/downloads/)中,下載1.35.0版本和最新的1.36.0版本。根據CVE發布信息我們得知是awk應用程序存在漏洞,所以我們直接使用vimdiff比較倆個版本的awk.c文件。在vimdiff的比較中,我們發現在evaluate函數中的case XC(OC_MOVE)中進行了補丁更改。

0248b42a-b1cc-11ed-bfe3-dac502259ad0.png

打開1.35.0版本awk.c文件中未經patch處的對應代碼塊,該代碼塊位于evaluate函數中,在該case分支下,出現了CVE公告中提到的漏洞函數copyvar。由于此時我們對整個程序的架構和執行流程還不太清楚。我們先簡單跟一下可能具有漏洞的具體情況,堆溢出的漏洞一般都發生在*alloc或free函數附近。use after free漏洞一般在free函數居多,我們接下來跟流程重點關注一下free函數。

026aed2e-b1cc-11ed-bfe3-dac502259ad0.png

進入查看發現clrvar對第一個參數進行操作,隨后使用handle_special函數對dest進行處理。進入查看發現clrvar函數調用free函數對內存進行了釋放。

02917818-b1cc-11ed-bfe3-dac502259ad0.png

上面的倆個函數都用到了var結構體,結構體定義如下:

02b291b0-b1cc-11ed-bfe3-dac502259ad0.png

接下來返回awk_main函數簡單觀察一下執行流程。發現程序首先進行一系列設置,指定了標準輸入輸出,隨后使用awk_getline獲取用戶輸入,并循環使用evaluate函數進行處理。

02dabd0c-b1cc-11ed-bfe3-dac502259ad0.png

在evaluate函數中,首先調用nvalloc分配了2個var大小的堆內存。然后將該指針命名為了TMPVAR0。隨后根據傳入的op結構體信息循環處理。在循環處理中又使用switch case分支處理,在XC(OC_MOVE)中調用了我們分析的copyvar函數。

02ee7bee-b1cc-11ed-bfe3-dac502259ad0.png

根據前面的流程分析和patch后的代碼判斷,如果我們輸入數據可以控制L.v的指針指向tmpvars(TMPVAR0),那么這時用戶修改的指針和系統自動分配的tmpvars都指向同一塊內存,而在case XC(OC_MOVE)中,如果當其中一個指針指向的chunk被釋放,而另一個指針指向chunk的內存繼續使用時。修改被釋放chunk的內存數據時,就會破壞free chunk list,從而導致堆溢出漏洞的產生。

漏洞分析

由于busybox多平臺原因,為了方便調試,這里我選用靶場linux操作機進行操作。動態調試過程如下,在gdb調試后下斷,并attach進程,斷點信息如下。

03145e2c-b1cc-11ed-bfe3-dac502259ad0.png

直接按c運行,程序要求我們輸入字符串,這里隨意輸入

03318cb8-b1cc-11ed-bfe3-dac502259ad0.png

程序直接斷在了call free處,觀察到RDI為空,我們不用管它。查看堆棧回溯發現程序是由awk_getline函數調用進行的,這里就是前面分析中awk_getline函數獲取用戶輸入。

0367f08c-b1cc-11ed-bfe3-dac502259ad0.png

堆空間堆塊排布信息如下,可以看到我們輸入的"foo"字符串,堆內存結構此時還沒有被破壞,我們繼續往下調試。

03a4028e-b1cc-11ed-bfe3-dac502259ad0.png

調試過程中,釋放的堆塊信息比較復雜,我們使用bins命令查看當前free chunk list。

03da37e6-b1cc-11ed-bfe3-dac502259ad0.png

運行到了evaluate函數處,這里便是源碼中使用nvalloc(xzalloc)函數分配tmpvars的堆內存。

03f87de6-b1cc-11ed-bfe3-dac502259ad0.png

這里直接斷在了case XC(OC_MOVE)里面的copyvar函數,copyvar的第一個參數為L.v,第二個參數是R.v。這里L.v已經被修改成了tmpvars的指針,這樣倆個指針同時指向了tmpvars的內存,后續會調用free函數進行釋放。

04136994-b1cc-11ed-bfe3-dac502259ad0.png

si進入copyvar函數,運行到call clrvar處,這里的rdi即傳入第一個參數的L.v的地址。clrvar會調用free函數進行釋放。

04438b6a-b1cc-11ed-bfe3-dac502259ad0.png

運行后進入handle_special函數,后續流程較為復雜,直接在漏洞觸發點getvar_i處下斷點。運行后,斷點停在了call getvar_i函數,我們跟入分析。

04736ede-b1cc-11ed-bfe3-dac502259ad0.png

在getvar_i函數中,對0x55555585caa0指針指向chunk進行了修改(v->type)。

04944cda-b1cc-11ed-bfe3-dac502259ad0.png

此時getvar_i函數中處理的v->type即為tmpvars free chunk的控制結構,函數這里直接對其進行了處理,導致堆結構的改變。

04bc9b5e-b1cc-11ed-bfe3-dac502259ad0.png

此時0x55555585caa0中數據0x55555585caf0被修改,原來的free chunk list已經被破環,修改后0x55555585caa0指向的下一個free chunk被修改為0x55555585c9f0。

04d5b09e-b1cc-11ed-bfe3-dac502259ad0.png

當我們進行第二次輸入字符串時,會繼續對堆空間進行申請和釋放。當申請到0x55555585c9f0地址處的chunk時,會對堆空間進行數據更改,導致程序崩潰。

055c8272-b1cc-11ed-bfe3-dac502259ad0.png

0x55555585c9f0地址處已經被申請,此時chunk結構被破壞,gdb插件已經無法識別剩余內容空間的堆結構。

058474da-b1cc-11ed-bfe3-dac502259ad0.png

堆塊標識被清空,所以無法找到對應堆塊的起始位置,所以插件識別不了。

05c20c00-b1cc-11ed-bfe3-dac502259ad0.png

當繼續往下調試時,程序崩潰。

05f575f4-b1cc-11ed-bfe3-dac502259ad0.png

下圖為另一個poc測試出現的情況,這里面的topchunk標識被修改為0,當堆繼續申請和釋放時,程序同樣會崩潰。

062654da-b1cc-11ed-bfe3-dac502259ad0.png

漏洞復現

下載好busybox后直接使用源碼進行編譯安裝

make menuconfig
make
make install

0642dd62-b1cc-11ed-bfe3-dac502259ad0.png

使用已公開的poc進行測試,發現觸發了漏洞。

06adacbe-b1cc-11ed-bfe3-dac502259ad0.png

由于busybox在不同系統中的編譯使用,且不同系統編譯后程序開啟的保護也不同,那么這里獲取執行權限的方式也不同。

總結

整體分析下來,該漏洞利用性不大,且獲取執行權限的利用方式較為復雜,但因為其可能具有獲取執行權限的情況,請使用busybox漏洞版本的各位用戶盡快升級到最新版本。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 車聯網
    +關注

    關注

    76

    文章

    2562

    瀏覽量

    91516
  • LINUX內核
    +關注

    關注

    1

    文章

    316

    瀏覽量

    21618
  • GDB調試
    +關注

    關注

    0

    文章

    24

    瀏覽量

    1437

原文標題:車聯網開源組件BusyBox漏洞分析及復現(CVE-2022-30065)

文章出處:【微信號:蛇矛實驗室,微信公眾號:蛇矛實驗室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Busybox源碼簡介

    在嵌入式系統構建中,Busybox可用于構建輕量級的根文件系統,本文從源碼結構和源碼入口角度分析busybox,了解其背后的運作機制。
    發表于 10-12 09:07 ?2039次閱讀

    某安全瀏覽器竟然也被查出高危漏洞開源安全問題不容忽視

    , pkg等多種二進制文件進行掃描,不僅能定位開源漏洞并提供CVE編號和修補方案,還能分析出所使用的開源組件清單,據說使用的是國際上律師事務
    發表于 08-31 16:06

    某安全瀏覽器竟然也被查出高危漏洞開源安全問題不容忽視

    , apk, ipk, iso, bin, dll,dmg, pkg等多種二進制文件進行掃描,不僅能定位開源漏洞并提供CVE編號和修補方案,還能分析出所使用的開源
    發表于 09-05 14:26

    聯網的架構分析實現聯網的價值

    2018年的風口是什么?人工智能?區塊鏈?還是物聯網?物聯網是國家戰略性新興產業的重要組成部分,是繼互聯網之后的新一輪信息技術革命。物聯網應用的行業有很多,
    發表于 02-11 10:13

    聯網終端應用

    隨著物聯網興起,造成汽車產業革新,改變了以往汽車工業生態,形成新的「聯網」產業鏈及應用創新趨勢。根據中國產業發展研究網報告,2018年全球聯網
    發表于 07-17 07:33

    淺析Linux系統開源漏洞檢測工具

    jSQL是一款輕量級安全測試工具,可以檢測SQL注入漏洞。它跨平臺(Windows, Linux, Mac OS X, Solaris)、開源且免費。
    發表于 07-23 07:21

    什么是聯網

    什么是聯網聯網即 V2X(Vehicle to Everything),意思是和萬物互聯。
    發表于 09-16 10:36

    開源鴻蒙 OpenHarmony 獲得 CVE 通用漏洞披露編號頒發資質

    8月15日晚間,開源鴻蒙 OpenAtom OpenHarmony 官方宣布于 8 月 3 日獲得通過 CNA(通用漏洞披露編號授權機構)加入程序,成為 CVE(通用漏洞披露組織)的編號授權機構
    發表于 08-17 11:34

    busybox詳解

    BusyBox 的誕生 BusyBox 最初是由 Bruce Perens 在 1996 年為 Debian GNU/Linux 安裝盤編寫的。其目標是在一張軟盤上創建一個可引導的 GNU
    發表于 11-01 15:54 ?3次下載

    PCB設計中的電子組件漏洞評估

    電子元件也有漏洞。如果你不了解這些內容,最終可能會為 PCB 的設計選擇錯誤的組件。這些組件可能會過早失效,或者會給您間歇性出現問題,從而導致調試和更正耗時且成本高昂的工作。重要的是要事先做出正確
    的頭像 發表于 09-12 19:06 ?2042次閱讀

    全球聯網現狀及我國聯網產業分析

    責任編輯:xj 原文標題:【行業資訊】全球聯網現狀及我國聯網產業分析 文章出處:【微信公眾號:深圳市汽車電子行業協會】歡迎添加關注!文章
    的頭像 發表于 11-10 11:10 ?2879次閱讀

    2022 OpenHarmony組件大賽,共建開源組件

    原標題:共建開源組件生態 2022 OpenHarmony組件大賽等你來 2022年4月15日,2022 OpenHarmony組件大賽(下稱“大賽”)報名通道正式開啟,開發者登錄
    的頭像 發表于 04-26 17:31 ?1530次閱讀
    2022 OpenHarmony<b class='flag-5'>組件</b>大賽,共建<b class='flag-5'>開源</b><b class='flag-5'>組件</b>

    聯網遙控開源分享

    電子發燒友網站提供《物聯網遙控開源分享.zip》資料免費下載
    發表于 07-11 11:09 ?4次下載
    物<b class='flag-5'>聯網</b>遙控<b class='flag-5'>車</b><b class='flag-5'>開源</b>分享

    Busybox編譯安裝過程 Busybox的使用方法

    Busybox是一個開源的、輕量級的軟件工具集合,旨在提供一個精簡的Unix工具集,適用于嵌入式系統和資源受限的環境。它將許多常用的Unix工具(如ls、cp、cat、mv、grep、find、telnet等)合并為一個可執行文件,從而減少了系統的存儲空間和資源占用。
    發表于 09-11 12:33 ?2263次閱讀

    聯網系統的安全漏洞分析

    隨著物聯網技術的快速發展,越來越多的設備被連接到互聯網上,從智能家居、智能城市到工業自動化,物聯網的應用范圍不斷擴大。然而,隨著物聯網設備的增多,安全問題也日益凸顯。 一、物
    的頭像 發表于 10-29 13:37 ?279次閱讀