999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于多安全機制的輕量級Linux沙箱設計與實現

2023-12-11 10:02:42崔曉龍簡川杰
實驗室研究與探索 2023年9期
關鍵詞:進程程序用戶

崔曉龍, 簡川杰, 劉 欣, 張 敏

(北京科技大學計算機與通信工程學院,北京 100083)

0 引 言

隨著計算機應用的發展和普及,人們越來越多地利用計算機來存儲和處理各種數據,其中不乏大量的敏感數據,惡意獲取這些數據將對安全造成極大的威脅?;ヂ摼W上惡意應用程序數量每年都在快速增長,由惡意軟件引起的本地感染已經達到了相當龐大的數量并呈現逐年上升的態勢,黑客通常將惡意應用程序偽裝為普通應用程序,將其發布到網絡上,欺騙計算機用戶偶然在本地下載和執行這些應用程序,給黑客獲得未經授權訪問高權限系統資源的機會,并獲取或操縱存儲在用戶計算機上的敏感數據。

計算機系統面臨不同種類惡意程序或代碼的威脅,沙箱技術將為解決這類問題提供一種可行性方案。將網絡上安全性未知的程序運行在一個虛擬空間,該虛擬空間與真實系統環境類似,同時將未知程序和真實環境隔離,如果在程序運行過程中發現異常,則認為該未知程序是惡意程序,將該程序標志下來后,對運行環境進行回滾操作以恢復到原來的狀態,這樣,無論病毒或者惡意程序如何運行,都無法對實際系統造成損害和威脅[1]。在沙箱運行過程中,用戶希望沙箱所占用的額外開銷盡可能地小,這樣用戶將感受不到沙箱的存在。

1 相關技術

早期的一些沙箱機制并不存在于Linux 系統中,比如Janus和Mapbox都是出現在Solaris系統上,它們都為Linux 上的沙箱機制提供了一些可借鑒的思路[2]。

Janus是最早基于系統調用插入的沙箱機制之一,當調用要檢查的系統時,Janus將跟蹤進程置于休眠狀態并檢查其配置文件(也可以稱為安全策略),以決定是否允許當前系統調用。Janus 和本文實現的工具之間存在根本性差異,它在Solaris 操作系統中使用proc接口實現,因為ptrace系統調用易受競爭條件的影響,并且在使用ptrace時中止系統調用很麻煩;另外,對于所有進程只有一個安全配置文件,用戶僅能建立一個全局安全策略;Janus不會解析相關路徑并相應地檢查系統調用,而是中止所有試圖使用相對路徑訪問資源的系統調用[3]。

Bluebox使用系統調用插入來捕獲系統調用,通過使用ptrace接口強制執行以前指定的安全規則。它不允許用戶通過圖形界面交互生成安全策略,使用預先設置的靜態安全策略,這樣用戶就不能恢復由不良靜態策略所造成的結果[4]。

Mapbox是一個基于系統調用插入的工具,它在指定和執行安全規則方面的工作方式截然不同。它是為Solaris操作系統實現的,它利用Solaris操作系統的系統調用攔截接口(proc)來跟蹤和操作系統調用[5]。Mapbox不是為不同的流程提供策略文件,而是對許多應用程序的行為進行分類,并將類似的應用程序行為分組在一起,以便根據它們的預期功能對每類應用程序實施安全規則。當計劃使用Mapbox 運行程序時,用戶配置策略文件并為目標程序分配一個或多個行為類,這些行為類指定目標程序可以訪問哪些系統資源[6]。例如,目標應用程序在Mapbox 中標記了reader,則意味著它只能讀取指定的某些文件,并不能執行任何寫入操作或網絡操作。

SELinux是Linux中強制訪問控制安全模塊,它與Linux 內核集成,如Ubuntu 或Red Hat Enterprise。SELinux主要作用就是最大限度地減小系統中服務進程可訪問的資源(最小權限原則),如果用戶不希望在任何時候運行SELinux,那么每次想要運行沙箱應用程序時,在系統啟用和禁用SELinux 都會很麻煩。此外,對于臨時系統用戶配置ACL策略通常很困難。它不允許以交互方式生成安全策略,不能為用戶提供跟蹤應用程序活動或詳細日志記錄以進行執行后的分析[7]。

