服务器在线程池中创建新线程。这个线程将一些内容读入缓冲区等等,然后执行一些代码。我希望通过更改线程的权限来降低自己的安全性,在此代码之前可能是不安全的(或者它的行为可能会被更改......通过黑客等等...)
我要去(哈......但几乎没有知识)为线程中的这个不安全的代码创建一种“沙盒”。 (可能对于类UNIX操作系统,因为我没有想法,如何为Windows做到这一点)。
任何想法如何更改线程权限? (我使用Boost库)。如果能够定义内存使用的边界,那真的很棒吗? (有点像 - 如果线程尝试使用超过1Mb的堆栈\堆 - 有些东西是错误的 - 杀了它)。
还有一件事:) - 如果我在线程内使用chroot,我会更改root目录。整个申请?
先谢谢你。
答案 0 :(得分:7)
无法在Unix或Windows中控制本机代码的线程权限 - 至少在没有内核黑客攻击的情况下也是如此。硬件的“环”机制(至少是x86)被设计成做这样的事情 - 你会把线程踢进一个不太特权的环。但是,没有任何操作系统对此具有任何用户模式支持。一个线程中的chroot chroot整个过程。
如果必须使用本机代码,唯一可以做的就是创建一个进程,而不是一个线程。然后,您可以使用mmap共享内存,并且通过在映射上使用只读,您可以控制共享。但是,如果您有恶意代码问题,则该进程必须以不同的访问标识运行。