【Chromium中文文檔】OS X 沙箱設(shè)計

轉(zhuǎn)載請注明出處:
https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh/General_Architecture/OSX_Sandbox_design.html

全書地址
Chromium中文文檔 for https://www.chromium.org/developers/design-documents
持續(xù)更新ing,歡迎star
gitbook地址:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//
github地址: https://github.com/ahangchen/Chromium_doc_zh

這個文檔描述了Mac OS X上的進程沙箱機制照藻。

背景

沙箱將進程視為一種惡劣的環(huán)境闷袒,因為進程任何時候都可能被一個惡意攻擊者借由緩沖區(qū)溢出或者其他這樣的攻擊方式所影響。一旦進程被影響岩梳,我們的目標就變成了囊骤,讓這個有問題的進程能訪問的用戶機器的資源越少越好,并盡量避免在標準文件系統(tǒng)訪問控制以外冀值,以及內(nèi)核執(zhí)行的用戶/組進程控制相關(guān)的行為也物。

查看概述文檔了解目標與整體架構(gòu)圖表。

實現(xiàn)

在Mac OS X上列疗,從Leopard版本開始滑蚯,每個進程通過使用BSD沙箱設(shè)施(在一些Apple的文檔中也被成為Seatbelt)擁有自己的權(quán)限限制。這由一系列獨立的API調(diào)用組成抵栈,sandbox_init()告材,設(shè)置進程彼時的訪問限制。這意味著即使新的權(quán)限拒絕訪問任何新創(chuàng)建的文件描述符古劲,之前打開的文件描述符仍然生效斥赋。我們可以通過在進程啟動前正確地設(shè)置來利用這一點,在我們將渲染器暴露給任何第三方輸入(html产艾,等等)前疤剑,切斷所有訪問滑绒。

Seatbelt不會限制內(nèi)存分配,多線程隘膘,或者對先前打開的系統(tǒng)設(shè)施的訪問疑故。因此,這應(yīng)該不會影響其他的需求或者嚴重影響我們的IPC設(shè)計弯菊。

OS X提供了對緩沖區(qū)溢出提供了額外的保護纵势。在Leopard中,棧被標志為不可執(zhí)行內(nèi)存管钳,因此更不易被作為執(zhí)行惡意代碼的攻擊方向钦铁。這不能避免堆的內(nèi)存溢出,但對于64位應(yīng)用蹋嵌,除非內(nèi)存的一部分被顯式標識為可執(zhí)行,否則Leopard不允許任何執(zhí)行代碼的企圖葫隙。隨著我們將來轉(zhuǎn)入64位渲染器進程栽烂,這會變成另一個吸引人的安全特性。

sandbox_init()支持預(yù)定義沙箱訪問限制和提供更精細控制的沙箱配置腳本恋脚。

Chromium使用的自定義沙箱配置在源代碼樹的.sb文件中腺办。

我們定義了下面這些配置文件(路徑相對于源代碼根目錄):

  • content/common/common.sb - 用于所有沙箱的常用安裝
  • content/renderer/renderer.sb - 用于擴展和渲染器進程。允許訪問字體服務(wù)器糟描。
  • chrome/browser/utility.sb - 用于工具進程怀喉。允許訪問單一可配置目錄。
  • content/browser/worker.sb - 用于工作進程船响。限制度最高 - 除了加載系統(tǒng)庫之外躬拢,沒有文件系統(tǒng)訪問權(quán)限。
  • chrome/browser/nacl_loader.sb - 用戶允許不受信任的原生客戶端代碼(例如见间,“user”)聊闯。

一個讓我們不愉快的點是,沙箱進程通過OS X系統(tǒng)API調(diào)用米诉。而且沒有每個API需要哪些權(quán)限的文檔菱蔬,比如它們是否需要訪問磁盤文件,或者是否會調(diào)用沙箱限制訪問的其他API史侣?目前拴泌,我們的方法是,在打開沙箱前惊橱,對任何可能有問題的API調(diào)用做“熱身”蚪腐。例如,顏色配置和共享庫可以在我們鎖定進程前從磁盤加載税朴。

SandboxInitWrapper::InitializeSandbox()是初始化沙箱的主要入口削茁,它按以下步驟執(zhí)行:

  • 判斷當前進程的類型是否需要沙箱化宙枷,如果需要,判斷需要使用哪種沙箱配置茧跋。
  • 通過調(diào)用sandbox::SandboxWarmup() “熱身”相關(guān)"系統(tǒng)API慰丛。
  • 通過調(diào)用sandbox::EnableSandbox()啟動沙箱。

調(diào)試

OS X沙箱實現(xiàn)支持下面這些標志位:

  • --no-sandbox - 關(guān)閉整個沙箱
  • --enable-sandbox-logging - 關(guān)于哪個系統(tǒng)調(diào)用正在阻塞的詳細信息被記錄到syslog

Debugging Chrome on OS X里有更多關(guān)于調(diào)試和Mac OS X 沙箱API診斷工具的文檔瘾杭。

擴展閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诅病,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子粥烁,更是在濱河造成了極大的恐慌贤笆,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讨阻,死亡現(xiàn)場離奇詭異芥永,居然都是意外死亡,警方通過查閱死者的電腦和手機钝吮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門埋涧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奇瘦,你說我怎么就攤上這事棘催。” “怎么了耳标?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵醇坝,是天一觀的道長。 經(jīng)常有香客問我次坡,道長呼猪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任砸琅,我火速辦了婚禮郑叠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘明棍。我一直安慰自己乡革,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布摊腋。 她就那樣靜靜地躺著沸版,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兴蒸。 梳的紋絲不亂的頭發(fā)上视粮,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音橙凳,去河邊找鬼蕾殴。 笑死笑撞,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的钓觉。 我是一名探鬼主播茴肥,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荡灾!你這毒婦竟也來了瓤狐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤批幌,失蹤者是張志新(化名)和其女友劉穎础锐,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荧缘,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡皆警,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了截粗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片信姓。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖桐愉,靈堂內(nèi)的尸體忽然破棺而出财破,到底是詐尸還是另有隱情掰派,我是刑警寧澤从诲,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站靡羡,受9級特大地震影響系洛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜略步,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一描扯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧趟薄,春花似錦绽诚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至羡铲,卻和暖如春蜂桶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背也切。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工扑媚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腰湾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓疆股,卻偏偏與公主長得像费坊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子押桃,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容