[英]UNIX spawn sandboxed process
在我的場景中,父進程(動態)生成一些機器代碼,然后該代碼應該由子進程執行。 子進程不應該能夠訪問父資源(所以沒有分叉),出於安全原因,它必須盡可能地受到限制,我想要這樣的東西:
process_handle x;
give_memory_page_to_process(x, mempage); // allows x to access the page
/*some more pages for the child*/
/*remove the memory pages from the parent process*/
execute(x); // should create a process with just the given pages
要設置一個空容器,您需要 fork() 然后讓子 exec() 進入一個空進程,然后您將寫入該進程。 最簡單的方法可能是讓父級將其機器代碼生成為 ELF(或其他)格式文件,並讓子級關閉 fds 等......然后執行它。
由於最初的孩子(在 fork 之后)與父母相同,因此還沒有安全問題。 然后子進程將關閉它所有的 fds,可能 chroot()ing 到某個限制性的地方,父進程已將生成的代碼放入其中。 然后子進程 exec()s 生成代碼。
如果您擔心有人會攻擊您 chrooted 目錄中的可執行文件,為什么不擔心他們會攻擊父目錄? 相同的權限......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.