国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Linux的沙箱評測系統(tǒng)內(nèi)核的設(shè)計與實現(xiàn)

2022-08-29 02:21王碩鄭曉東張強
現(xiàn)代信息科技 2022年12期
關(guān)鍵詞:調(diào)用評測內(nèi)核

王碩,鄭曉東,張強

(齊齊哈爾大學(xué) 計算機與控制工程學(xué)院,黑龍江 齊齊哈爾 161006)

0 引 言

在線代碼評測系統(tǒng)是一種在程序設(shè)計競賽中用于檢測源代碼正確性的在線系統(tǒng)。在評測系統(tǒng)中,用戶提交惡意代碼導(dǎo)致的服務(wù)器文件系統(tǒng)損壞、數(shù)據(jù)泄漏等計算機安全類問題經(jīng)常出現(xiàn)。穩(wěn)定運行的在線代碼評測系統(tǒng)可以為用戶帶來良好的使用體驗,操作系統(tǒng)環(huán)境對評測系統(tǒng)運行的穩(wěn)定性有重要的影響。以往的在線代碼評測系統(tǒng)(Online Judge, OJ)多數(shù)運行于Windows 系統(tǒng)中,Linux 生產(chǎn)環(huán)境相較于Windows有著成本更低、穩(wěn)定性更強、安全性更可靠,讀、寫、執(zhí)行等權(quán)限管理更嚴(yán)格等優(yōu)勢。因此本文結(jié)合Linux 操作系統(tǒng)的優(yōu)良特性和其內(nèi)核提供的相關(guān)虛擬化技術(shù)、系統(tǒng)調(diào)用攔截等技術(shù),綜合實現(xiàn)了用于編譯用戶上傳的源代碼、執(zhí)行生成的二進(jìn)制文件、并對結(jié)果做出判定的沙箱評測系統(tǒng)內(nèi)核。沙箱評測系統(tǒng)內(nèi)核即在線評測系統(tǒng)的核心功能模塊。

在Windows 操作系統(tǒng)中開發(fā)者多數(shù)采用應(yīng)用程序接口攔截技術(shù)(API Hook)甄別進(jìn)程中是否存在危險的系統(tǒng)調(diào)用;在Linux 操作系統(tǒng)中開發(fā)者多數(shù)使用容器技術(shù)或系統(tǒng)調(diào)用攔截技術(shù),實現(xiàn)對進(jìn)程中存在的惡意行為的監(jiān)控與阻斷。Linux 下的系統(tǒng)調(diào)用攔截技術(shù)有進(jìn)程追蹤(Process Trace, Ptrace)和帶有過濾器的安全計算模式(Secure Computing Mode-BSD Packet Filter, Seccomp-BPF)。Linux文件權(quán)限分配機制可以限制軟件的一部分讀、寫、執(zhí)行功能;改變根目錄(Change Root, Chroot)可以設(shè)定進(jìn)程可見的文件系統(tǒng)根目錄。單純使用文件權(quán)限分配機制和改變根目錄的方法構(gòu)建的評測系統(tǒng)內(nèi)核可能發(fā)生運行時權(quán)限泄露的問題。

目前一些優(yōu)秀的開源在線代碼評測系統(tǒng)通常采用比較原始的架構(gòu)方式,使用逐級應(yīng)用調(diào)用的方法,在配置運行參數(shù)后,直接將評測系統(tǒng)軟件置于主流的容器中運行。若運行由用戶提交的代碼編譯生成的軟件破壞了容器內(nèi)的環(huán)境,評測系統(tǒng)監(jiān)控軟件需要使用較長的時間恢復(fù)和重啟容器及容器內(nèi)的評測系統(tǒng)。如果這類評測系統(tǒng)在高并發(fā)的生產(chǎn)環(huán)境中運行,很可能發(fā)生操作系統(tǒng)內(nèi)存溢出、CPU 過載等問題。在評測一段安全性未知的代碼時,為了保障操作系統(tǒng)的安全,提高評測效率,設(shè)計一種由組合權(quán)限控制技術(shù)與沙箱技術(shù)構(gòu)成的、有著高效的任務(wù)調(diào)度策略的沙箱評測系統(tǒng)內(nèi)核,具有廣泛的適用性和極高的應(yīng)用價值。

