成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

現有USB模糊測試技術的總結

商務辦公
目前,鑒于USB本身的復雜性導致的安全性的影響和潛在的大量漏洞,幾乎所有模糊測試專家都開始將他們的模糊測試技術應用于USB的模糊測試中。

 Syzkaller(Google團隊開發的一款針對Linux內核進行模糊測試的開源工具),最近開始支持USB模糊測試,并且已經在Linux內核中發現了80多個漏洞。目前,鑒于USB本身的復雜性導致的安全性的影響和潛在的大量漏洞,幾乎所有模糊測試專家都開始將他們的模糊測試技術應用于USB的模糊測試中。

[[273483]]

什么是USB協議棧?

按著協議,USB分為USB host(USB主機) 和 USB device/gadget(USB從機),USB主機能夠主動發起會話而USB從機則不能發起會話。HOST是主機,好比電腦端那個USB,簡而言之,主機好比電腦端那個USB接口,從機好比就是連接到USB接口的U盤。當我們談論USB時,通常說的是USB主機,例如帶有標準USB端口的筆記本電腦。下圖是Linux USB主機棧。從下到上,分為硬件、內核空間和用戶空間。

USB主機控制器設備(又名HCD)是連接到系統PCI總線的PCI設備,通過USB端口提供USB連接支持。根據USB技術的發展,它也被稱為USB 1.x的UHCI / OHCI,USB 2.x的EHCI和USB 3.x控制器的XHCI。要使內核使用此控制器,我們需要一個USB主機控制器驅動程序,它可以設置PCI配置和DMA。上面是USB內核,實現底層USB協議棧,并使用通用內核API(submit /recv URB)抽象發送/接收USB數據包的方式。上面是不同的USB從機驅動程序,例如USB HID驅動程序和USB大容量存儲驅動程序。這些驅動程序會實現不同的USB類協議(例如,HID,大容量存儲),為內核中的其他子系統(例如輸入和數據塊)提供粘合層,方便用戶空間(例如創建/dev節點)。

由于Linux也廣泛用于嵌入式系統,例如一些USB軟件保護器(USB Dongle),USB從機指的是Linux內的USB軟件保護器硬件和USB模式。 USB從機與USB主機模式完全不同。下圖顯示了Linux內核中的USB從機協議棧。

底部是USB從機控制器(又名UDC),與HCD一樣,UDC也在PHY層內實現特定版本的USB標準。但是,與英特爾最常用的HCD不同,UDC IP來自不同的硬件供應商,例如DWC2/3,OMAP,TUSB和FUSB。這些控制器通常具有其自己的設計規范,并且當它們支持USB On-The-Go(又名OTG)模式時也可遵循HCD規范(例如XHCI規范)。 OTG允許UDC在USB主機和USB從機模式之間切換。例如,當Android設備以MTP的形式與筆記本連接時,Android USB從機控制器處于USB從機模式。如果USB閃存驅動程序插入Android設備,UDC將在USB主機模式下工作。支持OTG的UDC也被USB 3.x標準中的雙角色設備(Dual-Role Device,DRD)控制器取代。因此,不需要OTG數據線來切換UDC的角色,因為角色切換是在DRD控制器的軟件中完成的。

要使用UDC,你需要在內核中使用UDC驅動程序,通過行業標準總線((包括 AMBA? AHB和AXI接口))提供連接和配置,并為更高層設置DMA。與USB主機協議棧中的USB內核一樣,USB從機協議棧中的USB從機內核也提供API,通過回調和配置來注冊和實現USB從機函數。例如,我們可以通過請求現有的大容量存儲函數(f_mass_storage)將USB描述符傳遞到USB從機內核并實現典型的USB大容量存儲設備。對于諸如MTP的更復雜的協議,用戶空間守護進程或庫提供協議邏輯并通過例如configfs或usbfs與從機函數通信。

USB主機控制器(Host Controller)

USB的拓撲結構決定了主機控制器就是最高統帥,沒有主機控制器的要求,從機永遠不能主動發數據。所以主機控制器在USB的世界里扮演著重要的角色,它是幕后操縱者。

比如說USB主機發送Setup數據包獲取設備描述符是怎么發出去的?這個過程包含很多信息,比如:如何在D+和D-這兩根線上傳過去的、又傳過來的。 這一切的工作都是主機控制器給我們做的,USB主機控制器的規范有很多種,比如UHCI/OHCI。

