深入 Adobe Reader 保護模式 —— 第一部分 —— 設計

原作者:Liz McQuarrie, Ashutosh Mehra, Suchit Mishra, Kyle Randolph, Ben Roger
譯者:lordVice
校對: StrokMitream
看雪翻譯小組

介紹

我是 Kyle Randolph, 和我一起的還有負責 Acrobat 系列產品的安全團隊, 這些產品中就包含今天我要討論的, Adobe Reader。我將講解七月份剛剛發布 的應用于 Adobe Reader 保護模式中新的沙箱技術,這是系列文章中的第一篇。我們將帶你了解沙箱為了遏制惡意代碼執行而設計的結構,以及它的運作和各個組件之間的通信過程。

什么是沙箱

沙箱 是一種可以將應用程序放在一個受限制的環境中運行的技術,其中一些特定的行為是被禁止 的(如安裝或刪除文件,或更改系統信息)。在 Adobe Reader 中,“沙箱”(即保護模式) 提供了更強的防護,使得 PDF 中包含的惡意代碼會被遏制,并阻止對用戶系統的提權行為。

Adobe Reader沙箱利用操作系統的安全控制功能將進程執行限制在最低的權限下。 因此,可能被攻擊者控制的進程只能執行有限的動作,而且必須通過一個獨立且可靠的進程接觸到文件。這個設計有三個主要的效果:

  • 所有的 PDF 進程如 PDF 和圖片的解析,JavaScript 運行,字體渲染和 3D 渲染 都在沙箱中進行。
  • 進程需要在沙箱外進行一些行為,必須通過一個叫做“broker process”可信的代理來進行。
  • 該沙箱首次隔離了兩個安全主體:用戶主體,即當前登錄用戶的運行環境; 以及** PDF 主體**,是一個隔離的進程,用于解析和渲染 PDF。這個分隔沙箱進程、其余的當前用戶會話及操作系統的分隔帶,是構建在進程級的可信邊界之上的。

這個設計的目的在于將所有潛在的惡意數據在一個受限的 PDF 主體的環境中處理, 而不是在一個擁有完全權限的用戶主體下進行。正如下圖所示,進程間通訊(IPC) 會在沙箱的 broker 需要以用戶主體,而非 PDF 主體進行一些行為時被啟用,例如調用一個 操作系統的 API 或獲取某個文件的寫權限。

沙箱技術對于大多數企業應用來說是很新的技術,因為它很難應用于已經部署有眾多成熟軟件(擁有上百萬行代碼的軟件)的環境中。最近在產品中體現出沙箱概念的軟件包括 Microsoft Office 2007 MOICE, Google Chrome, 以及 Office 2010 保護模式。問題的難點在于如何在啟動沙箱的同時,維持用戶所依賴的功能仍能夠運行。而終極目標是主動地提供一個支持漏洞發現與修復的高水平防護。

設計原則

沙箱的設計中包括了幾個安全的最佳實踐:

  • 利用現有的操作系統安全架構: Adobe Reader 依賴于 Windows 操作系統的安全特性,例如受限的 token,任務對象以及低操作權限。
  • 利用現有的實現: Adobe Reader 沙箱建立于 Google Chrome 沙箱之上,并且也將 Microsoft Office 2010 保護模式加入參考之中。
  • 堅持最低權限的原則: 所有的進程(可執行代碼)僅能在其合理的目的下接觸到必需的資源。
  • “不信任”推定: 在驗證合法性之前,假設所有于沙箱之外的數據通信都是潛在的惡意數據。

Reader 沙箱提供的漏洞緩解

為了便于此次的探討,讓我們假設攻擊者能夠通過一個未知的漏洞在 Adobe Reader 中執行任意的代碼,并且能夠引誘用戶打開一個郵件附件里的 PDF 文件,或者打開一個攻擊者控制的網站中的 PDF。曾經,僅僅雙擊并渲染 PDF 文件就能夠完全地控制用戶的電腦。例如,攻擊者知道并能夠利用一個未知的字體 JavaScript API 內存溢出漏洞,或者字體組件中的整數溢出漏洞。一旦完成了exploit,很顯然,攻擊者就會通過垃圾郵件、廣告,或者放在受歡迎的網站上來傳播,引誘受害者們打開武裝好的 PDF 文件。

當前的目標: Adobe Reader 的沙箱架構初步聚焦于阻止攻擊者做兩件事情:

  1. 在用戶的電腦上安裝惡意軟件
  2. 在用戶使用其它程序的時候,監控用戶的鍵盤輸入

