美国国防部依赖的关键代码竟由莫斯科程序员独立维护
HackerNews 编译,转载请注明出处: 美国国防部及数百万用户使用的关键代码目前仅由一名俄罗斯开发者独立维护。有人对此不以为然,认为互联网的半壁江山本就依赖于某些人的个人项目。网络安全圈的这番骚动,凸显出人们对国家行为体可能对个体维护者施加影响的担忧。 Hunted Labs的安全研究人员近期重点关注了“fast-glob”,这是一个广泛应用于Node.js环境中进行快速文件和文件夹搜索的工具。报告指出:“由单人维护的状况给超过5000个软件包(包括Node.js中的容器镜像及美国国防部系统内的容器)带来了供应链风险。我们的调查发现,在经批准的国防部系统中,超过30个容器存在此组件。” GitHub上的依赖关系图显示,该代码被超过2700万个代码仓库使用,并在JavaScript包管理器NPM上每周获得7500万次下载。 Hunted Labs报告称,fast-glob的维护者mrmInc(本名Denis Malinochkin)一直居住在莫斯科,并曾为俄罗斯科技巨头Yandex工作。众所周知,Yandex在与俄罗斯政府合作进行公民跟踪、审查和压迫方面有所配合。报告认为这是一个风险点,“鉴于开源社区往往在几乎不了解贡献者背景的情况下就盲目采纳项目”。但目前并无迹象表明该开发者曾有任何不当行为。 该开发者强调,从未有人要求他操纵该工具、向项目引入隐藏更改或收集分享系统数据。Malinochkin甚至联系了The Register并解释,他从2016年起就开始独立开发fast-glob,这远早于他加入Yandex的时间。这个完全开源的项目完全在本地运行,任何人都可以查看代码。 播客主、博主兼Anchore公司安全副总裁Josh Bressers站出来为这位俄罗斯开发者辩护。他在一篇博文中论证:“让THE WHOLE F*CKING PLANET运转的软件是由一个人写的。在一个国家。但我们不知道是哪个国家。注意,不是同一个人,但就是一个人。几乎所有的开源软件 literally 都是由一个人完成的。”专家用数据支持了这一说法:在ecosyste.ms跟踪的1180万个开源项目中,约有700万个由单人维护。由于400万个项目的维护者人数未知,实际数字可能更大。“实际上比这还要多,”Bressers说,“其中一大批项目将会是一个人维护的。”由单名开发者维护的代码几乎占据了NPM上最受欢迎代码库的一半。“大约13000个下载量最大的NPM包中,有一半是仅由一个人维护的,”专家强调。许多独立开发者还拥有不止一个软件包,并且其中可能没多少人拥有他们可能需要的适当资源。 Bresser认为,真正的供应链风险在于维护者薪酬过低和工作过度,而不在于他们来自哪个国家。“让我们面对现实吧,俄罗斯人还没蠢到去给一个住在俄罗斯的人所拥有的软件包植入后门。他们会做一些事情,比如假装来自另一个国家,用像Jia Tan这样的名字,而不是Boris D. Badguy。这可不是《波波鹿与飞天鼠》的剧集。” 这场讨论在程序员和技术专业人士驱动的社区论坛Lobste.rs上热度渐起。计算机科学家Kornel Lesinski认为,维护者的数量并不是衡量协作的正确标准,因为一个普通的NPM依赖树涉及许多不同的人。发布小型独立的软件包,比让多个维护者在一个单一的整体库上协作更为便利。然而,其他人则表示担忧,认为任何国家行为体能够接触到的代码都可能被滥用。当面对秘密法院的令状时,开发者将没有太多选择。“我对俄罗斯政府的信任程度与对一个人的信任程度截然不同。”一位开发者说。 尽管许多人同意过分关注单一维护者可能有些夸大其词,但对地缘政治或系统性风险保持谨慎的认识仍然必要。Hunted Labs的研究人员承认,替换或修复fast-glob没有快速简便的解决方案。“最佳选择是让mrmInc为项目增加额外的维护者和监督机制,新的维护者需为开源社区所知且居住在民主社会。这是最简单的解决方案,能立即保护使用fast-glob的数百万项目。”Hunted Labs建议道。其他替代方案包括选择不同的工具,或者对其进行分叉(fork)并维护一个独立的版本。 然而,研究人员也敦促立即从美国国防部或情报界使用的产品中移除fast-glob。美国国防部此前曾发布一份备忘录,指示所有技术必须经过验证,确保其安全,能防范来自俄罗斯及其他对手的潜在供应链攻击。 消息来源:cybernews; 本文由 HackerNews.cc 翻译整理,封面来源于网络; 转载请注明“转自 HackerNews.cc”并附上原文
有史以来复制最多的 StackOverflow 代码段存在缺陷
对于开发者而言,Stack Overflow 和 GitHub 是最为熟悉不过的两大平台,这些平台充斥着大量开源项目信息和解决各类问题的代码片段。而就在近日,Palantir的 Java 开发人员,也是 StackQflow(与编程相关的问题的问答网站)中排名最高的参与者之一 Andreas Lundblad 却承认,一段自己十年前写的代码,也是 Stack Overflow 上复制次数最多、传播范围最广的代码段均包含一个错误。 据悉,2018年发表的一篇学术论文[PDF]确定了在网站上发布的代码片段 Lundblad 是从 StackOverflow 提取的复制最多的 Java 代码,然后在开源项目中重复使用。 该代码段以人类可读格式(例如 123.5 MB)打印了字节数(123,456,789 字节)。学者发现,此代码已被复制并嵌入到 6,000 多个 GitHub Java 项目中,比其他任何 StackOverflow Java 代码段都多。 而在上周发布的博客文章中,Lundblad 则承认,该代码存在缺陷,并且错误地将字节数转换为人类可读的格式。他表示,在学习了学术论文及其结果之后,已重新审视了代码。同时再次查看了该代码,并在其博客上发布了更正的版本。 STACKOVERFLOW 代码有时包含安全性错误 据了解,尽管 Lundblad 的代码段是存在一个琐碎的转换错误,仅导致文件大小估计稍有不准确,但情况或许可能会更糟。例如,该代码可能包含安全漏洞。如果这样做的话,那么修复所有易受攻击的应用程序将花费数月甚至数年,使用户容易受到攻击。 事实上,即使普遍认为从 StackOverflow 复制粘贴代码是一个坏主意,但开发人员还是一直这样做。 2018 年的研究论文显示了这种做法在 Java 生态系统中的普及程度,并揭示了复制流行的 StackOverflow 答案的绝大多数开发人员甚至都没有理会其来源。 从 StackOverflow 复制代码但没有署名的软件开发人员,实际上对其他编码人员隐藏了他们已经在项目内部引入未经审查的代码的情况。 这听起来像是一个过于警惕的声明,但在 2019 年 10 月发表的另一项学术研究项目[PDF]显示,StackOverflow 代码段确实包含漏洞。该研究论文在过去十年中在 StackOverflow 上发布的 69 种最流行的 C ++ 代码片段中发现了主要的安全漏洞。 研究人员透露,他们在总共 2859 个 GitHub 项目中发现了这 69 个易受攻击的代码片段,显示了一个错误的 StackOverflow 答案如何对整个开源应用生态系统造成破坏。 (稿源:cnBeta,封面源自网络。)
研究发现与俄罗斯情报部门有关的黑客之间很少共享代码
两家安全公司Check Point和Intezer Labs共同撰写了一份报告。这份报告显示,俄罗斯政府资助的黑客组织很少彼此共享代码,他们如果共享代码,这些代码通常是由同一情报机构管理的组织内部代码。 两家公司研究了将近2千个恶意软件样本,这些样本均来自于俄罗斯政府资助的黑客组织。研究人员对这些恶意软件样本之间的关系调查发现,恶意软件之间共享了22000个连接和385万条代码。这项庞大研究工作做出的结论是,人们发现俄罗斯APT(高级持续威胁,用于描述政府支持的黑客组织的术语)之间通常不会彼此共享代码。 此外,在极少数情况下,代码重用通常发生在同一情报服务内部,这表明负责对外国进行网络间谍活动的俄罗斯三个主要机构,它们通常不会进行协作。该报告证实了以前对俄罗斯网络间谍运作进行的新闻调查,也证实了其他外国情报部门在这方面的发现。之前大部分报告发现,俄罗斯所有网络间谍活动,主要由三个俄罗斯FSB(联邦安全局),SVR(外国情报局)和GRU(俄罗斯军事情报总局)负责进行,并且彼此之间没有合作或协调。 俄罗斯政府促进了三个机构之间彼此竞争,这三个机构彼此独立运作,并争夺政府拨款资金。这就导致黑客小组彼此独立开发工具,而不是与同行共享工具。 (稿源:cnBeta,封面源自网络。)