安全研究人員發現,大多數USB設備都存在一個根本的安全漏洞,這個漏洞可被利用來感染計算機,而且很難被阻止或檢測。
位于柏林的安全研究實驗室創始人兼首席科學家Karsten Nohl表示,大多數USB驅動器和市場上出售的其他USB設備都不能保護其固件—其內部微控制器上運行的軟件。
Nohl表示,這意味著惡意軟件程序可以通過使用秘密的SCSI(小型計算機系統接口)命令來替代USB設備上的固件,讓它冒充其它類型的設備,例如鍵盤。
研究人員稱,然后這個假冒的鍵盤可以被用來模擬按鍵,并發送命令來下載和執行惡意程序。該惡意軟件可以重新編程其他插入到受感染計算機的USB驅動器,基本上讓它們變成自我復制的病毒。
來自安全研究實驗室的研究人員已經開發出幾個概念證明型攻擊,他們計劃在下周舉行的黑帽安全大會上展示。
其中一個攻擊是一個U盤作為三個獨立的設備—兩個驅動器和一個鍵盤。當該設備第一次插入到計算機,并被操作系統檢測到時,它作為一個常規存儲設備。然而,當計算機重啟時,該設備會檢測到它正在與BIOS通話,它會切換到隱藏的存儲設備,并模擬鍵盤。
作為一個鍵盤,該設備可以發送必要的按鍵來調出啟動菜單,并從隱藏的驅動器啟動最小的Linux系統。這個linux系統隨后會感染計算機硬盤驅動器的引導程序,就像是一個引導型病毒。該安全研究實驗室開發的另一個概念證明型攻擊涉及重新編程USB驅動來作為快速千兆網卡。
Nohl表示,操作系統更喜歡選擇有線網絡控制器,而不是無線控制器,更喜歡千兆以太網控制器,而不是更慢的控制器。這意味著操作系統將會使用新的偽造千兆以太網作為默認網卡。
USB設備還會模擬DHCP(動態主機配置協議)服務器,以自動分配DNS(域名系統)服務器到假冒服務器,但并不是網關地址。在這種情況下,該操作系統會繼續使用真正網卡指定的網關,而不是來自假冒控制器的DNS服務器,這樣互聯網連接將不會受到影響。通過控制DNS服務器—將域名轉換為IP(互聯網協議)地址,攻擊者可以劫持互聯網流量。
為了證明這種攻擊不僅能夠通過USB驅動器實現,研究人員還將使用Android手機連接到電腦來模擬流氓網卡。
任何USB連接都可能變成惡意,如果你讓別人連接USB驅動器或手機到你的電腦,這基本上意味著你授權他們來在計算機輸入命令。
安全研究實驗室展示的攻擊證明了我們很難同時確保USB標準的通用性和安全性。USB最大的特點是即插即放功能,而這個功能也是其最大的弱點。
不幸的是,對于這個問題并沒有簡單的解決辦法。安全研究實驗室的研究人員已經確定了幾種方法來解決這個問題,但沒有辦法能夠完全或及時解決問題。
其中一種解決辦法是,在USB規范中規定,在添加新的USB設備到計算機時,要求使用安全的配對過程,類似于藍牙設備使用的程序。然而,即使USB規范被改變(+微信關注網絡世界),我們仍然需要幾年才能全面部署新標準,以及用新設備取代舊設備。
操作系統還可以要求用戶確認添加新USB設備到其計算機,然后記住授權設備,一種USB防火墻。然而,這可能不可行,因為很多USB設備使用一串零作為其序列號,操作系統沒辦法區分USB設備。此外,這并不能解決USB從操作系統外部感染啟動區域的問題。
解決這個問題的一個明顯的位置是在USB微控制器本身,要求固件升級進行數字簽名,或者部署某種形式的硬件鎖定機制,來防止設備離開工廠后被改寫固件。Nohl表示他和他的團隊并沒有在他們測試的USB設備中看到這種保護。
即使制造商開始部署這種保護,我們需要想辦法來區分新的USB設備和舊的不安全的設備,讓用戶可以明確哪些設備正在連接到他們的計算機。
最后,更短期的解決方案是,讓用戶開始了解USB插入到計算機的風險,并提高警惕。如果用戶想要與他人交換文件,與USB驅動相比,SD(安全數字)內存卡是更好的選擇。