第六章第二节:521HTML事件及其后续发展¶
521HTML事件及其后续发展¶

2022年5月,黑客@是冰梨呀进入有道小图灵,他偶然间发现了有道小图灵网站存在的一个严重的漏洞:通过在评论区发布特定代码,可以将作品页面重定向到有道卡搭主页(实际上可以是任何页面),导致受影响的作品在该问题存在时将无法正常打开。然而,@冰梨并未向官方报告这一漏洞,反而在2022年5月21日开始恶意利用该漏洞攻击社区的作品,甚至发布公告向他人披露该漏洞代码,并直接导致漏洞代码泄露。521HTML事件(也称为HTML代码事件)至此爆发。
以@朱国维、@sb一个(真名周晨宇)为首的大量群众,在521HTML事件开始后纷纷效仿@是冰梨呀的做法,疯狂地利用漏洞代码对其他作品进行攻击,导致大量作品被重定向,甚至秦氏工作室室长@John的所有作品都遭受攻击。在512网警事件中被封号的@qqcd也对@冰梨的行为感到过分,因此通过小号发布了开源的紧急通知《紧急通知!你的作品可能会消失!》,呼吁所有人取消发布重要作品,但此时早已有许多人的作品受到攻击。521HTML事件开始后的短短几个小时内,有道小图灵陷入了史上首次波及全社区的大恐慌,@qqcd的通知作品迅速传播,许多作品被取消发布,大量慌乱的受害者选择报网警(尽管不在网警管理范围内,没有任何用处),社区充斥着恐慌与混乱。但幸运的是,官方在其反馈作品中得知此事后,紧急于5月21日当晚修复了漏洞,521HTML事件得以结束,大范围的恐慌也逐渐平息。

然而,在521HTML事件结束之后,其带来的影响不仅并未消失,反而变得更加严重。@是冰梨啊换了账号,继续进行攻击有道小图灵的活动,@冰梨的妹妹@是诗诗啊(真名王诗雨)也加入了破坏有道小图灵秩序的行列。同时由于“对技术的追求”(《图灵维基》说法),此前被官方封号、遭受沉痛打击的@qqcd此后一改谴责立场,选择支持@冰梨等人。@冰梨兄妹和@qqcd合作利用漏洞进行破坏活动。@冰梨利用有道小图灵Python编辑器自带的urllib库开发出了可以自动点赞、收藏、评论、刷浏览量和修改个人签名的python工具代码,这些代码一经发布就广泛传播,许多人浏览了他人的python漏洞作品后,账号不仅自动为他人点赞收藏作品,自己的个人签名等也被篡改,造成人们防不胜防。@冰梨等人还多次对小图灵网站发起攻击,导致社区长时间瘫痪,首页和发现页频繁崩溃,其中数次崩社区的时长足足达数个小时(最长的一次达到4小时)。@冰梨等人还在将带有网站代码的svg图片嵌入到有道小图灵网站的svg库中,成功利用有道小图灵的域名资源制作了自己的网站。@qqcd学习了@冰梨的做法,借助有道小图灵scratch版本低的因素,在scratch中植入了注入html代码的svg图片,实现了scratch作品内跳转网页的效果(直到目前仍然可用)。在521HTML事件结束之后,社区安全面临持续危机、社区秩序长期极度混乱,这段时期也因此得名"521后危机混乱期"。
在长达110天左右的521后危机混乱期之中,官方因漏洞修复不及时而备受指责,@冰梨等人的行为变得更加肆无忌惮。直到2022年8月21日,有道小图灵官方宣布将收集法律证据,对@冰梨和@qqcd采取制裁措施。@冰梨匆忙逃往卡搭和A营,@qqcd则注册新账号进入“养老”状态。在逼走了@冰梨等人后,官方开始对社区漏洞的修复工作,并一直持续到9月中旬。python编辑器中的urllib等库在此期间也被陆续删除,使得python工具代码从此在社区失去了生存空间。2022年9月中旬,社区漏洞的修复工作宣告结束,521后危机混乱期至此终结。然而,521后危机混乱期的后续影响仍然存在,在之后很长一段时间内,包括刷浏览在内的许多社区问题仍未得到解决。如人们仍然可以通过刷浏览方式,线下操作为作品刷大量浏览量,使其登上首页,首页筛选机制的可靠性也在相当长的一段时间内持续受到刷浏览的挑战。
历史链接:521HTML事件的全面爆发¶
历史链接:521HTML事件的全面爆发
2022年5月,社区中的某个作品出现了进入作品界面会自动跳转至卡搭社区的现象,且该作品的作者进入消息中心时也会遭遇自动跳转。该用户对此现象百思不得其解,在classin群聊和社区上发布信息寻求帮助。
在此之后,又有多个作品出现了自动跳转的现象。而后一个名为“冰梨”的用户发布了公告作品,内含一串代码(漏洞代码),并称“在作品中留言这串代码,就可以实现自动跳转的效果。”在公告发布后,漏洞代码迅速泄露,521HTML事件全面爆发。
@冰梨等人发布的特定封面作品,如何造成有道小图灵社区的崩溃¶
本章节所记述的内容主要整理于https://wuyuan.dev(网站作者为@孙悟元)
在521后危机混乱期之中,@冰梨等人多次对小图灵网站发起攻击,导致社区长时间瘫痪,首页和发现页频繁崩溃。@冰梨等人对社区的攻击手法十分多样,而通过发布具有特定封面的作品使社区崩溃,是@冰梨等人最常用的手法之一。
有道小图灵的作品封面在加载时,是由服务器向用户端传输的,但在传输前客户端会先发送数据包到服务器,传输token进行鉴权,服务器确认后,客户端会发送加载时需要获取封面的作品的标识到服务器以便服务器获取对应封面,然而此时在鉴权失效前编辑并重发作品就可以修改作品封面,这就为@冰梨等人提供了使用无比巨大的svg图片作为作品封面,以进行攻击的机会。但是,有道小图灵不允许svg封面的存在,所有svg封面会在服务端自动改为python的封面。然而@冰梨等人发现了一些方法,可以绕过该限制,使攻击可行化。
统一码(Unicode),也叫万国码、单一码,是计算机科学领域里的一项业界标准,其是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码。而unicode中有一些控制字符,如ROL控制字符,可以对文件名进行伪装,使得文字从右往左排列。@冰梨等人便利用这点,在进行攻击的巨大svg图片的链接中包含了RLO控制字符,使其链接变成:https://steam.nosdn.127.net/gnp.83c36d806dc92327b9e7049a565c.svg?。
此时,有道小图灵服务器会认为这个链接是https://steam.nosdn.127.net/?gvs.c565a9407e9b72329cd608d63c38.png,是一个png图片,不用改为python的封面。然而小图灵网站由于在部分页面使用了svg图片,因此有svg的声明,因此由于服务器在类型上的误判,这张svg图片在相关页面被加载时就会被用户端浏览器所请求(如没有svg的声明,则不会请求),而根据统计,该图片链接源代码总共有65131字符,足以让用户端浏览器在加载时卡爆。于是,@冰梨等人便成功用这张空前巨大的图片,实现了对有道小图灵社区的攻击。