我们的生活离不开软件。如今,人人都在使用app来完成日常工作:支付账单、拓展兴趣、高效工作。为了满足需求,开发人员用开源软件组件为产品提供强大的功能,而无需自行编写新代码。这其中就包括开源安全代码。
这些组件由开源社区编写和维护,得到了广大“志愿者”的支持--他们致力于创建更优良的代码。开源组件越来越多,以满足软件各种各样的需求。现在,大多数app中60-80%的代码库都来自开源软件。然而,并非所有人都愿意为了社区的利益无私奉献。
2017年9月,Equifax×××在公司的Web应用程序中利用Apache Struts 2组件的易受×××版本窃取了1.459亿人的身份信息。事实说明,如果马虎地使用开源软件,可能会有一定风险。
当发现一个开源组件存在漏洞(通常称为CVE)时,这个漏洞会迅速公布,以便开源人可以执行必要的修复。不幸的是,×××也可以看到这些信息 - 他们不需要付出任何努力就能了解哪些组件易受×××以及如何进行×××。然后,他们可以使用此信息对公司组织进行ping操作,以找出哪些公司可能反应太慢而无法修补,从而黑掉他们的系统。
×××们认为,很多公司并不会仔细检查他们产品的开源组件是否包含任何公开漏洞,通常忽视产品中的开源组件。意味着当新的漏洞被发现时时,他们不能及时反映,不知道产品中有潜在的危险。
大多数情况下,组件中的这些漏洞只是编码人员的失误,而×××能从中迅速找到可以被利用来获取不义之财的漏洞,然后使用其他正常的开源组件作为“傀儡”,将恶意代码插入。这实际上为×××提供了一个“后门”,他们可以随意去定位,并且知道哪些版本具有内置的弱点。
许多公司发现,他们产品中的某些开源组件可被勒索软件×××,其中×××可以加密他们的数据,将公司扣为“人质”直到×××收到付款。
让开源项目免于灾难,取决于社区依据Linux的Linus Torvalds,用他们的“千眼”不断地审查代码。安维人员不断筛选代码,查找漏洞,并将其报告给安全数据库。由于这些资源分布散而广泛,因此持续监控以帮助公司领先于×××提前发现漏洞也是一项艰巨的任务。
为了保证产品的安全,开发人员必须十分小心,检查潜在的漏洞。
在很多×××中流行的一个策略是:创建一个恶意软件或×××工具,然后将其作为开源软件,披着羊皮卖狗肉。GitHub,nowhere.net等网站上就有这样的开源软件肆意流通。执法人员或其他人几乎不可能在没有下一级取证的情况下将恶意软件追溯到他们身上。
无可否认,开源软件是应用程序开发的基本要素,但切忌忽视风险。开发人员喜欢使用他们从GitHub或其他网站获取的开源组件,这本身无错。每次开发新程序时不用再“组装”,他们才能够更快捷地工作并将更多的注意力集中产品亮点设计上。
但是,安全地使用开源是认真对待用户,保护他们数据隐私的表现。避免使用有公开漏洞的开源软件,并利用自动化工具来大规模管理开源软件。
其次,尽管总有一些“坏苹果”,我们仍需要继续依赖开源社区来保证我们的安全。开源社区的研究人员及时发现漏洞并报告漏洞,做了不少有用的工作。
随时关注开源社区,以备及时发现漏洞,才能保护好我们的应用程序。
原文地址:http://blog.51cto.com/13957185/2171298