1 安全防御的設(shè)計與實現(xiàn)

沙箱評測系統(tǒng)內(nèi)核在安全防御上組合使用了控制組(Control Groups, Cgroups)、命名空間(Name Space)和帶有過濾器的安全計算模式等Linux 提供的技術(shù)??刂平M按資源限制級別構(gòu)建不同分組,并將系統(tǒng)任務(wù)及其子任務(wù)隔離到相應(yīng)的分組中,修改或更新組內(nèi)的資源限制文件即可控制任務(wù)的內(nèi)存占用、CPU 消耗等;命名空間主要用于隔離進(jìn)程間通信、主機名等;帶有過濾器的安全計算模式指定系統(tǒng)調(diào)用攔截規(guī)則名單,并將規(guī)則名單交由Linux 內(nèi)核處理,從而快速準(zhǔn)確地限制進(jìn)程的系統(tǒng)調(diào)用,達(dá)到阻斷用戶程序的危險行為的目的。使用以上技術(shù)組合而成的具有安全防御功能的沙箱評測系統(tǒng)內(nèi)核,可以有效地阻止用戶代碼執(zhí)行非法的寫入、修改、刪除文件,以及連接網(wǎng)絡(luò)、在進(jìn)程間傳遞信息等惡意行為的發(fā)生,避免用戶進(jìn)程導(dǎo)致的操作系統(tǒng)及數(shù)據(jù)安全的問題出現(xiàn)。

如圖1所示,沙箱評測系統(tǒng)內(nèi)核在監(jiān)控用戶進(jìn)程執(zhí)行狀態(tài)時使用了Linux 內(nèi)核層和系統(tǒng)調(diào)用層的接口。其利用命名空間對網(wǎng)絡(luò)連接、用戶ID、進(jìn)程ID、進(jìn)程間通信、文件系統(tǒng)、主機名稱進(jìn)行統(tǒng)一的隔離;通過修改控制組內(nèi)的虛擬資源限制文件,控制進(jìn)程的內(nèi)存消耗、磁盤消耗、CPU 占用等;使用進(jìn)程資源限制函數(shù)對進(jìn)程資源的使用進(jìn)行嚴(yán)格的把控;選取系統(tǒng)級別的帶有過濾器的安全計算模式,攔截系統(tǒng)調(diào)用。該內(nèi)核在啟動時會從配置文件中獲取系統(tǒng)調(diào)用規(guī)則名單,并交由Linux 系統(tǒng)預(yù)處理。在沙箱評測系統(tǒng)內(nèi)核執(zhí)行用戶進(jìn)程的分支時,操作系統(tǒng)內(nèi)核會判斷用戶進(jìn)程的某個系統(tǒng)調(diào)用是否在規(guī)則名單中,從而杜絕用戶進(jìn)程中惡意行為的發(fā)生。

圖1 評測過程中的Linux 接口調(diào)用圖

2 整體設(shè)計與實現(xiàn)

沙箱評測系統(tǒng)內(nèi)核的主要功能是評測用戶上傳的代碼,對執(zhí)行結(jié)果做出判定,并阻斷用戶代碼執(zhí)行過程中存在的危險行為,保障操作系統(tǒng)的安全。該內(nèi)核可以被單點或多點部署,它通過網(wǎng)絡(luò)接口數(shù)據(jù)傳輸?shù)姆绞竭M(jìn)行任務(wù)的分發(fā)和結(jié)果的回傳。

沙箱評測系統(tǒng)內(nèi)核使用了改進(jìn)后的管道并發(fā)模型,實現(xiàn)了多用戶的并發(fā)評測。評測系統(tǒng)內(nèi)核任務(wù)調(diào)度,在宏觀的流程中以串行的方式進(jìn)行,并將任務(wù)拆分為編譯、運行、評測、反饋等子任務(wù),每個子任務(wù)都由相應(yīng)的子模塊進(jìn)行調(diào)度。子模塊在調(diào)度子任務(wù)過程中采用并行或并發(fā)的處理方式,每一個子任務(wù)的執(zhí)行結(jié)果都會被異步的回傳給沙箱評測系統(tǒng)內(nèi)核的調(diào)用者,由調(diào)用者進(jìn)行數(shù)據(jù)的統(tǒng)一處理。

