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