作者 | 宋林飞
就在刚刚过去的2021年,技术圈传出了一个爆炸性的新闻,Log4j安全漏洞影响了上亿家公司,造成了无法计量的损失,使无数的程序员度过了一个难熬的不眠夜。不了解的人可能会不禁好奇,这到底是哪个供应商的产品,能够有如此大的影响力?在了解后才发现,原来这是一个开源技术。
那为什么它的漏洞能引发如此的轩然大波?其实,这都要归结于开源技术的特点。因为在遵循项目开源许可的情况下,企业和个人可以自由且免费的使用这些开源技术,获取这些项目的源代码,甚至基于这些项目的代码进行二次开发。因此,好的开源项目自然会被很多的企业、用户使用,并且在很多的软件和服务里面都能看到它们的影子。但正是因为开源技术“开放”和“自由”的特点,它也更容易成为居心叵测之人下手的目标。黑客们有机会对项目的源代码进行分析、修改,并使用各种方法来遮盖对开源项目做出的恶意更改。再加上代码审查的严格程度因项目而异, 如果没有严格的审查措施来检测这些恶意更改,它们很容易就会被忽视,直到它们扩散开来,被使用在众多公司的软件中。
开源,不可忽视的安全隐患
比如刚刚提到的Log4j项目,它是一个基于Java的日志记录工具,被70%以上的公司使用。里面的一个功能由于存在漏洞,导致攻击者可以任意执行命令。这就给了很多黑客可乘之机,他们可以远程在包含Log4j的程序中执行恶意代码,植入病毒等等,几乎等同于为所欲为,如此产生后果的严重性是不可估量的。
然而,与Log4j类似的情况比比皆是。EspoCRM,Pimcore,Akaunting作为三个被数千家公司使用的开源软件,在企业的用户关系管理、客户数据管理、数字资产管理以及财会方面发挥着至关重要的作用。它们也曾被爆出致命漏洞,成功利用这些漏洞可以使绕过身份验证的攻击者执行任意JavaScript代码,控制底层操作系统并发起额外的恶意攻击,还可以通过特制的HTTP请求触发拒绝服务,甚至更改与用户账户关联的公司,且无需任何授权。
还有在2014年席卷整个互联网世界的OpenSSL Heartbleed(心脏出血)漏洞,不仅让整个中国互联网为之一颤,而且导致全球超过三分之二的网站“心脏出血”,使全球互联网大量私钥和其他加密信息处于暴露危险下,受影响严重的系统甚至可以从服务器中直接获取用户密码。这一起起的开源安全事故,无不在印证着开源技术的安全风险。
那不用开源行不行?
在看完上面开源安全事故的回顾,有人可能会有这样的疑问,“既然开源技术有这么大的风险,我们不用它不就行了?”。 其实这个问题的答案也很明显,还真不行!因为开源技术都是由开源社区的小伙伴们共同建设的,其中不乏很多成熟且高质量的项目。直接把这些项目拿来使用,可以避免重复造轮子,为企业节省大量的时间和人力成本。让企业摒弃开源项目,自己再把现成的功能重新开发一遍,浪费成本不说,自研的程序从功能性的角度可能还不如开源。所以,让企业杜绝使用开源技术是不现实的。
真的没有办法了吗?
虽然开源技术确实很容易成为黑客们攻击的目标,但是我们还是可以通过一些手段,来中和使用开源技术带来的安全风险,把可能的损失降到最低。
测试和制度 首先,完善的测试和应急响应制度可以让企业更早的发现开源技术中的漏洞,更快的对其进行响应。 这主要分为三个部分:代码扫描和测试,建立一个明确的流程来解决和修复出现的漏洞、将解决安全问题的规则包含在公司策略中bing。
在使用工具测试开源环境时,静态代码分析是很好的第一步。 静态分析是指在实际软件应用程序或程序上线之前分析源代码并解决任何发现的漏洞。 但是,静态分析无法检测到所有可能嵌入到开源代码中的恶意威胁。 因此,很关键的下一步是在沙盒环境中进行额外测试。 严格的代码审查、动态代码分析和单元测试都是我们可以利用的方法。
在对代码进行了测试后,企业必须有一个明确的流程来解决测试中发现的漏洞。 因为程序员的排期通常会很满。该流程应该明确任务的优先级以及后续操作步骤,让技术人员的每一步操作都有依据可循。
开源技术安全需要行业共同努力 其实,目前包括Linux,Apache这样的顶级开源基金会都在呼吁大家重视开源技术的安全,并也付出了努力。包括资金的支持、开发安全工具、培训、研究和最佳实践。
除了全行业努力保护基于开源代码构建的软件免受威胁外,企业也要对其防御战略有一个积极的态度。包括积极的为他们所依赖的开源代码实施测试并将数据积极向上游反馈。企业也应该制定合理的内部政策和指南,来识别使用开源软件的风险。如此做可以让企业继续利用开源代码的优势,同时也能创建一个能够预防可能威胁的环境。
总的来说,尽管开源技术漏洞导致的安全事故比比皆是,但是我们目前也已经有了一些应对这些危险的经验和方案。那么,你是如何看待这些安源安全事故的?你认为使用开源技术是收益大于风险还是得不偿失?请在评论区留下你的观点。
|