我正在开发一个类似于hackerrank.com的平台,有人可以提交C代码,然后该代码将被编译,并在我的服务器上运行,但我想限制一个人可以使用的C指令集在我的服务器上执行。
例如:将指令集限制为仅I / O.
我的第一种方法是解析代码并查找恶意代码,但这非常天真,因为它可以轻松覆盖(shell代码,混淆等等)。
我的第二种方法(我认为可以工作的那种方法)是删除所有“不必要的”标题,并且只留下stdio.h,math.h,stdlib.h等。仅举几例。
但后来我认为有可能从gcc中限制C的指令集,但是在读完gcc的man条目之后我找不到任何接近我需要的东西,所以我想知道这是否可能。
如果那是不可能的,那么解决这个问题的安全方法是什么?除了摆脱不必要的库。
谢谢!
答案 0 :(得分:0)
您可以使用systrace限制系统调用,这可以在OpenBSD上使用。我确信它与Linux和其他操作系统相当。这将允许您将系统调用仅限制为文件io,而不是限制套接字和分叉等内容。