史上被复制最多的StackOverflow Java代码片段其实存在bug。
公开这件事的是代码本身的作者,Palantir的Java开发人员Andreas Lundblad,他是StackOverflow(编程开发相关的问题网站)排名最高的贡献者之一。
根据2018年发表的一篇学术论文中的统计数据,Lundblad在该网站上发布的一段代码被认为是StackOverflow有史以来被复制最多的Java代码,在多个开源项目中被反复使用。
这段代码是2010年9月StackOverflow上某个编程问题的答案。主要和数据转换有关,以人类可读的格式(如123.5 MB)打印字节数(123456789字节)。
研究人员发现,这段代码被复制到6000多个GitHub Java项目中,超过其他任何被引用的StackOverflow Java代码片段。
在上周发表的一篇文章中,Lundblad承认那段代码有缺陷,转换逻辑存在漏洞。
Lundblad表示,在得知自己的代码应用的如此广泛后,他再次查看了代码,并在博客上发布了更正后的版本。
StackOverflow代码的安全漏洞
虽然此次Lundblad代码只是存在一个微不足道的转换错误,只会对文件大小的计算结果产生些许影响,但类似情况有可能会更严重。
例如,一旦代码中存在安全漏洞。那么修复所有受影响的应用将花费数月或数年时间,期间无数用户的安全都将受到威胁。
不过,即使大家都知道从StackOverflow直接复制粘贴代码是很不安全的,不少开发人员仍然会这么做。
2018年就有相关研究报告展示了这种做法在Java开发中是多么的普遍,许多抄袭StackOverflow答案的开发人员懒得去追溯代码的来源。
严格来说,这种从StackOverflow复制代码而不注明实际出处的行为是严重违规的,相当于开发人员往项目中引入了未经审核的代码。
也许这听起来有点危言耸听,但2019年10月发表的另一项学术研究表明,StackOverflow不少代码片段确实包含安全漏洞——这不仅仅是用来吓唬开发者的“神话”。
该研究发现,在过去十年中,StackOverflow上发布的69个最流行的C++代码片段存在重大安全漏洞。
研究人员在总计2859个GitHub项目中发现了这69个存在漏洞的代码片段,这表明一个糟糕的StackOverflow答案可能会破坏整个开源应用的系统安全。本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://www.zdnet.com/article/the-most-copied-stackoverflow-java-code-snippet-contains-a-bug/