虚惊。Chainguard对PyPI的分析发现,这种方法只捕获了59%的恶意软件包,但也错误地标记了三分之一的流行软件。PyPI是用Python编写的应用程序中使用的软件组件的主要代码存储库。的合法Python包和15%的随机选择的包。在周二的分析中,Chainguard研究人员表示,这项工作旨在创建一个数据集,Python维护者和PyPI代码库可以使用该数据集来确定他们的系统在扫描项目中是否存在恶意更改和供应链攻击方面的表现。参与研究的Chainguard高级软件工程师ZackNewman表示,虽然现有方法可以检测出大多数恶意软件,但显然需要进行重大改进,以防止误报浪费项目经理的时间。他说,这些是有其他工作要做的志愿者,而不是整天搜索可疑代码的安全研究人员。他们特别关注PyPI的安全性,并不遗余力地改善这种情况,但目前收效甚微。误报是许多软件分析工具的祸根,因此也是安全团队的祸根。即使一个系统能够以100%的准确率检测恶意包,如果它的误报率为1%,假设每周发布的20,000个PyPI包中只有一个是恶意包,那么开发者和应用程序是安全的。专业人员每周仍需处理200次误报。数百个软件包在研究中触发了警报,虽然研究人员进行了一些抽查,但仅快速查看不足以确定软件包是否是恶意的——这就是恶意软件检测工具如此重要的原因。代码存储库管理员对此表示同情,他们每周面临的警报数量是这的十倍。为了发挥作用,扫描工具需要将误报率降低到0.01%左右,即使以漏掉一些恶意包为代价。PyPI的恶意软件扫描方法PyPI旨在通过以两种方式检查包和项目来阻止软件供应链攻击。PyPI扫描包的setup.py文件以查找已知的可疑模式,这些模式可能表明使用签名的恶意功能-YARA规则表示的签名,一种用于创建恶意软件签名的行业标准。YARA的全称是YetAnotherRecursiveAcronym,与其说是一个描述性的名字,倒不如说是一个业内笑话。此外,代码存储库扫描工具会分析提交和贡献者是否存在可能表明恶意代码的可疑更改。研究人员使用168个针对PyPI代码存储库的已知恶意攻击示例构建了数据集。然后他们创建了第二个数据集,其中包含1000个下载最多的包和1000个导入最多的包;在删除重复项后,他们最终得到了1430个受欢迎的软件包。此外,他们创建了一个包含1,000个随机选择的包的数据集,由于14个包没有任何Python代码,他们最终得到了986个随机Python包。研究人员说,流行的包裹和随机选择的包裹都被认为是合法的。此外,流行的项目可能具有更高的安全性并遵守编程最佳实践。研究人员在周二发表的一份分析报告中写道:“虽然其中一些软件包可能是恶意的,但其中大多数不太可能是恶意的。”重要的是,这些软件包更可能代表从PyPI中随机选择的软件包。”开源软件存储库仍然是网络犯罪活动的目标。如今,应用程序安全专业人员和软件开发人员正在寻找方法来保护占78%的开源软件组件。公共程序中的代码。开源安全基金会(OpenSSF)已采取多项举措来提高开源软件供应链的安全性,包括识别代码与编译包关联的最关键软件包。针对软件供应链的攻击在过去的几年里有增无减。仅在过去的一个月里,安全公司Kaspersky在NodePackageManager(npm)代码存储库中发现了恶意软件,而安全公司CheckPoint和Snyk在PyPI存储库服务上发现了十几种恶意软件Bag.此外,意大利一名学龄儿童上传了多个恶意软件ousPython包,其中包含PyPI的勒索软件脚本,据称是一项实验。不太可能只有PyPI显示有问题的扫描结果。展望未来,Chainguard研究人员计划扩大他们的分析范围,评估至少四种开源软件恶意软件分析工具,例如OSSGadgetDetectBackdoor、bandit4ma和OSSFPackageAnalysis,并将PyPI恶意软件检查规则翻译成SemGrep,一个多语言开放源代码静态代码分析工具。本文翻译自:https://www.darkreading.com/application-security/one-third-pypi-packages-mistakenly-flagged-malicious如有转载请注明出处。
