Linux USB 音頻驅動漏洞正被惡意 USB 設備在野利用
漏洞概述
Linux內核中的USB音頻驅動存在一個可能導致內存越界讀取的關鍵漏洞,該漏洞已由SUSE公司的Takashi Iwai通過最新補丁修復。攻擊者若獲得系統物理訪問權限,可利用惡意USB設備實現權限提升、篡改系統內存或執行任意代碼。
Linux基金會Greg Kroah-Hartman于2024年12月14日提交的修復補丁,顯著提升了使用USB音頻設備系統的驅動穩定性和安全性。
攻擊原理
當USB音頻設備提供的描述符中bLength值小于預期結構大小時,漏洞就會被觸發。原始代碼中驅動程序盲目假設描述符完整,并嘗試讀取其時鐘ID或引腳數組等字段。
若描述符因硬件缺陷或人為篡改被截斷,驅動程序可能越過已分配的內存緩沖區,讀取到相鄰非目標區域。這種越界讀取可能泄露內核內存中的敏感數據(如指針或用戶信息),或通過訪問無效內存地址導致系統崩潰。
最壞情況下,熟練的攻擊者可結合其他漏洞利用鏈實現權限提升或任意代碼執行,但此類攻擊需要精確控制USB設備并存在其他漏洞配合。
安全增強措施
該漏洞源于驅動程序未驗證USB音頻設備提供的時鐘描述符bLength字段。缺乏這些檢查時,長度不足的畸形或惡意構造描述符可能觸發越界內存訪問,導致系統崩潰或遭受攻擊。
補丁(commit ab011f7439d9bbfd34fd3b9cef4b2d6d952c9bb9)在時鐘描述符驗證函數中引入了嚴格的完整性檢查。雖然僅修改了sound/usb/clock.c文件的24行代碼,但對依賴Linux進行音頻處理的發燒友、開發者和企業影響重大。
該漏洞最初由Google的Beno?t Sevens報告,補丁已反向移植到穩定內核分支,確保各發行版用戶都能獲得安全增強。時鐘選擇器描述符(包含可變長度數組和附加字段)針對USB Audio Class(UAC)2和3版本進行了更全面的驗證。
用戶可通過下載linux-ab011f7439d9bbfd34fd3b9cef4b2d6d952c9bb9.tar.gz更新內核獲取該補丁。這一進展體現了Linux社區持續快速修復漏洞、維護系統健壯性的承諾。