沙箱評測系統(tǒng)內(nèi)核運行于Linux 環(huán)境中,其主要功能架構(gòu)圖及評測流程如圖2所示。

圖2 沙箱評測系統(tǒng)內(nèi)核主要功能架構(gòu)圖

系統(tǒng)評測流程具體為:

(1)評測API 模塊接收用戶提交的代碼,將其封裝成結(jié)構(gòu)化的評測任務(wù),并將評測任務(wù)發(fā)送至等待隊列準(zhǔn)備接受校驗。調(diào)度過程如圖3所示。

圖3 評測API 模塊的任務(wù)調(diào)度過程

(2)代碼校驗?zāi)K并發(fā)的從等待隊列中取出封裝好的評測任務(wù),進(jìn)行代碼結(jié)構(gòu)完整性等內(nèi)容校驗。若校驗成功,則將當(dāng)前評測任務(wù)發(fā)送至編譯隊列等待編譯。調(diào)度過程如圖4所示。

圖4 代碼校驗?zāi)K的任務(wù)調(diào)度過程

(3)代碼編譯模塊并發(fā)的從編譯隊列中取出評測任務(wù),在配置信息指定的編譯時長內(nèi)對評測任務(wù)中的代碼進(jìn)行編譯。若編譯成功,則將編譯評測代碼所生成的二進(jìn)制文件的路徑寫入當(dāng)前的評測任務(wù)中,并將該任務(wù)發(fā)送至執(zhí)行隊列,等待執(zhí)行;同時代碼編譯模塊會向評測信息拉取模塊發(fā)送拉取遠(yuǎn)端評測數(shù)據(jù)的請求。評測信息拉取模塊獲得遠(yuǎn)端的評測數(shù)據(jù)并存儲在本地的緩存中以待使用。調(diào)度過程如圖5所示。

圖5 編譯模塊的任務(wù)調(diào)度過程

(4)代碼執(zhí)行模塊并發(fā)的從執(zhí)行隊列中取出評測任務(wù),在定制的具有安全防御功能的沙箱環(huán)境中安全無害的執(zhí)行當(dāng)前評測任務(wù)中指定路徑下的二進(jìn)制文件。目標(biāo)程序在執(zhí)行過程中,代碼執(zhí)行模塊通過標(biāo)準(zhǔn)輸入將緩存中的評測數(shù)據(jù)寫入目標(biāo)進(jìn)程,并從標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯誤中收集目標(biāo)程序的輸出信息與錯誤信息,并將其與該評測數(shù)據(jù)中的正確答案一同寫入評測任務(wù),并發(fā)送至結(jié)果采集隊列。調(diào)度過程如圖6所示。

圖6 執(zhí)行模塊的任務(wù)調(diào)度過程

(5)評測模塊并發(fā)的從結(jié)果采集隊列中收集相應(yīng)目標(biāo)程序的單次執(zhí)行結(jié)果,首先判定代碼執(zhí)行時間是否在規(guī)定范圍內(nèi),其次通過外部比較器,對執(zhí)行結(jié)果與標(biāo)準(zhǔn)答案進(jìn)行逐字節(jié)對比,判定該評測任務(wù)是否通過。調(diào)度過程如圖7所示。

圖7 評測模塊的任務(wù)調(diào)度過程

(6)每一個小模塊執(zhí)行過后,都會向數(shù)據(jù)回傳模塊發(fā)送執(zhí)行狀態(tài),數(shù)據(jù)回傳模塊會向沙箱評測系統(tǒng)內(nèi)核的上游服務(wù)反饋執(zhí)行結(jié)果。數(shù)據(jù)傳遞如圖8所示。

圖8 數(shù)據(jù)回傳

3 沙箱評測內(nèi)核的測試與總結(jié)

以下分別對沙箱評測系統(tǒng)內(nèi)核的安全防御功能和軟件的主要功能進(jìn)行測試。

