一种算法竞赛在线评测系统的沙箱及其实现方法技术方案

技术编号:33024055 阅读:15 留言:0更新日期:2022-04-15 08:57
本发明专利技术特别涉及一种算法竞赛在线评测系统的沙箱及其实现方法。该算法竞赛在线评测系统的沙箱及其实现方法,通过judge_client进程调用run_client评测函数产生沙箱环境;使用rlimit命令限制用户程序所能获取资源的上限;利用Judge端通过jobs数组保存判题队列,队列不为空则返回提交数量,使用Judge端启动用户程序,并将评测需要的标准输入输出重定向到对应的文件中,返回相应的判题结果和状态;防止运行时攻击和编译时攻击。该算法竞赛在线评测系统的沙箱及其实现方法,通过限制用户代码资源和系统调用的使用,避免了用户恶意使用系统调用对沙箱环境和服务器造成损害,减少了判题时间误差,降低了时间成本,实现了轻量级控制系统调用,同时还避免了破坏用户代码完整性。同时还避免了破坏用户代码完整性。同时还避免了破坏用户代码完整性。

【技术实现步骤摘要】
一种算法竞赛在线评测系统的沙箱及其实现方法


[0001]本专利技术涉及在线测评
,特别涉及一种算法竞赛在线评测系统的沙箱及其实现方法。

技术介绍

[0002]随着ACM/OI/IOI等各类算法竞赛被更多中学生、大学生所熟知,越来越多优秀的算法竞赛Online Judge(在线评测系统,简写为OJ)出现在我们的视野中,但目前大部分 OJ仍存在判题速度慢、评测机时间不准确、沙箱环境不完善导致出现的各类安全性缺陷等问题。
[0003]通常的在线评测系统Online Judge架构分为C/S或B/S架构。以B/S架构为例,整个 OJ被分为web端和Judge端两部分。评测部分Web端主要负责将用户上传的程序、题号以POST形式发送给Judge端进行判题。评测部分Judge端分为三部分:judged负责轮询服务器,提取判题队列并产生judge_client进程,sim负责统计分析代码重复度以判定代码有效性。
[0004]作为judge端的核心模块,judge_client负责为运行用户程序提供环境和数据,并根据题目要求对用户程序申请的资源进行限制,最后返回判题结果。而如果该环境不做任何防护,用户提交的恶意代码将轻易获取服务器信息,破坏评测机运行甚至导致服务器宕机。因此,需要构建一个沙箱环境将用户代码和服务器资源隔离开来,并添加各种限制以保证用户代码不会影响评测机运行。
[0005]基于上述情况,本专利技术提出了一种算法竞赛在线评测系统的沙箱及其实现方法。

技术实现思路