如果攻擊者能夠成功地避開上述的防御,那么他將能夠對用戶造成嚴重的損害。例如,一旦攻擊者能夠在用戶的電腦上安裝惡意軟件,那么他就可以任意地修改文件系統和注冊表,并且還有可能安裝客戶端來實現網絡上的協同攻擊。另一個場景下,當攻擊者可以監控用戶的鍵盤輸入時,他就可以嘗試偷取機密和敏感信息,如密碼和信用卡信息。

所以簡單來講,Adobe Reader 沙箱與 Google Chrome 沙箱類似,不允許攻擊者在用戶的文件系統上安裝永久或臨時的惡意軟件,并阻止攻擊者獲得對用戶電腦的控制。這個與我們的設計理念——最低權限相符:一個漏洞可以用于運行一些程序但并不能對用戶的電腦進行惡意行為,因為它的權限被完全隔離在了高度受限的沙箱環境中。總而言之,這極大地減小了 Adobe Reader 的攻擊面。

局限

沙箱對于操作系統的依賴意味著它的表現可能取決于操作系統的漏洞。正如 Google Chrome 沙箱,Adobe Reader 保護模式利用了 Windows 安全模型以及操作系統提供的安全措施。這個內在的依賴性意味著沙箱并不能夠防護操作系統的弱點或漏洞。然而,當程序運行在沙箱中時,它可以在一定程度上降低漏洞利用的嚴重程度,因為沙箱屏蔽了許多常用的攻擊向量。

我們的第一版沙箱設計并沒有對以下方面進行保護:

  • 對文件系統和注冊表在未授權的情況下進行讀取。我們計劃在未來的版本中解決這一問題。
  • 網絡權限。我們正在對未來能夠限制網絡權限的方法進行調查研究,
  • 對粘貼板的讀寫權限
  • 不安全的操作系統配置

根據 Windows 沙箱化的說明, Windows 沙箱的最后一部分是用獨立的桌面進行用戶界面(UI)的渲染。我們不采用這樣的方法因為改變 Adobe Reader 很麻煩。取而代之的是,我們通過列出在使用同一個桌面時可能的攻擊方向,如粉碎攻擊(shatter attack)和 SetWindowsHookEx DLL 注入攻擊。這些攻擊可以被多種方法避免,比如對沙箱中的任務目標使用低完整性和限制,這將會在之后的篇章中討論到。

結束語

這總結了對 Adobe Reader 保護模式沙箱的架構和局限的概覽。在之后的篇章中,我們將會探索沙箱的進程和 broker 進程的更多詳細信息,以及它們的進程間交流(IPC)技術。最終,我們會對在 Adobe Reader 上用于驗證的安全測試進行一些評價。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278091.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278091.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278091.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java泛型主題討論

說明:在學習泛型這一知識點中,主要參考自《瘋狂Java講義》第7章P307-P330的泛型內容,因為是跳著閱讀,所以前面的一些名詞不是特別清楚,這里也做出適當備注,供自己識記與理解。 1.泛型 理解:說到…

初學Vue.js,從頭來過~

之前上課也學過vue.js,但是一遍過下來,實話,沒有記住什么,所以決定自己在對照著文檔過一遍,所以之后會弄一些基礎的東西,還請大神們莫噴~~~~今天先給平臺打一個預防針,Young C 要來啦~~ 吼吼&…

從Microsoft Teams技術棧看前端技術發展趨勢

在前不久的微軟美國一年一度的Ignite大會上,微軟宣布Microsoft Teams是微軟歷史上發展最快的應用。它將取代Skype for business,成為語音視頻協作的主打產品。 我也有幸在上個月微軟中國年度技術大會Tech Summit 2018上被邀請作為講師講解基于Teams平臺…

LeetCode 最大正方形

在一個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,并返回其面積。 示例: 輸入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0輸出: 4解法:判斷以某個點為正方形右下角時最大的正方形時,那它的上方,左方和左上…

solidity字符串拼接

如果你希望馬上開始學習以太坊DApp開發,可以訪問匯智網提供的出色的在線互動教程: 以太坊DApp實戰開發入門去中心化電商DApp實戰開發當你開始學習使用solidity開發以太坊智能合約之后,很快你會碰到一個問題: 在solidity中該如何拼…

Confluence Cloud的Teams Message Extension

Confluence Cloud的Message Extension現在正式登入Microsoft Teams。 它可用于團隊頻道和私人聊天,使您的對話更具描述性和信息性。 從Microsoft Teams應用商店獲取Confluence Cloud應用程序并連接到Confluence Cloud實例。 連接后,您將能夠搜索Conflue…

45 | 打蛇打七寸:精準測試

轉載于:https://www.cnblogs.com/lmx0621/p/10614966.html

Teams App統計

