时隔九年,开发人员更正了代码片段。

一直以来,被复制使用最多的StackOverflow Java代码段中暗藏一个bug。该代码的作者,Palantir的Java开发人员Andreas Lundblad亲自承认了这件事。

早在2018年发表的一篇学术论文[PDF]就指出,Lundblad在该网站上发布的一段代码是StackOverflow有史以来被复制最多的Java代码,该代码片段在各种开源项目中被重复使用。据悉,已被复制并嵌入到6,000多个GitHub Java项目中,比任何其他StackOverflow Java代码都要多。

请输入图片描述

这段代码来自2010年9月,Lundblad对StackOverflow上某个编程问题的回答,以人类可读的格式(如123.5 MB)打印字节数(123456789字节)。而在上周, Lundblad承认该代码在数据转换逻辑上存在漏洞,他再次查看了代码并在博客上发布了更新后的版本。

请输入图片描述
StackOverflow偶尔包含安全性错误

尽管这次Lundblad的代码看似只是存在一个细小的转换错误,仅导致文件大小的计算稍有不准确,但实际上,这种安全性错误可能会带来更糟糕的后果。

一段代码中存在含安全漏洞,那么修复所有受此影响的应用程序可能要花费数月甚至数年时间,期间,无数的用户安全都将遭受威胁。

从StackOverflow直接复制粘贴代码并不安全,这一点众所周知,但还是会有很多开发人员继续这么做。2018年相关的研究证实了这种做法在Java开发过程中的普遍程度,很多复制StackOverflow答案的开发人员甚至都不会去追溯代码的来源。但严格来说,从StackOverflow复制代码却不注明来源的行为意味着开发人员在项目内部引入了未经审查的代码,这是严重违规的。

这并不是耸人听闻,在2019年10月发表的另一项学术研究项目[PDF]表明,不少StackOverflow代码片段确实包含漏洞。

该研究论文指出,过去十年,在StackOverflow上发布的69种最流行的C ++代码片段中都发现了重大安全漏洞。与此同时,研究人员在共计2859个GitHub项目中发现了这69个存在漏洞的代码片段,这表示,一个错误的StackOverflow答案,可能会对整个开源应用的系统安全造成极大的破坏。
本文出处:FreeBuf.COM