Seccomp機制用于限制應用程序可使用系統調用,增加系統的安全性。啟用了Seccomp模式,則目標進程將在其功能非常有限的安全狀態下運行。Seccomp是一種可擴展的工具,可以白名單形式過濾系統調用,性能上也較好[8]。

2 沙箱功能設計

用戶直接在操作系統運行未知程序是一個相當危險的操作,存在系統資源惡意被消耗的風險,考慮惡意程序在運行過程中的特點,沙箱主要功能設計如圖1所示。

圖1 沙箱主要功能設計

作為一款安全工具,沙箱應該具有以下特性:異常行為和(或)系統入侵檢測、富有表現力的安全策略、交互式安全策略生成、易用性、用于執行后分析的日志記錄功能。

沙箱要實現的功能:

(1)限制未知程序的運行時間。

(2)限制未知程序的運行內存。

(3)及時了解程序的運行狀態。

(4)阻止未知程序運行時出現危險操作。

2.1 程序運行時間

程序運行時間分為用戶可感知的程序運行時間和程序所實際占用的CPU 時間。之所以存在兩種不同的時間是因為用戶使用的操作系統大多數是分時多任務操作系統,盡管目前大多數系統都是多核心CPU,但目前只考慮單核心CPU這種簡單的情況,大多情況下這種操作系統內的進程并不是一下就運行完成的,可能存在被進程調度的情況,因為任意時刻只可能存在一個正在運行的進程,其他進程就需要等待,所以一個進程的實際運行時間可能會大于該進程占用CPU運行的時間。在限制程序的運行時間時需要清楚限制的是程序運行的實際時間還是程序運行所占用的CPU時間。

給沙箱運行的程序設置一個較寬松的運行時間,以確保程序可正常運行又不讓惡意程序有占用較多的系統資源的機會。

2.2 程序運行內存

進程實際運行所占用的物理內存包含進程使用系統提供的動態鏈接庫部分的內存,把所有的進程實際占用的物理內存加起來可能會超過機器的實際物理內存。在對內存進行限制的時候,可根據自身系統情況考慮一個限制沙箱內程序使用的內存值,確保程序能夠正常運行又不至于消耗過多的系統資源。

2.3 進程狀態

沙箱需要能監控其中運行的未知程序的行為,對未知程序進程狀態進行跟蹤,需要了解進程到底是運行結束成功返回還是由于資源限制而導致進程提前結束,或者是進程要調用某個沙箱限制了的系統調用而被提前結束,這些行為都應該由沙箱監控,這就要對進程和資源進行監控,并且記錄進程結束時候的返回值。

2.4 系統調用限制

沙箱中進程的資源限制可以通過對進程的CPU占用時間和進程內存占用的限制來實現,而安全性限制需通過限制系統調用來進行。一些危險、常見可執行系統命令函數如remove、system 等以及網絡通信操作相關函數都需進行限制,否則有可能導致系統的關鍵信息泄露,這些都可以通過使用Seccomp 限制相關的系統調用來實現。

3 沙箱的實現

3.1 沙箱工作流程

沙箱接受通過命令行傳入未知來源的程序路徑作為參數,并在加載指定的安全策略之后,開始嘗試運行該未知來源的程序。沙箱主要工作流程如圖2 所示。

圖2 沙箱工作流程圖

3.2 沙箱安全機制

沙箱安全機制是沙箱最重要的功能,通過過濾系統調用來實現。系統調用是操作系統實現并提供給用戶來讓用戶能夠對底層硬件實現控制的一種編程接口[9]。當一個進程要調用系統的時候,操作系統會把相關參數放到CPU的寄存器中,比如系統調用號存在EAX寄存器中,EBX、ECX 和EDX 再分別存放一些其他的參數,調用軟中斷(int 0x80),讓CPU切換到內核態并開始執行對應的內核函數。

3.2.1 限制系統調用

Seccomp調用之后會作用于整個父進程和fork出來的子進程,只有在加載Seccomp的策略之后,沙箱才開始fork父進程執行未知程序。實現本沙箱時采用的是在加載Seccomp策略之后執行execve函數去執行未知程序,這個順序也是Seccomp的安全策略所要求的。因為后面執行程序需要使用到execve 這個系統調用,所以Seccomp也不能完全限制了execve 系統調用,本沙箱選擇對execve 系統調用進行參數的過濾,以此來限制execve[10]。

