Google開設了一個系統來為C / C ++創建沙箱環境

谷歌

幾天前 谷歌宣布開放沙盒API項目允許您自動創建沙箱的過程,以隔離執行任意 C 和 C++ 庫。

將代碼與庫隔離 允許防止對庫提供的處理程序可能發生的攻擊,創建一個額外的屏障,以防您的代碼中存在可通過操縱進入庫的外部數據而被利用的漏洞。 該代碼是在 Apache 2.0 許可證下開源的。

隔離或者是在 sandbox2 運行時內部使用完成的,其中使用了命名空間、cgroups 和 seccomp-bpf。

代碼交付到在單獨進程中運行的沙箱,用於訪問系統調用和資源以及文件和網絡連接都是有限的。

進程只能訪問運行隔離代碼直接所需的系統功能。

Sandbox2定義了運行進程的組件或者,對其應用隔離規則並支持後續執行。

沙盒2 它可以與 Sandbox API 分開使用,不僅可以隔離庫,還可以隔離任意進程。

除了增強保護之外,在單獨進程中刪除代碼的一個積極點是可以單獨調節庫和 CPU 的內存消耗限制,以及針對故障的保護:庫中的故障不會導致整個應用程序崩潰。

關於沙盒 API

Sandboxed API是Sandbox2的插件 這使得可以輕鬆傳輸現有庫以在隔離模式下運行。

沙盒 API 提供中間件接口,允許您在沙箱環境中運行庫代碼,以及在沙箱環境中組織對庫的調用,並保證將庫的結果傳遞給主程序。

Se 通過基於ProtoBuffs協議的專門RPC訪問隔離庫。

A 為庫開發人員提供了一組允許訪問變量的選項、文件描述符、緩衝區和與基本應用程序隔離的庫函數,包括用於自動和受控內存同步以共享數組和結構的工具。

sapi概述

當解析此類數據的軟件庫足夠複雜時,它可能會成為某些類型的安全漏洞的受害者:內存損壞錯誤或與解析邏輯相關的其他類型的問題(例如,路徑遍歷問題)。 這些漏洞可能會產生嚴重的安全影響。

另外, 提供 API 來監視隔離進程的操作並在發生故障時重新啟動它們。

對於隔離庫,會自動為 Bazel 彙編系統和程序接口(SAPI)生成隔離函數的註釋代碼,用於基本流程和隔離流程之間的交互。

開發人員還必須創建一個包含隔離規則的頭文件,用於定義所有允許的系統調用和操作。 (讀、寫、打開文件、時間訪問、安裝信號處理程序的能力、通過 malloc 支持內存分配等)。

庫應有權訪問的文件和目錄是單獨確定的。

安裝

目前,該項目僅適用於 Linux,但將來他們承諾增加對 macOS 和 BSD 系統的支持,並且從長遠來看 - 以及對 Windows 的支持。 是的 如果你想安裝沙盒 api,你可以按照給出的說明進行操作 在此鏈接中。

計劃中還指出 隔離 C 和 C++ 以外語言的庫的可能性, 額外的運行時隔離支持 (例如基於硬件虛擬化)以及使用 CMake 和其他構建系統的能力(支持現在僅限於 Bazel 構建系統)。

來源: https://security.googleblog.com


發表您的評論

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

*

*

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