周末閑來無事,統計了一下Teams的app商店里的app ( Teams App Store )。截至到現在(2018年11月)一共有145個app。要注意一點:如果app不是公開的(即單獨安裝到Office365租戶里,并沒有提交到office store&…

你必須要懂的APK瘦身知識

隨著業務復雜度的逐漸增加,代碼、資源也在不斷的增加,此時你的APP大小也在增加。從用戶層面來說,面對動輒幾十兆的APP來說在非WIFI情況下還是會猶豫要不要下載,不下載你就可能因此失去了一個用戶。從公司層面來講,流量…

DHT網絡

(基礎技術) 現在有一種方法,可以通過磁力鏈接,例如magnet:?xturn:btih:0482e0811014fd4cb5d207d08a7be616a4672daa,就可以獲取BT文件。 這個是通過DHT網絡來實現的。 DHT網絡是一個去中心化的,分布式信息存儲系統。 存儲的信息就…

Java基礎 Day04(個人復習整理)

分支結構 2、switch語句 因為if語句的級聯式最多只會處理三種情況,如果出現多情況 1>可以繼續使用if語句的級聯式,但是可能代碼的可讀性就會變差。  2>采用switch語句來解決。 switch語法格式: switch (存在多種情況的變量) {case 值…

java如何獲取一個double的小數位數

前言 看標題是不是覺得這是一個很簡單的問題,我一開始也是這么認為的,但是實際情況下,在各種情況下我們都進行了測試,發現很多實際情況是無法不盡如人意的。 方法分析 當前能想到的比較容易有下面幾種 1、直接使用double處理 2、將…

Node文件模塊

在上一篇文章中有提到,Node模塊分為核心模塊和文件模塊,接下來就簡單總結一下文件模塊。 文件模塊則是在運行時動態加載,需要完整的路徑分析、文件定位、編譯執行過程、速度相比核心模塊稍微慢一些,但是用的非常多。這些模塊需要我…

PHP GD庫解析一張簡單圖片并輸出

這里只演示一下2種顏色值的圖片&#xff0c;簡單描述下概念。 首先要安裝下GD庫。否則下面的代碼運行不了。 $size getimagesize(2.png); // 獲取圖片大小 $res imagecreatefrompng(2.png); // 獲取指定圖片的資源對象for ($i 0; $i < $size[1]; $i) {for ($j 0; $j &…

Permutations CodeForces - 736D (矩陣逆)

對于刪除每個對(x,y), 可以發現他對答案的貢獻為代數余子式$A_{xy}$ 復習了一下線代后發現代數余子式可以通過伴隨矩陣求出, 即$A_{xy}A^*[y][x]$, 伴隨矩陣$A^*|A|A^{-1}$可以通過高斯消元$O(\frac{n^3}{\omega})$求出 #include <iostream> #include <algorithm> …

開發Teams的messaging extension

什么是Messaging Extension Messaging Extension是微軟Teams的一種十分有用的擴展方式。可以讓用戶發送adaptive cards。具體的說明不在這里展開了。可以閱讀微軟官方的詳細說明&#xff1a; https://docs.microsoft.com/en-gb/microsoftteams/platform/concepts/messaging-e…

歸并排序(轉)

轉載自&#xff1a;https://www.cnblogs.com/chengxiao/p/6194356.html 歸并排序&#xff08;MERGE-SORT&#xff09;是利用歸并的思想實現的排序方法&#xff0c;該算法采用經典的分治&#xff08;divide-and-conquer&#xff09;策略&#xff08;分治法將問題分(divide)成一些…

Site24x7 為Teams提供可智能 DevOps

我們生活在一個云的時代, SaaS 應用程序每天都在推動我們的生產力。作為一個消費者, 很難想象如果你最喜歡的應用無法訪問&#xff0c;即使只是一秒鐘無法訪問。作為 SaaS業務, 更難以想象您的服務面臨停機, 每一分鐘停止服務都會花費大量的資金, 當然還損失客戶的信任。Site24…

XUbuntu22.04之跨平臺容器格式工具:MKVToolNix(二百零三)

簡介&#xff1a; CSDN博客專家&#xff0c;專注Android/Linux系統&#xff0c;分享多mic語音方案、音視頻、編解碼等技術&#xff0c;與大家一起成長&#xff01; 優質專欄&#xff1a;Audio工程師進階系列【原創干貨持續更新中……】&#x1f680; 優質專欄&#xff1a;多媒…

redis集群搭建踩坑筆記

推薦參考教程&#xff1a;https://blog.csdn.net/pucao_cug/article/details/69250101 錯誤&#xff1a; from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require from /usr/local/redis-3.0.6/src/redis-trib.rb:25:in <main> 解決&#xff1a; g…