3.2.2 加載Seccomp

Seccomp是一種侵入式的加載策略,如果程序已經執行結束之后再加載Seccomp 策略毫無意義,所以應該在execve之前加載Seccomp。由于Seccomp 采用白名單加載策略,如果execve 在Seccomp 之后的話就需要把Seccomp也加入系統調用的白名單里面,但是execve是一個很危險的系統調用,如果不加以限制那這很明顯是一個“繞過”[11]。Seccomp 可對系統調用的參數進行限制,通過對execve 系統調用的傳入參數進行一定的限制,只能執行沙箱所限制的文件路徑的文件。如圖3 所示,在加載Seccomp 策略的函數Seccomp_rule_add,第2 個參數不滿足策略的進程直接被kill掉;第3 個參數過濾的系統調用是execve;第4個參數需要過濾幾個參數,“1”表示只過濾1 個參數;后面的參數則是需要過濾的參數,如果第4 個參數為“1”,則表示有1 個需要過濾的參數,圖3 中是execve系統調用的第1 個參數被過濾。

圖3 限制execve系統調用參數流程圖

3.2.3 白名單機制

完成了加載Seccomp 時機的設計,要設計加載Seccomp時需要考慮哪些系統調用。對一些常見程序用strace 命令進行分析,得出如表1 所示的系統調用的白名單[12]。

表1 系統調用白名單

除了execve系統調用需要過濾參數,write系統調用也要進行參數的過濾。write系統調用中有一個參數是用來表示寫入的文件描述符,該參數為“0”“1”和“2”的時候,分別表示stdin、stdout 和stderr,大于3 表示某個已打開文件的文件描述符的值。之所以要限制write系統調用,是因為沙箱需要防止沙箱中的進程任意寫文件,該操作是危險的。如圖4 所示,和前面類似,這里限制了write系統調用的第1 個參數要小于等于2,即限制文件描述只能使用標準的輸入(stdin)和輸出(stdout)。

圖4 限制write系統調用參數流程圖

3.2.4 權限控制機制

Linux訪問控制權限分為3 組,分別為user、group和others。user是對文件所有者設定的權限;group 是對文件所屬組下面用戶設定的權限;others 是對既不是文件所有者也不是文件所屬組下面的用戶設定的權限。其中root用戶的權限是最高的,其他用戶的權限是可以劃分的。Linux下一切皆文件,所以進程同樣也是有權限劃分的,每個用戶都有一個UID 的值,文件組也有一個GID的值,一個運行中的進程在運行時會有UID和GID的值來標識,進程中也可以調用setuid和setgid函數分別來改變當前進程的UID 和GID 值,不過調用這兩個函數首先需要有root用戶的權限。如圖5 所示,沙箱采用了NOBODY 用戶的GID 和UID,這是權限非常低的用戶,采用這個用戶來運行沙箱進程,可以進一步避免在沙箱中運行未知程序帶來的危害。

圖5 設置進程UID和GID流程圖

4 沙箱的測試

在Ubuntu18.04 對沙箱進行安全和性能兩方面的測試:安全測試主要包含2 個程序,一個正常的安全程序和一個存在惡意系統調用的程序,分別運行在操作系統和沙箱中進行對比;性能測試選擇一個特殊的測試程序,即一個存在大量系統調用的程序,分別運行在本沙箱、其他沙箱和直接運行在操作系統中進行時間的對比。

4.1 安全測試

對安全性的測試,用一個正常的測試程序和一個包含惡意代碼的程序分別在操作系統上直接運行和通過沙箱運行來進行對比。

將正常測試程序直接運行在操作系統和沙箱,正常程序在操作系統環境和沙箱環境中均能正常的運行。正常程序直接在操作系統中運行效果如圖6所示。

圖6 正常測試程序直接運行

在沙箱環境中運行效果如圖7 所示,說明沙箱對操作系統運行正常程序進行了較好的模擬。

圖7 正常測試程序在沙箱中運行

將包含惡意代碼的程序在操作系統中運行,可以發現該惡意程序代碼運行成功,并獲取機器的shell,運行效果如圖8 所示。

圖8 包含惡意代碼的程序直接運行

