簡體   English   中英

UNIX 生成沙盒進程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM