計劃將質押隔離機制移植到Linux

最近 Cosmopolitan C 標準庫的作者 Redbean 平台通過 宣布,為 Linux 實現了 promise() 隔離機制。

最初由 OpenBSD 項目開發 y 允許您有選擇地禁止應用程序訪問未使用的系統調用 (為應用形成一種系統調用白名單,禁止其他調用)。 與 Linux 上可用的 syscall 訪問控制機制(例如 seccomp)不同,質押機制從一開始就被設計為盡可能地對用戶友好。

使用 systrace 機制在 OpenBSD 基礎環境中隔離應用程序的失敗舉措表明,在單個系統調用級別的隔離過於復雜和耗時。

作為替代方案,提出了認捐,其中 允許創建隔離規則而無需詳細介紹和操作準備好的訪問類.

例如,提供的類有 stdio(輸入/輸出)、rpath(只讀文件)、wpath(寫入文件)、cpath(創建文件)、tmppath(處理臨時文件)、inet(套接字網絡)、unix(unix 套接字)、dns(DNS 解析)、getpw(對用戶數據庫的讀取訪問權限)、ioctl(ioctl 調用)、proc(進程控制)、exec(啟動進程)和 id(權限控制)。

使用系統調用的規則 以註釋的形式指定,其中包括允許的系統調用類列表 以及允許訪問的文件路徑數組。 編譯並運行修改後的應用程序後,內核將接管監控是否符合指定規則的工作。

另外,FreeBSD 的質押實現正在開發中,其特點是能夠在不更改代碼的情況下隔離應用程序,而在 OpenBSD 中質押調用旨在與基礎環境緊密集成並在代碼中添加註釋每一個。

當老闆說我們應該使用像Linux這樣的東西時,承諾就像我們都渴望的禁果。 為什麼這很重要? 這是因為承諾()實際上使安全性可以理解。 Linux 從來沒有真正擁有普通人可以理解的安全層。

Linux 承諾移植開發人員從 FreeBSD 中獲得啟發 他們沒有更改代碼,而是準備了一個來自承諾.com 的附加實用程序,允許您在不更改應用程序代碼的情況下應用限制。 例如,要運行 curl 實用程序只能訪問 stdio、rpath、inet 和 threadstdio 系統調用類,只需運行“./pledge.com -p 'stdio rpath inet thread' curl http://example.com » .

該實用程序適用於自 RHEL6 以來的所有 Linux 發行版 並且不需要root訪問權限。 此外,基於 cosmopolitan 庫,提供了一個 API 用於管理 C 語言程序代碼中的限制,除其他外,它允許創建 enclave 以選擇性地限制與應用程序的某些功能相關的訪問。

過去已經有一些開發人員嘗試過這個。 我不會點名,因為這些項目中的大多數都沒有完成。 對於 SECOMP,在線教程只解釋瞭如何將系統調用列入白名單,因此大多數人在弄清楚如何過濾參數之前就失去了興趣。 向前推進的項目也有一些疏忽,比如允許更改 setuid/setgid/sticky 位。 因此,不應使用任何當前的替代方案。 我認為這種努力使我們比以往任何時候都更接近擁有承諾()。

實現不需要內核更改:實用程序約束被轉換為 SECCOMP BPF 規則並使用 Linux 的本機系統調用隔離機制進行處理。 例如,調用 promise("stdio rpath", 0) 將轉換為 BPF 過濾器

最後,如果你有興趣了解更多,可以諮詢詳情 在下面的鏈接中。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。