什么是USB controller?

USB 設備和主機的接口就是host controller,一個主機可以支持多個host controller,比如分別屬于不同廠商的。那么USB host controller 本身是做什么的? 很簡單用于控制,控制所有的USB從機的通信。 CPU把要做的事情分配給主機控制器,然后自己想干什么就干什么去,主機控制器替他去完成剩下的事情,事情辦完了再通知CPU。否則讓CPU去盯著每一個從機做每一件事情,那是不現實的。

控制器的主要工作是什么? 把數扔出去,把數拿回來。絕對不應該偷偷加工數據。

主機控制器控制總線上包的傳輸, 使用1ms或125us的幀。在每幀的開始時,主機控制器產生一個幀開始包(SOF: Start of Frame)。

SOF包用于同步幀的開始和跟蹤幀的數目,包在幀中被傳輸,或由主機到從機(輸入事務),或由從機到主機(輸出事務)。傳輸總是由 主機發起的(輪詢傳輸)?;卮嗣織lUSB總線只能有一個 主機。每個數據包的傳輸都有一個狀態階段同(同步傳輸除外),數據接收者可以在其中返回ACK(應答接收),NAK(重試),STALL(錯誤條件)或什么也沒有(混亂數據階段,設備不可用或已經斷開)。

USB模糊測試的歷史

FaceDancer

由于可編程USB硬件模糊測試工具——FaceDancer的出現,USB模糊測試開始吸引更多的關注。它支持USB主機和從機模式模擬,并允許發送預先形成帶有漏洞的USB請求和響應。 Umap/Umap2提供了一個用Python編寫的模糊測試框架,它具有面向FaceDancer的不同USB從機和響應模板。TTWE框架通過使用兩個FaceDancer分別模擬USB主機和USB從機來實現USB主機和USB從機之間的MitM,此MitM允許兩個方向的USB數據包突變,從而實現雙方的模糊測試。

目前所有這些解決方案都集中在USB主機協議棧上,其原因是人們假設惡意USB從機不是惡意的USB主機(例如筆記本電腦),并且大多數USB從機固件都是閉源的,因此很難被分析。這意味著,大多數漏洞/錯誤存在于USB內核(用于解析USB響應)和一些常見的USB驅動程序(例如鍵盤)中。這些解決方案的優點是能夠完全模擬USB從機。但是,在我看來,卻有兩方面不足:

1.過于依賴硬件;

2.目標反饋有限。

由于FaceDancer速度很慢,這使得任何基于它構建的解決方案都無法擴展測試功能。由于在實踐中,經常需要將FaceDancer和目標設備作為模糊測試的基本要素,所以,這也對FaceDancer的可擴展性帶來了更多挑戰。反饋是另一個重要問題,模糊輸入的突變是基于模板和隨機化的,除了系統日志記錄之外,沒有來自目標的實時反饋(例如代碼覆蓋率)。因此,模糊測試的準確率是非常不可信的。

為了擺脫硬件依賴性,使用虛擬化(例如QEMU)來進行保存。vUSBf使用QEMU/KVM運行內核映像,并利用QEMU中的USB重定向協議將對USB從機的訪問重定向到由模糊測試工具控制的USB模擬工具,如下所示:

雖然vUSBf提供了一個很好的編排體系結構來并行運行多個QEMU實例,以此解決可擴展性問題,但模糊測試工具本質上是基于模板的,而反饋也還仍然依賴于系統日志記錄。

POTUS

為此,有研究人員開發了POTUS 項目,POTUS 項目也可以發現位于 Linux USB 驅動程序的漏洞。

2017年,倫敦大學的安全研究人員發布了 POTUS工具,這是一種可以發現 Linux USB 設備驅動程序漏洞的工具。該工具通過設置虛擬機,通用 USB 設備以及故障注入,發送模糊符號等技術來測試 USB 驅動程序繼而查找漏洞。

研究人員通過 POTUS 測試 USB 驅動程序發現了兩個 Linux 內核漏洞。一個是 CVE-2016-5400,USB 設備驅動程序中用于與 Airspy 軟件定義無線電(SDR)通信的內存泄漏漏洞,而另一個是自 2003 年以來已存在的 Linux 內核的樂高 USB 塔驅動器使用后釋放漏洞(無 CVE 標識符)。