將包含惡意代碼的程序運行在沙箱之中,可見,惡意程序被檢測出來,隨后進程停止運行,運行效果如圖9 所示,沙箱環境達到了發現惡意程序并中止進程的效果。

圖9 包含惡意代碼的程序在沙箱中運行

通過對比運行可以發現,沙箱可以阻止惡意程序的執行,并不影響正常程序的運行,保護系統正常運行不受影響。

4.2 性能測試

對性能測試,選擇使用一個存在大量系統調用的程序分別運行在本沙箱、一個使用ptrace 實現的沙箱和直接運行在操作系統上,對比運行時間。時間獲取采用wait3()函數獲取子進程運行時間,分別對3 個測試進行多次子進程運行來測試大量系統調用的程序的運行時間。進程運行時間見表2,可見,使用ptrace 實現的沙箱在存在大量系統調用的時候進程運行時間會較長,而本沙箱在系統調用量較大的時候程序的執行效率比不使用沙箱時略低。

表2 各種沙箱實現的性能對比

5 結 語

基于多種安全機制實現一個安全、輕量級的應用程序沙箱,以幫助Linux 系統用戶能夠安全使用應用程序。通過仔細研究Linux 內核提供的不同安全機制,選擇使用Linux 的Seccomp 接口,使一個進程能夠操作并完全控制另一個進程,結合多種安全機制實現一個沙箱系統,該系統根據定義的安全策略去檢測未知程序運行時是否存在危險行為,檢測到危險行為的進程將被終止,正常的進程就仿佛運行在操作系統,可以正常運行結束且效率不會受到較大影響。

猜你喜歡
進程程序用戶
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
主站蜘蛛池模板: 91精品国产丝袜| 亚洲色偷偷偷鲁综合| 亚洲av无码成人专区| 伊人欧美在线| 久精品色妇丰满人妻| 成人一区在线| 久久 午夜福利 张柏芝| 8090午夜无码专区| 996免费视频国产在线播放| 97青草最新免费精品视频| 88av在线| 久草热视频在线| 久久不卡国产精品无码| 亚洲AⅤ波多系列中文字幕| 一区二区三区国产精品视频| 免费观看国产小粉嫩喷水 | 欧日韩在线不卡视频| 日韩精品一区二区三区swag| 婷五月综合| 国产第三区| 亚洲中久无码永久在线观看软件 | 日本高清免费一本在线观看| 亚洲国产精品不卡在线| 无码国产伊人| 亚洲最大情网站在线观看| 毛片网站免费在线观看| 国产无码制服丝袜| 网久久综合| 成人午夜在线播放| 婷婷99视频精品全部在线观看 | 日韩黄色大片免费看| 九九久久精品国产av片囯产区| 黄色网在线| 久久精品这里只有精99品| 少妇被粗大的猛烈进出免费视频| 亚洲一区黄色| 91精品人妻一区二区| 99久久精品美女高潮喷水| 亚洲欧美成人综合| 日韩在线第三页| 爆乳熟妇一区二区三区| 日本免费新一区视频| 精品久久久无码专区中文字幕| 999国产精品永久免费视频精品久久 | AV天堂资源福利在线观看| 国产成人免费视频精品一区二区| 白浆视频在线观看| 亚洲一级毛片在线观播放| 国产99在线| 欧美一区日韩一区中文字幕页| 中文精品久久久久国产网址 | 国产精品无码在线看| 熟妇无码人妻| 综合社区亚洲熟妇p| 精品国产网| 成人年鲁鲁在线观看视频| 国产在线欧美| 无码网站免费观看| 午夜激情福利视频| 国产一级裸网站| 久久久久人妻一区精品色奶水| 欧美a网站| 茄子视频毛片免费观看| 久久无码av三级| 亚洲人成影视在线观看| 国产中文一区a级毛片视频| 成年免费在线观看| 中文字幕 欧美日韩| 2020精品极品国产色在线观看| 国产第二十一页| 欧美69视频在线| 欧美日韩午夜| 成人噜噜噜视频在线观看| 亚洲a级毛片| 一本无码在线观看| a级毛片毛片免费观看久潮| 国产三级韩国三级理| 亚洲色图综合在线| 亚洲中文字幕在线一区播放| 一级爆乳无码av| 亚洲欧洲综合| 亚洲欧美日韩中文字幕在线一区|