[0006]本专利技术为了弥补现有技术的缺陷,提供了一种简单高效的算法竞赛在线评测系统的沙箱及其实现方法。
[0007]本专利技术是通过如下技术方案实现的:
[0008]一种算法竞赛在线评测系统的沙箱,其特征在于:包括环境生成模块,资源限制模块,判题保存与结果检测模块和攻击防护模块;
[0009]所述环境生成模块负责在获取到用户提交程序的ID信息,同时进程数允许的情况下,通过judge_client进程的调用run_client评测函数产生沙箱环境;
[0010]所述资源限制模块负责使用rlimit命令限制用户程序所能获取资源的上限;
[0011]所述判题保存与结果检测模块负责利用Judge端通过jobs数组保存判题队列,队列不为空则返回提交数量开始判题;并在判题时使用Judge端启动用户程序,并将评测需要的标准输入与输出重定向到对应的文件中,将用户程序的输出于标准输出进行对比,即可返回相应的判题结果和状态;
[0012]所述攻击防护模块负责防止运行时攻击和编译时攻击;
[0013]针对运行时攻击,一方面通过设置LD_PRELOAD环境变量对导致系统问题的系统调用做限制,在保证系统不受用户代码影响的前提下,最大化降低额外的时间与空间消耗,使
得判题结果更加准确高效,实现对系统调用的轻量化管理;
[0014]另一方面,通过设置编译器参数(如fmax

errors=100)控制程序产生的输出文件的大小的上限,并使用提交验证手段拒绝用户短时间大量提交会导致DDOS攻击的恶意代码;
[0015]针对编译时攻击,通过设定极限值set limit命令控制用户程序的资源获取,并设置文件权限或通过chroot命令建立一个jail,将程序限制在指定目录中运行,以防止用户程序访问到系统文件。
[0016]所述资源限制模块使用rlimit命令限制用户程序所能获取的CPU、文件大小、虚拟内存以及最大子进程数的上限;结构体中rlim_cur为要取得或设置的资源软限制的值, rlim_max为硬限制的值,软限制rlim_cur必须小于等于硬限制rlim_max,且只有超级用户有权修改硬限制rlim_max的值。
[0017]在判题过程中,所述判题保存与结果检测模块利用Judge端调用run_solution函数,在资源限制的基础上切换子进程运行用户程序的目录;将评测需要的标准输入与输出重定向到对应的data.in文件和data.out文件中;将用户程序对应data.in文件的输出写入user.out 文件,对比user.out文件和data.out文件的内容,即可返回相应的判题结果和状态。
[0018]一种算法竞赛在线评测系统的沙箱的实现方法,其特征在于,包括以下步骤:
[0019]第一步,获取到用户提交程序的ID信息,同时进程数允许的情况下,通过judge_client 进程的调用run_client评测函数产生沙箱环境;
[0020]第二步,使用rlimit命令限制用户程序所能获取资源的上限;
[0021]第三步,利用Judge端通过jobs数组保存判题队列,队列不为空则返回提交数量开始判题;
[0022]第四步,使用Judge端启动用户程序,并将评测需要的标准输入输出重定向到对应的文件中,返回相应的判题结果和状态;
[0023]第五步,防止运行时攻击和编译时攻击;
[0024]针对运行时攻击,一方面通过设置LD_PRELOAD环境变量对导致系统问题的系统调用做限制,在保证系统不受用户代码影响的前提下,最大化降低额外的时间与空间消耗,使得判题结果更加准确高效,实现对系统调用的轻量化管理;
[0025]另一方面,通过设置编译器参数控制程序产生的输出文件的大小的上限,并使用提交验证手段拒绝用户短时间大量提交会导致DDOS攻击的恶意代码;
[0026]针对编译时攻击,通过设定极限值set limit命令控制用户程序的资源获取,并设置文件权限或通过chroot命令建立一个jail,将程序限制在指定目录中运行,以防止用户程序访问到系统文件。
[0027]所述第二步中,使用rlimit命令限制用户程序所能获取的CPU、文件大小、虚拟内存以及最大子进程数的上限;结构体中rlim_cur为要取得或设置的资源软限制的值,rlim_max为硬限制的值,软限制rlim_cur必须小于等于硬限制rlim_max,且只有超级用户有权修改硬限制rlim_max的值。
[0028]所述第四步中,在判题过程中,Judge端调用run_solution函数,在资源限制的基础上切换子进程运行用户程序的目录;
[0029]用户使用Judge端启动用户程序后,将评测需要的标准输入输出重定向到对应的 data.in文件和data.out文件中;将用户程序对应data.in文件的输出写入user.out文件,对比user.out文件和data.out文件的内容,返回相应的判题结果和状态即可。
[0030]所述第五步中,用户程序调用malloc函数时,将自定义空的malloc()函数编译成动态库后,通过LD_PRELOAD加载实现malloc函数的替换,从而使得malloc函数中sys_brk() 系统调用失效。
[0031]一种计算机设备,其特征在于:包括存储器和处理器,所述存储器存储有计算机程序,所述处理本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种算法竞赛在线评测系统的沙箱,其特征在于:包括环境生成模块,资源限制模块,判题保存与结果检测模块和攻击防护模块;所述环境生成模块负责在获取到用户提交程序的ID信息,同时进程数允许的情况下,通过judge_client进程调用run_client评测函数产生沙箱环境;所述资源限制模块负责使用rlimit命令限制用户程序所能获取资源的上限;所述判题保存与结果检测模块负责利用Judge端通过jobs数组保存判题队列,队列不为空则返回提交数量开始判题;并在判题时使用Judge端启动用户程序,并将评测需要的标准输入与输出重定向到对应的文件中,将用户程序的输出于标准输出进行对比,即可返回相应的判题结果和状态;所述攻击防护模块负责防止运行时攻击和编译时攻击;针对运行时攻击,一方面通过设置LD_PRELOAD环境变量对导致系统问题的系统调用做限制,在保证系统不受用户代码影响的前提下,最大化降低额外的时间与空间消耗,使得判题结果更加准确高效,实现对系统调用的轻量化管理;另一方面,通过设置编译器参数控制程序产生的输出文件的大小的上限,并使用提交验证手段拒绝用户短时间大量提交会导致DDOS攻击的恶意代码;针对编译时攻击,通过设定极限值set limit命令控制用户程序的资源获取,并设置文件权限或通过chroot命令建立一个jail,将程序限制在指定目录中运行,以防止用户程序访问到系统文件。2.根据权利要求1所述的算法竞赛在线评测系统的沙箱,其特征在于:所述资源限制模块使用rlimit命令限制用户程序所能获取的CPU、文件大小、虚拟内存以及最大子进程数的上限;结构体中rlim_cur为要取得或设置的资源软限制的值,rlim_max为硬限制的值,软限制rlim_cur必须小于等于硬限制rlim_max,且只有超级用户有权修改硬限制rlim_max的值。3.根据权利要求1所述的算法竞赛在线评测系统的沙箱,其特征在于:在判题过程中,所述判题保存与结果检测模块利用Judge端调用run_solution函数,在资源限制的基础上切换子进程运行用户程序的目录;将评测需要的标准输入与输出重定向到对应的data.in文件和data.out文件中;将用户程序对应data.in文件的输出写入user.out文件,对比user.out文件和data.out文件的内容,即可返回相应的判题结果和状态。4.一种算法竞赛在线评测系统的沙箱的实现方法,其特征在于,包括以下步骤:第一步,获取到用户提交程序的ID信息,同时进程数允许的情况下,通过judge_client进程调用run_client评测函数产生沙箱环境;第二步,使用rlimit命令限制用户程序所能获取资源的...

【专利技术属性】
技术研发人员:夏传涛周永进李国涛胡清
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1