去年,Log4j安全漏洞影响了上亿家公司,已经造成了无法计量的损失,使无数的程序员度过了一个难熬的不眠夜。
什么它的漏洞能引发如此的轩然大波?其实,这都要归结于开源技术的特点。在遵循项目开源许可的情况下,企业和个人可以自由且免费使用这些开源技术,获取这些项目的源代码,甚至基于这些项目代码进行二次开发。
因此,好的开源项目自然会被很多企业、用户使用,并且在很多软件和服务里面都能看到它们的影子。但,正是因为开源技术开放自由的特点,它也更容易成为黑客的目标。黑客有机会对项目的源代码进行分析、修改,并使用各种方法遮盖对开源项目做出恶意更改。加上代码审查严格程度因项目而异, 若没有严格的审查措施来检测这些恶意更改,则它们很容易就会被忽视,直到它们扩散开来,被使用在众多公司的软件中。
开源,不可忽视的安全隐患
Log4j是一个基于Java的日志记录工具,被70%以上的公司使用,由于存在漏洞,导致攻击者可以任意执行命令。很多黑客乘机恶意入侵,他们远程在包含Log4j的程序中执行恶意代码,植入病毒等,如此产生的损失不可估量。
与Log4j类似的情况比比皆是,EspoCRM,Pimcore,Akaunting作为三个被众多家公司使用的开源软件,在企业的用户关系管理、客户数据管理、数字资产管理以及财会方面发挥着至关重要的作用。它们也曾被爆出致命漏洞,成功利用这些漏洞可以使绕过身份验证的攻击者执行任意JavaScript代码,控制底层操作系统并发起额外的恶意攻击,还可以通过特制的HTTP请求触发拒绝服务,甚至更改与用户账户关联的公司,且无需任何授权。
回想在2014年席卷互联网世界的OpenSSL Heartbleed漏洞,不仅让中国互联网为之一颤,而且导致全球超过三分之二的网站遭受攻击,全球互联网大量私钥和其他加密信息处于危险下。受影响严重的系统,甚至可以从服务器中直接获取用户密码。像这样的开源安全事故,都在印证着开源技术的安全风险。
开源的不可替代性
如上开源安全事故的回顾,可能会引来有这样的疑问:既然开源技术有这么大的风险,为什么不能摒弃呢?因为开源技术是由扎根开源社区的小伙伴们共同建设的,其中不乏很多成熟高质量的项目。把这些组件直接拿来使用,可以从根本上避免重复造轮子,为企业节省大量的时间、人力成本。如果企业摒弃了开源项目,自己再把功能重新开发一遍,浪费成本是其一,其二是自研的程序从功能性的角度可能还不如开源资源。所以,企业如果为安全考虑而杜绝使用开源组件,是弊大于利的选择。
开源技术确实很容易成为黑客们攻击的对象,但是还是可以通过一些手段,来预防使用开源技术带来的安全风险,把可能的损失降到最低。
完善测试流程和制度
首先,完善的测试和应急响应制度可以让企业更早发现开源技术中的漏洞,更快对其进行响应。
主要分为三个部分:代码扫描和测试,建立一个明确的流程来解决和修复出现的漏洞、将解决安全问题的规则包含在公司策略中。
在测试开源环境时,静态代码分析是第一步。静态分析是指,在实际软件应用程序或程序上线之前分析源代码并及时处理发现的漏洞。酷德啄木鸟的CodePecker源代码缺陷分析系统,是国内第一款自主知识产权的静态检测产品,可检测1000+种缺陷种类,全面兼容CWE、CERT、OWASP等国际编码标准,在对源代码进行检测时,可支持多种语言,具有检出率高,覆盖度广侵入性小等优势,帮助开发快速安全地推进项目。除此之外,代码审查、动态代码分析、单元测试等都是企业可以利用的方法。
开源安全需要行业共同努力
目前包括Linux,Apache这样的顶级开源基金会都在呼吁大家重视开源技术的安全,并也为之付出努力。
除了全行业力保基于开源代码构建的软件免受安全威胁外,企业也要对其防御战略有一定的积极态度。
积极为所依赖的开源代码实施测试并将数据及时向上游反馈,同时企业也应该制定合理的内部政策和指南,来识别使用开源软件的风险。如此做可以让企业继续利用开源代码的优势,同时也能创建一个能够预防可能威胁的环境。
地址:北京市经济技术开发区科谷一街8号院6号楼13层
电话:01062016873
邮箱:cpmail@codepecker.com.cn