我一直在考虑一种场景,让用户(可以是任何人,可能有恶意)提交在 Linux PC(我们称之为基准节点)上运行的代码。目标是为单线程例程创建一种自动化基准测试环境。假设一个网站向代理发布了一些代码。该代理将此代码交给基准节点,而基准节点仅与代理有以太网连接,而不是互联网本身。
如果让任何用户发布 C/asm 代码在基准节点上运行,将会面临哪些安全挑战?做出以下假设:
- 该程序以非特权用户身份运行
- 代理将有机会杀死基准节点上的进程(以无限循环的情况为例)
- 代理能够重新启动基准节点(如果它回复......)
那么,在实践中,这个用户空间程序是否可能导致操作系统崩溃,或者使机器对代理不可用?通过汇编,程序员基本上可以做任何他想做的事情(例如操作堆栈指针),我想知道 Linux 在这方面有多么严格/强大。我还知道进程可以请求与其他进程共享内存区域(shm),这也可能在这里发挥作用?
非常欢迎任何有关该主题的文献或文章。
沙箱解决方案也可能很有趣,但重要的是 CPU 必须在基准测试期间执行 100% 的性能(至少在运行基准测试的核心上)。
只是我脑海中浮现出的一个快速清单。从本质上讲,如果您至少有一点不信任用户,那么您就会遇到大麻烦:
- 文件系统操作:删除或覆盖属于进程运行用户的文件
- 窥探系统上发现的各种数据(文件,有时是同一用户的网络流量)
- 杀死用户的其他进程
- 消耗内存,直到 OOM Killer 开始杀死随机进程或(如果启用了交换)直到机器速度减慢到爬行状态
- 生成大量 I/O 来减慢系统速度
- 随意执行漏洞利用(您几乎肯定在某处存在一些未修补的权限升级漏洞)
- 利用用户能够运行的任何软件中的漏洞
- 在您的计算机上托管 DDoS 网络或儿童色情文件服务器
- 使用您的计算机作为代理来发起针对 CIA 和 FBI 服务器的攻击
- 天空才是极限...
听起来不是一个好主意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)