c - 非特权用户运行 C/asm 程序会对 Linux 造成什么危害?

标签 c linux security assembly benchmarking

我一直在考虑这样一种场景:让用户(可以是任何人,可能有恶意)提交在 Linux PC 上运行的代码(我们称之为基准节点)。目标是为单线程例程创建一种自动化基准测试环境。假设一个网站向代理发布了一些代码。该代理将此代码交给基准节点,而基准节点仅与代理有以太网连接,而不是互联网本身。

如果让任何用户发布 C/asm 代码在基准节点上运行,将面临哪些安全挑战?做出以下假设:

  • 程序以非特权用户身份运行
  • 代理将有机会在基准节点上杀死进程(以死循环场景为例)
  • 代理能够重启基准节点(如果它回复...)

那么,这个用户空间程序在实践中是否有可能导致操作系统崩溃,或者使机器对代理不可用?通过汇编,程序员基本上可以做任何他想做的事情(例如操纵堆栈指针),我想知道 Linux 在这方面的限制/健壮程度。我也知道进程请求与其他进程共享内存区域 (shm) 的可能性,这也可能在这里发挥作用?

非常欢迎任何有关此主题的文献或文章。

沙盒解决方案可能也很有趣,但重要的是 CPU 必须在基准测试期间执行 100% 的能力(至少在运行基准测试的核心上)。

最佳答案

只是我头脑中的一个快速列表。从本质上讲,如果您至少有一点不信任用户,您就会陷入大麻烦:

  • 文件系统操作:删除或覆盖属于进程运行用户的文件
  • 窥探系统上发现的各种数据(文件,有时是同一用户的网络流量)
  • 杀死用户的其他进程
  • 消耗内存直到 OOM Killer 开始杀死随机进程或(如果启用了交换)直到机器慢到爬行
  • 生成大量 I/O 以降低系统速度
  • 随意执行漏洞利用(您几乎可以肯定某处存在一些未修补的特权升级漏洞)
  • 利用用户能够运行的任何软件中的漏洞
  • 在您的机器上托管 DDoS 网络或 child 色情文件服务器
  • 将您的机器用作对 CIA 和 FBI 服务器发起攻击的代理
  • 天空是极限...

听起来不是个好主意。

关于c - 非特权用户运行 C/asm 程序会对 Linux 造成什么危害?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9506596/

相关文章:

c - 函数结束后如何处理函数中声明的变量

linux 如何将文件添加到 zip 文件中的特定文件夹

c - fork之后,全局变量是共享的吗?

sockets - Web套接字: Is it bad to always use SSL when making an online game?

c - 如果输入很大,程序会异常终止

c++ - C 中的 main() 方法是如何工作的?

c - Eclipse CDT MinGW 工具链 : how to link with a library that does not begin with lib prefix?

linux - 无法在 AWS 上的 AMI linux EC2 实例上运行没有 sudo 的 Docker

Javascript facebook 登录 - 安全登录的最佳方式是什么?

html - 阻止 "Restore Tab"访问 session 存储