格拉茨技術大學的研究人員發現了一種具有突破性的基于軟件的旁道攻擊方式 ——KernelSnitch,它利用的是 Linux 內核數據結構中的時間差異。
根據研究人員在 Github 上發布的報告,與依賴硬件的攻擊不同,KernelSnitch 主要針對哈希表、基數樹和紅黑樹。這使得非特權攻擊者能夠跨越隔離進程泄露敏感數據。
漏洞:內核數據結構是靜默泄漏者
操作系統依靠哈希表和樹等動態數據結構來管理用戶空間鎖、計時器和進程間通信 (IPC) 的元數據。
KernelSnitch 利用了一個關鍵的架構疏忽:訪問這些結構所需的時間取決于它們的占用情況(元素的數量)。
通過測量系統調用執行時間,攻擊者可以推斷占用率并提取秘密。
KernelSnitch 的工作原理
1、時間測量:攻擊者觸發與內核結構交互的系統調用(例如,futex、msgget)。
2、占用率推斷:系統調用持續時間越長,表示由于迭代搜索(例如,遍歷哈希桶中的鏈接列表)導致的占用率越高。
3、放大:哪怕是極其微小的時間差異(低至 8 個 CPU 周期),也會通過緩存抖動(刷新 CPU 緩存以加劇內存延遲)或者結構操作(人為增加占用率)被放大。
KernelSnitch 利用哈希表中的可變訪問時間。每個存儲桶的鏈接列表長度會影響系統調用持續時間,通過時間戳比較泄露。
分析
1、隱蔽通道(580 kbit/s 傳輸):惡意進程通過調節哈希桶占用率來進行通信。在 Intel i7 - 1260P 上,KernelSnitch 利用 futex 子系統實現了 580 kbit/s 的傳輸速度,錯誤率為 2.8%。
2、內核堆指針泄漏:攻擊者通過強制哈希碰撞,可以推斷出哈希函數中使用的秘密內核地址(例如 mm_struct)。這能夠實現精確的堆操作以提升特權,并且在 65 秒內就能泄露指針。
3、網站指紋識別(準確率 89%):在網頁加載期間,監控 Firefox 的 futex 活動可以創建獨特的時間指紋。卷積神經網絡(CNN)能夠從 Ahrefs Top 100 列表中識別出網站,F1 得分為 89.5%。
為什么 KernelSnitch 很重要
·與硬件無關:和 Spectre 或 Meltdown 不同,KernelSnitch 利用的是軟件設計缺陷,能夠繞過硬件緩解措施。
·廣泛影響:所有使用動態內核結構的主流操作系統都存在這個漏洞。該漏洞已在 Linux 5.15 - 6.8 版本上進行了測試。
·隱身性:它不需要特權或共享內存,能夠逃避現有的沙箱。
緩解與挑戰
修復 KernelSnitch 需要進行根本性的變革:
· 恒定時間結構:消除與占用情況相關的操作(例如預先計算最壞情況下的遍歷步驟)。
·命名空間隔離:限制跨安全域的結構共享。
·隨機散列:在散列函數中混淆內核地址輸入。
正如合著者 Lukas Maar 所說:“對于通用內核來說,恒定時間編碼并不現實。我們需要的是架構轉變,而不是簡單打補丁。”
KernelSnitch 暴露了操作系統安全中一個普遍存在的盲點:性能優化在無意中創建了旁道。由于概念驗證(PoC)代碼已經公開,開發人員必須優先考慮強化結構,而不是進行增量修復。隨著內核級攻擊變得越來越復雜,重新思考核心設計范式已經刻不容緩,否則攻擊威脅將會超過緩解措施的作用。
參考及來源:https://gbhackers.com/kernelsnitch-a-new-side-channel-attack/
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.