Yng*_*dal 5 c linux security benchmarking assembly
我一直在考虑一个场景,让用户(可能是任何人,可能有不良意图)提交在Linux PC上运行的代码(让我们称之为基准节点).目标是为单线程例程创建一种自动基准测试环境.假设一个网站将一些代码发布到代理.此代理将此代码交给基准节点,基准节点只有代理的以太网连接,而不是互联网本身.
如果允许任何用户发布C/asm代码在基准节点上运行,那么面临哪些安全挑战?做出以下假设:
那么,实际上这个用户空间程序是否可能导致操作系统崩溃,或者使机器对代理不可用?通过汇编,程序员基本上可以做任何他想做的事情(例如操纵堆栈指针),我想知道Linux在这方面有多么限制/强大.我也知道进程有可能请求共享内存区域与其他进程(shm),这可能也在这里发挥作用?
任何有关此主题的文献或文章都是非常受欢迎的.
沙盒解决方案也可能很有趣,但重要的是CPU必须在基准测试期间执行100%的能力(至少在运行基准测试的核心上).
只是快速列出我的头脑.从本质上讲,如果你至少不信任用户,你就会陷入困境:
听起来不是一个好主意.
那么,在实践中,这个用户空间程序是否可能导致操作系统崩溃,或者使机器对代理不可用?
是的,诸如生成过多进程、分配过多内存(导致交换文件使用)或对大量磁盘 I/O 进行排队等技术都会使计算机无响应,从而使您的主管进程无法及时运行。
如果您的管理程序代码最终被换出到磁盘,那么即使它具有高优先级,它也不会运行,直到磁盘可用为止,由于寻道时间,这可能会导致很长的延迟。
Linux 确实ulimit可以防范其中的一些问题,请参阅限制 Linux 中用户可用的内存和 cpu 并且同样可以阻止恶意网络活动。您还可以禁用交换并将chroot程序装入tmpfs安装中。但一些恶作剧仍然是可能的。
| 归档时间: |
|
| 查看次数: |
393 次 |
| 最近记录: |