何为开源?
开源,顾名思义,即开放软件源代码。贡献者可将自己编写的程序提交到公开的平台上,其他开发者可以不必再自己动脑筋编写代码,而是直接将贡献者公开的代码进行集成、修改或应用。与传统的闭门造车模式相比,开源这一生态模式无疑极大地提高了生产效率,适应了现代开发市场快速更新迭代的需求。
蓬勃发展:开源技术的黄金时代
根据Synopsys最新发布的统计数据显示,开源技术的应用已经遍布金融服务、金融科技、大数据、AI、健康科技和生命科学等多个领域,平均占比达到95%左右。
开源技术的广泛应用与开源项目的飞速发展相辅相成。根据中国信通院发布的《2021开源生态白皮书》数据显示,近三年全球开源项目数量连续增长率超过40%,项目总数已超过两亿;而国内开源项目数量更是呈爆发式增长,2020年Gitee平台上的开源项目数量已高达1500万,同比增长率192%。
双刃剑:开源技术的风险性
开源技术飞速发展的另一面,是层出不穷的风险问题。开源项目的数量增长同时也意味着漏洞数量的剧增,84%的代码库包含至少一个漏洞,同时,利用开源软件漏洞发起的供应链攻击频频发生,2021年末爆发的的Log4j 安全漏洞堪称互联网领域最为著名的安全事件之一,因其影响面广、破坏力强而备受关注。有超过35,863个JAVA开源软件中所使用的开源组件依赖于 Log4j,根据云安全专家评估,每秒有超过 1000次利用Log4j漏洞的尝试。根据相关调查,有73%的企业表示,近期的软件供应链攻击促使他们“大大加强了对开源软件、容器镜像和第三方软件组件的安全保护”。
除去漏洞风险,开源软件使用过程中的合规风险也不容忽视。尽管开源软件以自由、共享、开放为宗旨,但每个开源软件都会附带一个许可证,开源软件的使用必须遵循许可证条款的约束。如果违反了许可证的条款,就会面临被起诉或索赔等法律及合规风险。
2021 年 4 月 30 日,中国国内首个明确 GPL3.0 协议具有法律效力的案例尘埃落定,原告罗盒公司于2017年获得了Virtual App的软著证书,随后将其许可证协议由LGPL v3更换为GPLv3,但被告未遵守变更后的著作权要求,导致被判侵权并罚款。
如果不同的开源软件许可证被同时使用,还会因条款的冲突而存在兼容性风险。据统计,54%的代码库包含存在许可证冲突的开源代码。除此之外,许可证的缺失也是一大风险,1/3的代码库使用了没有可识别许可证或具有定制许可证的代码,这些代码看似可以自由使用,背后其实暗藏了违反版权法及合规条款的风险。
正确使用:如何保证自己的代码质量安全?
针对开源技术存在的两大风险,第一就是要保证代码的安全性,及时排查是否有危险漏洞的存在,并第一时间修复;第二在使用开源代码时,一定要先明确其开源许可证的条款要求,避免在开发及投入使用的后期阶段面临被起诉等法律合规风险;第三,要时刻保持软件安全的风险意识,定期排查风险情况,才能确保整个开发过程的平稳运行。
当然,要做到上述三点,光靠开发者自己进行手工管理肯定是不够的,在编写代码的同时还要做到全面的安全管理,需要投入大量的时间和精力,往往还会出现事倍功半的效果。所以,在做好代码安全管理这件事上,推荐大家学会运用技术工具,不仅可以提高风险排查的效率,也可以避免人工管理出现的错误遗漏等情况。
例如软件成分分析工具,具有漏洞扫描、合规风险感知、新风险预警等多项功能,就可以很好地帮助开发者检测代码质量,保证代码安全,为开发过程降本增效。
软件成分分析平台效果图
提升代码安全的风险意识,规范化使用开源代码,是安全合规地使用开源软件的根本保障。