hardware-assisted-safety

5 posts

你的 C 程式碼可以在 capability 硬體上執行,而且不需要全面 rewrite

CHERI 的 hybrid ABI 讓你逐步將 C 程式碼移植到 capability 硬體上。以下介紹如何編譯、會遇到什麼問題,以及如何在不 rewrite 整個 codebase 的情況下修復它們。

你手上有一份龐大到無法用 Rust rewrite、卻又關鍵到不能放任緩衝區溢位風險的 C codebase。CHERI capability 硬體承諾在 CPU 層級攔截記憶體安全違規,但網路上不斷有人告訴你 CHERI 指標是 128 位元,而你的程式碼假設它是 64 位元。 好消息是,CHERI…

Capability 硬體沒有失敗,它只是早了四十年

硬體層級的記憶體安全性自 1970 年代就已可行。以下是 capability 架構為何一再敗給扁平記憶體模型,以及 CHERI 為何終於改變了這道算式。

七成 CVE 是記憶體安全性錯誤。buffer overflow、釋放後使用、重複釋放。這類漏洞讓攻擊者得以從一張損毀的 JPEG 取得 root 權限。 我們自 1975 年起就知道如何在硬體層面阻止絕大多數這類問題。劍橋 CAP 電腦採用了 capability 定址。卡內基美隆大學的 Hydra…

你的 C 相依程式庫可能讓整個行程當掉。WebAssembly 可以阻止它。

用 container 來隔離單一 C 程式庫未免小題大做。將其編譯為 WebAssembly,在 WASI sandbox中執行,即可實現記憶體安全、基於權能的檔案系統存取和當機隔離,無需 Docker。

C 程式庫內部的一次空指標解參照就可能導致整個應用程式當掉。如果該程式庫負責剖析使用者輸入、解壓縮影像或處理網路 protocol,那麼一個格式錯誤的封包就足以引發當機。container 確實能解決這個問題,但僅為了一個相依項目就啟動 Docker,無異於為盆栽雇用保鏢。你需要的是沒有額外負擔的隔離。…

你的手機已經擁有能偵測記憶體損壞的硬體

ARM Memory Tagging Extension 和 GWP-ASan 讓現代行動裝置在生產環境中偵測記憶體安全成為可能。本文介紹它們的工作原理和權衡取捨。

你的手機可以在生產環境中偵測記憶體損壞。不是用你在 CI 中執行的完整插樁,也不是針對每一次分配。但你口袋裡的硬體在幾年前就已經搭載了必要的原語,而且越來越多的生產應用正在悄悄啟用它們。 簡而言之:AddressSanitizer 對生產環境來說太貴了。ARM Memory Tagging Extension…

buffer overflow之所以反覆發生,是因為我們在軟體層面修復它

CHERI是一種硬體擴展,它將每個指標轉變為帶有邊界的權能。本文介紹它如何在CPU層面阻止buffer overflow、代價幾何,以及如何在真實硬體上試用。

buffer overflow在CWE Top 25榜單上盤踞了二十年之久。我們擁有堆疊金絲雀、ASLR、DEP、控制流完整性以及記憶體安全語言,然而它們仍然不斷出現在關鍵程式碼中。原因很簡單:這些緩解措施無一不是在軟體中執行的,而軟體可以被繞過、被錯誤配置,或者根本未被啟用。…