使用开源组件可以节省开发时间和公司成本。然而,开源方便你我他的同时,其安全风险也不容忽视。尤其是在开源组件没有得到很好维护的时候,其引入的安全风险往往超出了能带来的种种好处。
近几年开源代码热度持续上升,各类公司都纷纷采用开源组件构建自己的系统和平台。除了市场上常见的开源操作系统,开源的生产力软件、管理员/开发者工具和各种代码库也是企业用户用于打造自有软件的一大助力。甚至商业软件也往往建立在开源代码的基础之上。
企业中开源软件的采用越来越广泛。随着企业转向敏捷方法,开源变得更加有价值,也有更多工具可以利用。刚入行的软件开发新鲜人已经很习惯于应用开源技术了。
开源安全优势
开发人员重度依赖开源软件,公司企业也惯于依靠有大型团队维护的主流开源项目。且在安全上一直都有“众人之眼”的说法——越多人盯着就越安全。除了廉价,“众人之眼”带来的安全性可能就是使用开源软件的主要好处了。理论上,开源软件是有很多双眼睛盯着的。当然,这一理论对小型开源项目或代码库不适用。毕竟,有些软件是没有开发者社区的。
开源代码的另一个安全优势是,如果出现了问题,可以得到立即曝光和修复。而如果是专利代码,通常就只有等待供应商的响应了。
二、开源软件带来安全威胁
开源软件的品质总体上是在不断提升的。但是很多项目,尤其是小型项目,并不对其代码进行潜在安全漏洞扫描。
都是谁在用这些开源代码呢?最近一期报告显示,96%的商业应用中都融入了开源组件。平均每个应用中含有147个开源组件,且67%的应用采用了带有已知漏洞的开源组件。
为什么公司企业要用开源软件?普通应用的代码库里超过1/3都是开源代码。想要替换掉这1/3的代码库,公司企业要么给开发团队增加50%的人手,要么延长50%的开发时间。今天这种看重时间成本效益的世界里,恐怕正常人都不太会这么干。
“众人之眼”可杜绝安全漏洞的想法带有误导性。事实上,开源代码被众人盯了多年也还在爆安全漏洞的现象并不少见。很多主流开源代码库中都存在已确认的漏洞。但工程师仅仅是从这些库中抽取并部署代码,并没有意识到由此引入到产品中的种种依赖关系。于是,可见性问题便出现了。
开源代码中不断发现新漏洞,而很多项目并没有查找并修复问题的机制。然后,即便问题被修复,也无法找到并通知老版本代码的用户。开源社区并不知道都有谁使用了他们的代码。
很多开源项目维护者都不清楚CVE的运行机制,或者没时间去跑这个流程。但是,获取CVE编号的过程可能比较复杂,需要委员会认可CVE具体细节,还需要征得项目拥有者的同意。当前的CVE编号获取方式缺乏扩展性。
另外,即便漏洞被发现并推出了补丁,使用该脆弱代码的公司企业也可能没注意到自己需要打补丁,或者找不出需要打补丁的所有实例。
还有一些公司因为兼容性问题、合规问题等原因而无法迁移到最新版本开源代码,仍在使用带漏洞的老版代码。这也是个问题。
理想情况下,应用会在安全补丁可用的即刻就更新自身,无需任何人为干预。但实际上,这并非始终可行。公司企业需要能够在自身环境中找出所有开源代码的运行实例,持续更新该实例列表,让开发人员避开这些不安全的老旧代码库,并最终在新漏洞被发现时及时部署补丁。
只有知道脆弱库在哪里,才能够将这些有漏洞的代码库从产品中移除。产品开发生命周期中越早移除漏洞,开发和维护成本就越低,过程也更轻松。
在开发过程中集成开源漏洞扫描对大型企业来说尤其重要,因为大企业要跟踪其使用的所有代码是非常困难的。大多数公司都不清楚自己到底有多少个应用,这种情况是很恐怖的。
有些网络工具可以帮公司企业找出内部运行的应用,但如果网络是分隔的,就会出现盲点。公司企业还可以在终端上安装代理以跟踪其上运行的应用。但只要不是全面部署了代理,盲点依然存在。单靠一种方法想要摸清企业环境中的应用情况是不可能的。这也是为什么应用清单梳理如此之难的原因所在。
用工具扫描也得知道环境中到底有多少台服务器才有用。而且,即便扫描全面而准确,也会给公司企业带来沉重的管理负担。如果开发过程中没有融入安全检查,这些扫描就得持续进行,各种应用得不停地分别检查再检查,扫描再扫描。
不仅开发人员会在应用更新过程中引入新的带漏洞的库,之前被认为安全的老库也会曝出新漏洞。软件不是像酒一样越久越醇,而是像牛奶一样一放就坏。
开发人员很少会审查旧工程中用到的库,一般就是到开源项目页面下载下来,集成到自己的应用中,然后就再也不管它了。
郑州知网软件,郑州软件开发公司,郑州软件开发,郑州软件定制,郑州微信开发,郑州进销存定制开发,郑州OA系统开发,郑州软件开发公司