POTUS的工作原理如下所示:

systemtap是一個診斷linux系統性能和功能問題的開源軟件,并且允許開發人員編寫和重用簡單的腳本深入探查linux系統的活動,可以快速安全的提取過濾總結數據,以便能夠診斷復雜的性能或功能問題。

在USB模糊測試中,SystemTap用于檢測內核存在的漏洞,并將漏洞數量記錄下來。基于不同狀態下的故障數量的路徑優先級排序算法可以控制“分叉(fork)”的數量。fork()函數通過系統調用創建一個與原來進程幾乎完全相同的進程,也就是兩個進程可以做完全相同的事,但如果初始參數或者輸入的變量不同,兩個進程也可以做不同的事。一個進程調用fork()函數后,系統先給新的進程分配資源,例如存儲數據和代碼的空間。然后把原來的進程的所有值都復制到新的新進程中,只有少數值與原來的進程的值不同,相當于克隆了一個自己。

給定路徑的故障數量表示代碼覆蓋率,因此,故障數量越大則代碼覆蓋率越高。另外,POTUS還在QEMU中實現了一個通用的USB虛擬從機,以使用可配置的設備描述符和數據傳輸來模擬不同的USB從機。 虛擬從機中的USB 驅動程序(USB 驅動程序)使用系統調用來使用暴露在虛擬從機的不同設備節點。與vUSBf相比,POTUS就具有模糊測試反饋機制(通過計算路徑內的故障數量),從而支持更多USB從機模擬。但是,在USB 驅動程序中模擬某些USB從機操作的手動進程、符號執行的基本限制——路徑爆炸( path explosion),以及依賴于路徑故障數量的未知有效性和局限性,使得POTUS很難被廣泛使用。

本文我們先從什么是USB協議棧開始講起,然后再講到USB模糊測試的歷史,其中講到了一些過去的常用技術和工具,不過它們都存在著一些問題。下文,我們將介紹最新的USB模糊測試的解決方案。

責任編輯:武曉燕 來源: 嘶吼
相關推薦

2010-03-18 14:07:09

無線USB技術特點

2024-10-21 15:39:24

2022-02-21 00:07:53

區塊鏈技術5G

2020-03-13 09:33:37

USB攻擊向量移動安全

2011-11-04 12:56:55

無線USB

2012-05-23 11:37:49

模糊處理器CPU

2017-05-08 07:37:56

2010-01-13 16:54:29

C++測試

2010-09-17 15:12:28

2017-01-11 22:41:05

2013-09-13 14:00:49

移動化企業移動信息化編程技術

2010-03-16 14:46:37

2023-01-26 00:28:45

前端測試技術

2021-04-18 18:37:40

零信任攻擊網絡安全

2014-04-01 13:29:44

Android高級模糊技術

2022-05-05 11:39:07

智能技術智能建筑

2020-03-12 11:17:18

模糊測試工具漏洞網絡安全

2022-03-18 12:46:56

Go 語言編程語言

2010-04-21 17:21:21

Ubuntu Live
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人99久久亚洲综合精品 | 九色av| 婷婷色婷婷 | 亚洲色综合 | 99热在线播放 | 97精品超碰一区二区三区 | 日韩高清国产一区在线 | 亚洲一区二区网站 | 在线欧美亚洲 | 99亚洲精品| 成人免费xxxxx在线视频 | 国产成人精品一区二区三 | 鲁大师一区影视 | 国产成人综合在线 | 国产成人综合在线 | 综合久 | 五月激情婷婷在线 | 日韩在线中文字幕 | 在线日韩福利 | 九九亚洲| 欧美国产日韩一区二区三区 | 午夜私人影院 | h视频在线播放 | 欧美精品久久 | 欧美久久精品 | 日韩精品免费视频 | 国产精品.xx视频.xxtv | 91久久精品一区二区三区 | 天天色综网| 国产一区二区三区免费 | 精品视频在线观看 | 国产欧美日韩精品一区 | 亚洲成人久久久 | 九九热在线免费视频 | 国产一区二区三区在线视频 | 亚洲综合二区 | 999久久久久久久久6666 | 成人免费在线观看 | 日韩欧美精品一区 | 亚洲精品av在线 | 91亚洲视频在线 |