現代作業系統內建許多防禦機制,用來對抗安全性漏洞。但如果能移除這些防禦機制會如何?這麼做就能清楚檢視執行作業系統的晶片,同時也會暴露出作業系統通常會遮蔽的硬體漏洞。
一項全新的手寫作業系統Fractal提供了這種清晰視野。Fractal 由 MIT 電腦科學與人工智慧實驗室(CSAIL)的研究人員從零開始打造,目的是探測執行該作業系統的晶片架構。為了證明這一點,該作業系統於 5 月在2026 年 IEEE 安全與隱私研討會於舊金山發表,並用來揭露蘋果 M1 晶片先前未知的漏洞。
Joseph Ravichandran 是撰寫 Fractal 的 CSAIL 博士生,他表示這套作業系統的靈感來自研究Pacman(2022 年揭露的 Arm CPU 漏洞)時所遇到的障礙。
Ravichandran 解釋:「我們曾使用自訂核心修補程式與核心擴充等技術來鋪路,但這些只是部分解決方案。一直以來的夢想是擁有一套完全自訂的作業系統,讓這些駭客手法不再必要。」
探測晶片資料儲存與移動
研究硬體漏洞的研究人員需要確切知道資料在晶片上的儲存與移動方式。他們會撰寫測試程式來誘發晶片的特定行為,然後分析結果以還原晶片執行程式碼的方式。
然而,Windows 或 MacOS 等傳統作業系統會內建防禦機制與功能,會使程式碼執行與記憶體管理變得模糊。Ravichandran 表示:「我曾為安全硬體設計課程設計多個實驗,看到學生遇到的困難,也親身經歷過這些困難,我意識到必須有更好的方法。」
Fractal 正是這個問題的明顯解決方案。它並非修補或利用傳統作業系統,而是完全取代裝置原本的作業系統,改用專注於安全性研究的自訂替代方案。
不過,撰寫作業系統絕非易事。Fractal 從零開始,使用組合語言、C 與 C++ 等程式語言撰寫。Ravichandran 於 2024 年 6 月開始工作,並在年底完成第一版作業系統,之後經過數月的測試。除錯是最困難的步驟,因為為原本未設計支援該作業系統的硬體打造自訂作業系統,等於排除了除錯工具。
Ravichandran 說:「在讓 Fractal 執行於Apple Silicon 上的過程中,有很長一段時間我唯一能看到的輸出,就是機器前方的電源燈。這盞燈告訴我程式碼是否正在執行(燈亮著),或是機器因故當機(燈熄滅)。」
Fractal 作業系統的安全性研究功能
Fractal 為研究人員提供三項關鍵功能。
第一項重點功能是多權限並行執行。在傳統作業系統上,比較晶片在不同權限等級(控制程式對系統資源的存取)的行為極為困難。切換權限等級也會改變記憶體配置、CPU 的分支預測器狀態等,這些都會引入變數而扭曲測試結果。Fractal 可在權限等級間並行執行測試,同時保持其他參數相同,進而產生更乾淨的測試結果。
第二項功能是合作式多工,這是傳統作業系統功能「搶占式多工」的替代方案。搶占式多工是現代作業系統的重要功能,用來處理可能同時存在的數十或數百個任務,但它也可能在作業系統判定另一項任務更重要時暫停測試,為測試結果增加雜訊。當啟用 Fractal 的合作式多工時,使用者可決定程式碼執行的順序,且不會被中斷。
最後一項功能是 Fractal 的記憶體系統,稱為 gmap。在傳統作業系統中,程式透過作業系統將虛擬位址對應到真實硬體來存取記憶體。這種對應關係在不同測試之間可能改變。Gmap 則在執行緒與任務之間鏡射記憶體位置,消除了另一個變數。
這些功能的共同特點是控制與清晰度。Ravichandran 表示:「Fractal 的目標是盡可能準確地告訴你硬體實際做了什麼。透過從 Fractal 獲得的資訊,研究人員將能更清楚地理解硬體本身在不受作業系統影響的情況下的行為。」
在 M1 上發現 Phantom Speculation
為了展示 Fractal 的能力,Ravichandran 將它對準蘋果的 M1,主要原因是這是他手邊的硬體。
Fractal 讓研究人員首次證實 Apple Silicon 受到一種名為Phantom speculation的影響,這種漏洞在某些情況下可讓攻擊者短暫引導晶片執行攻擊者選擇的路徑。Phantom 已被證實存在於 AMD 與 Intel 硬體,但從未被證實存在於蘋果 M1——直到現在。
此漏洞的實際影響可能有限。Fractal 發現,雖然 Phantom 提取可能發生在蘋果 M1 上,但指令從未被執行。Ravichandran 拒絕推測該漏洞在實際環境中可能如何被利用,並表示已向蘋果通報此漏洞。
雖然主要在搭載蘋果 M1 的 Mac Mini 上進行測試,Fractal 也能在許多 Intel 與 AMD 電腦、Raspberry Pi,以及一些較新的 Apple Silicon 裝置(如搭載 M4 的 Mac Mini)上執行。Fractal 以 MIT 授權條款免費提供開源作業系統下載。Ravichandran 已將核心程式碼上傳至Github,完整實驗設定則發布在Zenodo,更多細節可於Fractal 官網取得。
Ravichandran 期待看到其他研究人員如何利用 Fractal 探索其他微架構。他說:「目前我的目標是將這套系統推廣到世界各地,讓其他研究人員也能受益。我希望 Fractal 能成為社群專案,由其他受益於此方法的研究實驗室共同貢獻。」
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.