王碩,鄭曉東,張強
(齊齊哈爾大學 計算機與控制工程學院,黑龍江 齊齊哈爾 161006)
在線代碼評測系統(tǒng)是一種在程序設計競賽中用于檢測源代碼正確性的在線系統(tǒng)。在評測系統(tǒng)中,用戶提交惡意代碼導致的服務器文件系統(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í)行等權限管理更嚴格等優(yōu)勢。因此本文結合Linux 操作系統(tǒng)的優(yōu)良特性和其內(nèi)核提供的相關虛擬化技術、系統(tǒng)調用攔截等技術,綜合實現(xiàn)了用于編譯用戶上傳的源代碼、執(zhí)行生成的二進制文件、并對結果做出判定的沙箱評測系統(tǒng)內(nèi)核。沙箱評測系統(tǒng)內(nèi)核即在線評測系統(tǒng)的核心功能模塊。
在Windows 操作系統(tǒng)中開發(fā)者多數(shù)采用應用程序接口攔截技術(API Hook)甄別進程中是否存在危險的系統(tǒng)調用;在Linux 操作系統(tǒng)中開發(fā)者多數(shù)使用容器技術或系統(tǒng)調用攔截技術,實現(xiàn)對進程中存在的惡意行為的監(jiān)控與阻斷。Linux 下的系統(tǒng)調用攔截技術有進程追蹤(Process Trace, Ptrace)和帶有過濾器的安全計算模式(Secure Computing Mode-BSD Packet Filter, Seccomp-BPF)。Linux文件權限分配機制可以限制軟件的一部分讀、寫、執(zhí)行功能;改變根目錄(Change Root, Chroot)可以設定進程可見的文件系統(tǒng)根目錄。單純使用文件權限分配機制和改變根目錄的方法構建的評測系統(tǒng)內(nèi)核可能發(fā)生運行時權限泄露的問題。……