首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ACM ICPC在线法官如何防止恶意攻击?

ACM ICPC在线法官如何防止恶意攻击?
EN

Stack Overflow用户
提问于 2009-06-18 18:49:54
回答 4查看 1.7K关注 0票数 10

我花了几个小时在ACM ICPC's problem set archive上谦卑自己,我想知道在线法官如何能够编译和运行任何用户的源代码,并防止对他们系统的恶意攻击。

编译后的二进制文件是从某种有限的沙箱中运行的吗?如何建立这种沙箱呢?您会使用什么操作系统?如何启动用户编译后的可执行文件?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-06-18 20:20:04

您可以在Linux chroot监狱中运行它,或者将它链接到一个没有实现任何文件I/O的libc上。

票数 7
EN

Stack Overflow用户

发布于 2010-07-14 23:07:09

这些程序在chrooted监狱中运行,运行时间有限。判断计算机分布在多个服务器上,以帮助防止单点故障或DOS攻击。

我是一个区域竞赛管理员。

票数 6
EN

Stack Overflow用户

发布于 2013-05-26 20:43:56

形成沙箱(假设Linux作为服务器操作系统,这在ACM中很常见)的简单方法是使用(古老的) chroot或一些内核补丁。现在内核中有一些更高级的沙箱技术,例如:

  • seccomp - Linux 2.6.12+进程可以要求操作系统使用特殊的prset调用,将进程能力限制为:退出,读写已经打开的文件。OS将拒绝执行任何其他系统调用,从而有效地将程序与外部世界隔离。而且没有办法将这些功能重新设置回来。(此解决方案可能会破坏一些渐进式语言,如python、perl、ruby等,它们希望在运行time.)
  • namespace isolation - cgroups期间加载一些插件。chroot是一个只更改(隔离)文件系统名称空间的程序,还有其他名称空间,例如网络或进程。使用cgroup,我们可以使用chroot限制更多的内容。

一些内核补丁,为在线评委编写的,例如* ejudge.ru有2.6.38.8,3.4.15,3.7.5的补丁;也有一些针对Windows的解决方案。(该网站使用俄语。)我想,这个系统可能会在俄罗斯的一些比赛中使用,对1/4的ACM ICPC不太确定。

一些判断系统使用ptrace()系统调用-换句话说,它们就像被测程序的调试器,判断系统可以控制所有的系统调用,并且可以取消任何系统调用,而不需要将其传递到内核。

还有一些开源的裁判系统,比如https://openjudge.net/ (libsandbox)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1014505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档