32

开源软件的供应链是否存在安全风险?

 6 years ago
source link: https://www.sdnlab.com/20863.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

去年发生了一些令人震惊的攻击,这使得开源软件供应链的安全性备受质疑。成千上万的计算机被一个免费的安全软件工具CCleaner故意损坏,同一周内一群黑客向Python Package Index(PyPI)(Python的公共软件包存储库)添加了故意损坏的Python库,这些软件包成功使得企业、政府和军事网站工作的Python程序员中招。

open-source-668x400.jpg

这些攻击发生在臭名昭著的Equifax泄露事件发生后的几个月,Equifax泄露事件利用了开源Java Web框架库。从那以后,很多组织增加了对安全态势的重视程度。Python软件基金会迅速为PyPI添加了黑名单功能,防止任何人更新流行的Python软件包。此外,GitHub开始向RubyGems for Ruby和npm for Javascript中的已知易受攻击库的项目维护人员发出警报,并计划在今年晚些时候为Python添加警报。

那么,这是否意味着开源软件可以安全地再次使用?

答案是不完全是,企业为了更好地保护自己,需要了解开源软件供应链的工作原理,我们生活中几乎所有的设备都包含一个嵌入式开源软件和运行时库的复杂系统。

开源软件的开发任何人都可以创建软件包,任何人都可以使用其他软件包。这种混杂的共享可以提高每个人的工作效率,开发人员可以借用并改进其他人的工作,从而减少必须单独编写的代码量。

不幸的是,要理解别人上传的软件非常困难,人们可能会恶意地改变供应链中的数据包或库。以PyPi为例,攻击者会使用“typosquatting”,他们上传了一个名为“bzip”的库,模仿“bz2file”。很多临时使用库的用户不知道其中的差异,当他们使用修改后的库时,数据包的开发者能够看到这些库的使用。在另一次攻击中,有人简单地提交了现有标准库软件包的新版本,名称相同但是内容是恶意的版本。

让事情变得复杂的原因之一是,普遍的感染往往不是攻击者的动机。以CCleaner为例,超过10万台感染机器只是附带损害,袭击者初始的目标只是大约18家公司,他们需要的只是这些公司使用的一个妥协包。

Python基金会,GitHub和其他公司已经在采取这些类型的漏洞方面采取了重要措施,但企业和开源社区可以做更多的事情来阻止它们。

开源软件的开发任何人都可以创建软件包,任何人都可以使用其他软件包。这种混杂的共享可以提高每个人的工作效率,开发人员可以借用并改进其他人的工作,从而减少必须单独编写的代码量。

企业可以运行自己的私有数据包库,这些库通常由IT组织进行控制和审计。通过这种方式,他们可以控制使用哪些版本的软件包,并且会向正确的服务通知需要解决的安全漏洞。另一种技术是版本固定(version pinning),其中组织将库限制为已知的运行良好的版本。组织必须主动管理版本控制和依赖关系,但有多种工具可用于简化和自动化流程。这可以解决现有软件包的新恶意版本,以及在当前版本中发现主要漏洞的情况下每个人使用新版本的情况。

与此同时,开源社区必须克服对软件包的无限制访问,这是一项艰巨的任务,因为这种访问使得许多这样的社区保持高效和创新能力。安全扫描和软件包署名是商业应用商店(如Apple和Windows)使用的技术,但开源社区难以扩展这些技术。 尽管如此,简单地管理一个软件包库,即使没有署名,也可能是一个有效的保障。

无论你在开源供应链中的角色如何,如果我们要防范未来的攻击,必须对安全性给予更多的关注。安全专业人员通过默默无闻的方式熟悉安全性,他们错误地认为,如果软件很难理解,就很难发起攻击。去年的攻击表明,通过滥交(将开放源代码无管理地纳入软件供应链)带来的不安全感是我们面临的新的问题。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK