ASCII码 ASCII码

我在信息学奥赛上,用Bug直接改了验算数据,拿了满分算作弊嘛?

发布于:2020-12-11 10:05:30  栏目:技术文档

  郑集杨发自凹非寺

  量子位报道公众号 QbitAI

  在线考试,一道题太难做不出来,怎么办,是多少写点还是直接放空?

  在 NOIP 2020(信息学奥赛)上,一位浙江同学,“另辟蹊径”,最终,还拿了满分。

  简单来说,就是他在直接指定了验算数据,还要「改卷老师」就按着这个数据判卷。

  什么,还可以这么操作?是不是感觉匪夷所思?

  这,是 NOIP2020 被发现的 Bug,是怎么回事?又是什么导致的 Bug?

  直接把验算数据改了

  不妨直接来看看选手提交的代码:

  图源:洛谷

  是的,就是这么直接,打开输入文件,覆盖验算数据;打开输出文件,写入答案。

  相当于做数学题,考生的解题过程只有在特定数据下是正确的,但考生在改卷老师判卷的时候,直接让老师全部按着这组数据去改。

  是不是发现了核心问题所在了?对,改卷老师的数据能被修改了,就是 Bug 所在。

  在了解 Bug 之前,我们先来对比和了解一下二者改卷的流程。

  在 NOIP2020 中,验算数据是内置的 ball.in 文件,答题卡是考生提交的程序,而改卷老师就是系统中的 checker。

  正常的评测流程:

  评测系统给一个输入 ball.in 文件;

  运行选手的程序,得到 ball.out 文件;

  用 checker 去检查 ball.in 对应的 ball.out 文件的答案是不是满足要求。

  钻空子后的评测流程:

  评测系统给一个输入 ball.in 文件;

  运行选手的程序,选手改了 ball.in 文件,同时写入 ball.out 文件;

  用 checker 去检查 ball.in(修改过的)对应的 ball.out 文件的答案是不是满足要求。

  这个 Bug 中最诡异的地方,就是:原本应该只有只读权限的 ball.in 文件,竟然能够被轻易修改。

  这个低级问题,出在哪里,还不知道,但是据网友推测:应该就是落后老旧的评测软件 Arbiter 的锅。

  因为 Arbiter 的问题和 Bug 实在是太多了,修改 ball.in 文件只是其中之一。

  知乎网友 Menci 的回答中,通过 Arbiter,选手其实还能直接解限内存(增加计算力)和解限时间(增加答题时长)。

  正是由于 Arbiter 的技术太落后了,存在各种 Bug,才让验算数据的修改成为了可能。

  此外,网友的讨论,也能发现,在文件读取的指令中,也存在一些问题。

  如果改卷老师先把输入数据看一遍,那么就算后面数据被偷换了,也不会出现误判。

  但是,系统程序的加载顺序偏偏是,先运行选手的文件,于是,才留下了可乘之机。

  当然,这个可乘之机,也是有使用局限的,而这,跟 Special judge 的独特判定机制有关。

  Special Judge,是读取选手提交的特定程序,通过验算数据来确定选手提交的程序输出(ball.out 文件)是否正确。

  而平常的题目,只需核对答案就行,就不需要读取程序。

  直接核对,也就没有了篡改验算数据的机会。

  而今年,却是 NOIP 竞赛首次出现 Special Judge 题目。

  就这样,各种阴差阳错的情况下,NOIP2020 中最难的一道题,就这么被「改」出了满分答案。(狗头)

  取消成绩?禁赛三年?

  这位同学此次的行为,算是踩到了竞赛本身和竞赛规则的一处灰色地带。

  至于会怎么处理,还不得而知,我们只能从规定和往年的一些案例中窥探一二。

  在往年中,CCF 本身是对违规行为有着规定和处罚的。对于个人违规的判例上,可以分为三个层级:

  不合程序的成绩作废;

  选手禁赛三年;

  扣除所在省选下季名额 1 个,优先扣除作弊选手所在学校的名额。

  从过往案例来看,如果只是选手在过程中被认为不合乎程序,那么即该部分成绩取消,这种情况一般是没有直接认定为作弊。

  而一旦认定为作弊,则是禁赛三年和扣除名额同时进行。

  可以看出,认定为作弊和非作弊二者之间,处罚力度之间的差距还是很大。

  因此,该同学面临处罚的最关键点,便是在于其行为与作弊之间的一个认定。

  那么,CCF 往年是如何认定作弊的呢?从往年公告中,我们可以看到:

  为获奖采取了抄袭、拷贝等不正当的手段。

  另外,在作弊通告中,CCF 特别强调:

  本学会认为,诚信是对一个成长中的学生最起码的道德要求,也是参加竞赛的前提条件,CCF 严厉谴责任何弄虚作假的行为。

  按照往年来看,「等行为」与「诚信」,似乎足以给这个行为定性。

  但是,也有网友认为:CCF 软件出了问题,合理利用规则,没有违反规定。

  至于最终如何,只能等待处理结果出来才能知晓了。

  网友讨论:快去打 CTF

  NOIP2020 被考生钻了空子,这事一经发布,便引起啦网友的关注和讨论。

  在知乎上,相关提问已经有了 89W 的浏览量,并冲上了当日的知乎热榜。

  对于这种黑客式的攻击行为,又怎能不让人想到 CTF(网络安全技术夺旗赛)呢?

  这也难怪网友们都惊呼:快去打 CTF

  另外,也有网友调侃道:CTFer 又多了个拿奖的地方。

  所以,这位同学要不要考虑一下网络安全技术夺旗赛呢?(狗头)

相关推荐
阅读 +