抓住“开源盛世“,这个工具你必须了解一下
过去的五年中,开源技术的发展和应用如火如荼,逐渐渗透到软件开发的各大领域,俨然“开源盛世”,市场一片繁荣。开源软件帮助企业或组织大大缩短开发周期、更快的推出创新产品。利用开源软件现在被证明是一种更快发布产品的方法。开源虽好,但你可知开源软件自身的各种质量和缺陷问题,以及潜在的风险在哪里?无论你是程序员、质检人员,或者是公司的管理者,你都需要清楚地了解使用开源对代码质量,以及漏洞的影响。
开源的好处知多少?
开源是指计算机程序的源代码或文档可供公开获取和自由使用,或者对原始设计进行修改、编辑,并在软件许可协议的约束下使用或者重新发布,以用于多种用途,包括商业用途。开源借助社区的力量,汇聚了全球程序员的智慧。对于大多数开发人员而言,由于开源软件被来自世界各地的开发人员进行协作开发,而具有无可比拟的设计优势。谁不想使用由优秀开发人员编写的出色代码?
开源还有其它各种好处,但是与我们自己的软件开发方法能够产生共鸣的一个好处是:开源促进了软件开发的分工越来越细化,逐渐模块化。开发者借助开源组件,像搭积木一样,快速构建新的应用,让企业把主要精力专注于创新。正是由于开源软件的免费、共享和协同等优点,促进了开源的蓬勃发展,进入“开源盛世”。
开源软件的安全和合规风险
当然在使用开源软件复杂的代码库时,由于难以评估的代码质量,加上错综复杂的依赖关系,不可避免的会面临各种风险,而没有采取适当的措施。我们认为,这主要体现在以下两个方面:开源软件的安全性和合规性。
由于我们专注代码分析,所以我会着重从这方面谈一谈我的看法。首先,开源代码,人人可见,开发者很容易获得,嗅觉灵敏的黑客也能从代码中获取容易被利用的攻击点。CWE 高危漏洞,既在警示开发者注意编码的安全,同时也向黑客揭示了最容易利用的目标。一个很好的例子就是 OpenSSL 的安全漏洞心脏出血(Heartbleed)[1],相信开发者的心脏仍然会心有余悸。此漏洞主要是通过模拟向服务器端发送用户自己编写的 Heartbeat 心跳数据包,如果 payload_length 大于 HeartbeatMessage,就会在服务器返回的 response 响应包中产生数据溢出,造成用户隐私数据泄露。现在人们仍在使用旧版的 OpenSSL 库,即使已经在 CWE 上报告了该错误,人们也没有意识到已经存在的错误。
帮你支招,主动应对开源风险
Gartner 最近进行的一项调查显示,90%以上的受访者表示他们依赖开源软件[2]。然而,不少公司对开源软件的使用非常随意,拿来主义,不求甚解,管理者甚至不清楚自己的团队都使用了哪些开源软件,开发者也无法完整列出使用到的开源软件、版本及许可协议等。开源软件一旦曝出质量问题或安全漏洞,用户连自己是否用了都不知道,怎么可能去防范和修复呢?规避开源风险应对策略,主要有以下 4 点:
对企业所使用的开源软件进行主动管理,包括开源许可管理。开源代码不仅可以由内部开发人员引入,也可能在你不知情的情况下通过第三方供应商和外部开发团队引入,还可能通过第三方依赖库间接被引入。这就要求企业管理者首先要了解自己的团队都用到了哪些开源代码,保证开源代码的透明度。这是保障软件程序安全的一个基本步骤。
密切跟踪核心开源软件的更新,还需要主动关注风险漏洞披露。必须定期密切注意可信任来源(例如 CWE)中的漏洞披露。与商业软件不同,开源软件不会把更新、补丁等自动推送给用户,所以用户就得眼观四处、耳听八方,自行跟踪开源软件的漏洞、修复和更新。如果许多公司实现了这样的措施,则可以避免上述 Heartbleed 那样的错误。
在使用静态应用程序安全测试(SAST),对核心模块进行定期的代码审计。与动态安全测试、渗透测试等相比较,在 SDLC 早期使用静态代码分析,是确保质量和安全编程的第一道防线。软件外包的形式被越来越多的企业使用,然而在执行过程中,对购买方来说,验收绝对是个考验。企业其实很难对交付代码的质量进行客观评估,这为日后的代码维护埋下巨大隐患。这就不得不提到检测源代码漏洞的利器:静态代码分析工具。这个工具作为公正的第三方,对代码质量、代码安全给出客观的评估,为交付验收提供客观的方法和依据。
最后,最重要的一点:要培养“质量第一、安全至上”的思维模式。永远不要忽视开源或合作伙伴代码中的风险。开发人员的质量意识是重中之重,因此使用静态代码分析已成为一种常规做法,它能够识别漏洞并尽早减轻风险。在鉴释,我们始终向客户传达质量至上和设计安全的理念。
在中国,开源的重要性从未像现在这样高。开发人员搭乘“开源盛世”的快马,通过使用灵活敏捷的创新方法取得了成功。从有超过 4000 万用户的 GitHub 可看出开源的重要性。为了满足中国对开源社区的需求,GitHub 正在寻求将业务直接扩展到中国。此举受到了中国政府的欢迎。伴随业务发展及海外市场的扩展,我们必须熟知开源使用的利与弊,确保高质量和安全合规的产品,避免在海外业务扩张的过程中遭遇滑铁卢。
在企业享受开源所带来竞争优势的同时,至关重要的是我们要通过整合自动化工具,例如爱科识(Xcalscan)来减少风险并采取措施,该工具可以连续分析代码并检测缺陷,从而尽早修复。作为一名长期从事软件开发的从业者,在我看来,使用静态代码分析工具将逐渐成为一种规范和行业趋势,这是最直接、最有效的代码审计和安全评估工具。将静态代码分析工具引入到 SDLC 或 Devops,逐渐成为全球软件企业的标配,并且在保护企业免受来自开源的威胁,扮演着越来越重要的角色。
作者 Johanna Cui:
高级技术支持工程师,就职于鉴释销售服务部,主要负责行业解决方案及客户支持服务。
参考资料:
[1]https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2014-0160
评论