3.1 安全防御測試

如圖9所示,在root 用戶下,向沙箱評測系統(tǒng)內(nèi)核發(fā)送執(zhí)行init 0 命令的指令,init 0 命令為Linux 操作系統(tǒng)關(guān)機命令,關(guān)機對于Linux 操作系統(tǒng)中的服務(wù)來講是危害非常嚴(yán)重的系統(tǒng)調(diào)用。經(jīng)測試發(fā)現(xiàn),沙箱評測系統(tǒng)內(nèi)核已經(jīng)成功攔截init 0 的系統(tǒng)調(diào)用,且在控制臺中打印出了日志信息,該信息也會被記錄在日志文件中。如發(fā)生以上行為,沙箱評測系統(tǒng)內(nèi)核會通過郵件提醒其維護(hù)者“某用戶提交了危害操作系統(tǒng)的代碼或指令”。

圖9 評測內(nèi)核安全防御測試

3.2 主要功能測試

啟動沙箱評測系統(tǒng)內(nèi)核后,通過接口測試工具向評測系統(tǒng)內(nèi)核提交數(shù)據(jù),得到如圖10 所示的反饋,由圖中的日志信息可見,沙箱評測系統(tǒng)內(nèi)核的編譯、運行、評測等模塊是串行執(zhí)行的;在評測模塊中,如果同一份代碼有多個評測點,那么采用并發(fā)的評測方式。

圖10 沙箱評測 系統(tǒng)內(nèi)核服務(wù)執(zhí)行效果圖

3.3 測試總結(jié)

經(jīng)多次測試,該沙箱評測系統(tǒng)內(nèi)核能夠攔截用戶進(jìn)程中不利于操作系統(tǒng)和數(shù)據(jù)安全的操作,準(zhǔn)確的完成代碼評測任務(wù)。沙箱評測系統(tǒng)內(nèi)核的系統(tǒng)調(diào)用規(guī)則名單取決于特定的編程語言,對于算法競賽來說,每種編程語言可以放行的系統(tǒng)調(diào)用的數(shù)量有限。該沙箱評測系統(tǒng)內(nèi)核采用帶有過濾器的安全計算模式的白名單機制,嚴(yán)格地控制進(jìn)程的系統(tǒng)調(diào)用,為操作系統(tǒng)安全,數(shù)據(jù)安全帶來了保障。相較于使用主流容器技術(shù)的評測系統(tǒng)核心,該沙箱評測系統(tǒng)內(nèi)核原生的采用了Linux 提供的技術(shù),使用了改進(jìn)后的管道并發(fā)模型,降低了第三方軟件調(diào)用的成本,突破了任務(wù)調(diào)度上的瓶頸,提升了軟件整體性能。

4 結(jié) 論

通過Linux 內(nèi)核提供的虛擬化技術(shù)和系統(tǒng)調(diào)用攔截技術(shù)及大量的防御性編程工作,構(gòu)建起的沙箱評測系統(tǒng)內(nèi)核,可以嚴(yán)格地控制進(jìn)程的系統(tǒng)調(diào)用,準(zhǔn)確地限制CPU 時間占用、內(nèi)存資源占用、網(wǎng)絡(luò)連接。該沙箱評測系統(tǒng)內(nèi)核憑借執(zhí)行效率高、資源占用率低、并發(fā)量大等優(yōu)勢,為在線代碼評測系統(tǒng)的魯棒性、執(zhí)行效率帶來了可靠的保障。

猜你喜歡
調(diào)用評測內(nèi)核
人民情懷:柳青為文為人的內(nèi)核(評論)
初春
微軟發(fā)布新Edge瀏覽器預(yù)覽版下載換裝Chrome內(nèi)核
基于Android Broadcast的短信安全監(jiān)聽系統(tǒng)的設(shè)計和實現(xiàn)
利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
從北京奧運走來聯(lián)想IdeapadY530長期評測
現(xiàn)代計算機(2009年9期)2009-12-02
MI評測產(chǎn)品排行榜
6款網(wǎng)絡(luò)電視直播軟件橫向評測
C++語言中函數(shù)參數(shù)傳遞方式剖析