至顶网软件与服务频道消息:毋庸置疑,我们处于一个开源无处不在的世界,开源不光主导了软件业,也主导了整个IT产业。但是在这背后,开源安全、许可证合规性和操作风险依然很普遍,新思科技近日发布的《2020年开源安全和风险分析》报告(OSSRA)为我们披露了更多开源中的趋势和模式,帮助企业从安全性、许可证合规性和操作角度更好地管理开源风险。
该报告由新思科技网络安全研究中心(CyRC)制作,研究了由Black Duck审计服务团队执行的对超过1250个商业代码库的审计结果。新思科技软件质量与安全部门高级安全架构师杨国梁表示,2020 OSSRA报告中所有审计的代码其实都是真正被用于商业中的,这些审计都是基于事实为依据的。
2020 OSSRA报告重申了开源在当今软件生态系统中的关键作用,揭示了过去一年中经过审计的所有有效代码库(99%)至少包含一个开源组件,其中开源占所有代码的70%。值得注意的是,老化或废弃的开源组件仍然被广泛使用,91%的代码库中包含的组件已经过期四年以上或过去两年中没有开发活动。
开源软件是任何人都可以自由访问、使用、更改和共享(以修改或未修改的形式)的软件。开源软件由许多人制作并根据符合开源定义的许可进行分发。
杨国梁表示,我们可以看到开源在现今的软件组成里面占了很大的比重,商业软件中自研与开源总是交织在一起。“开源其实并不是免费午餐。你要交付软件,遵循许可证的义务就此产生了。 ”
我们也知道市面上存在很多基于开源软件提供商业服务的公司,但是他们并不能完全解决开源的风险。对于开源来说,其实根本没有所谓的开源供应商。商业厂商一般会提供补丁升级软件,但是开源需要自己解决这些问题。因此开源治理至关重要。
开源组件在很多情况下时被研发人员引入的,在编写软件的时候,封装好的开源库和组件非常方便,可以被直接使用。另外,企业在采购商业化软件的时候并不知道软件里面包含了多少开源组件。例如银行会把系统外包给第三方来开发,系统里面有多少开源软件你也不知道,所以开源的使用其实已经非常广泛。
在这样的情况下,安全的问题也就不可避免了。比如新思科技CyRC研究中心发现Heartbleed安全漏洞的主体其实是OpenSSL这样一个开源组件。如果看下Github上的OpenSSL的代码迭代,你会发现它的版本和代码变化非常庞大。
“我们今天说代码里面包含哪些第三方的开源组件,如果你没有一个第三方厂商来配合,你可能根本就没有办法触及到具体的内容。比如说开源组件用了哪个版本,这个版本是否有安全漏洞等。 ”杨国梁说。
在这样的情况下,新思科技Black Duck审计服务支持帮助企业从法律风险、安全风险、质量风险等三个维度实现软件采购中的风险管控。
法律风险涉及开源许可证,要遵循什么样的条件才能合法使用;安全风险就是用到的开源组件到底有哪些安全漏洞;质量风险,如果开源组件出了问题,你其实只能依赖这些社区修复这些问题。 但是如果这个社区不是足够活跃了,可能这个组件两三年都没有人再维护,那么这样的开源组件如果出了问题,对于企业的运维和替换这个组件的风险其实是非常大的。
杨国梁表示,2020 OSSRA报告覆盖的行业包括企业级软件/SaaS、健康医疗、网络安全、金融科技、大数据、虚拟现实等行业。报告中最值得注意的开源风险趋势包括:
开源采用率持续增长。99%的代码库包含至少一些开源,每个代码库中平均有445个开源组件,比2018年的298个有显著增加。被审计的代码中有70%是开源代码,这一数字从2018年的60%增至目前,并且自2015年(36%)以来几乎翻了一番。
相比于2018年,2019年至少包含一个开源组件代码库的行业,很多都达到了100%。对于开源的接纳程度,各个行业是越来越高。不过目前我们对开源的治理,不管是从安全还是从合规,完全跟不上使用量的上涨。
过期和“废弃”的开源组件非常普遍。91%的代码库包含已经过期四年以上或者近两年没有开发活动的组件。除了存在安全漏洞的可能性增加之外,使用过期的开源组件的风险在于更新它们还会带来不必要的功能和兼容性问题。
对于这个问题,杨国梁建议企业应该“自查”,第一是识别,盘点全部软件资产;第二是定制策略管控,通过一个统一的平台持续进行监控,包括安全漏洞、许可协议变动、版本更新等,实时解决新出现的问题。
易受攻击的开源组件的使用再次呈上升趋势。2019年,包含易受攻击的开源组件的代码库的比例从2017年的78%下降至2018年的60%之后增至了75%。同样地,包含高风险漏洞的代码库的比例由2018年的40%增至49%。幸运地是,2019年审计的代码库中都没有受到臭名昭著的Heartbleed漏洞或2017年困扰Equifax的Apache Struts漏洞的影响。
杨国梁说,提升意识是改善现状的关键。如果不知道代码库里有什么,修复也就无从谈起。另外,开源不仅与源码有关,而且与共享重用有关。二进制存储库简化了编码,但是加剧了安全风险。
所谓的“开源供应商”是不存在的,商业化的安全模式并并非总是奏效。这件事情只能依靠你自己来做,你自己约束你的上下游,大家共同提升开源使用的合规程度,才能更好地促进开源的使用。
开源许可证冲突持续使知识产权面临风险。尽管开源软件拥有“免费”的优势,但它与其它软件一样都要受到许可证的约束。67%的代码库包含某种形式的开源代码许可证冲突,33%的代码库包含没有可识别许可证的开源组件。许可证冲突的发生率因行业而异,从最高的93%(互联网和移动应用程序)到相对较低的59%(虚拟现实、游戏、娱乐和媒体)。
杨国梁表示,业界对于合理合规使用开源组件这件事情已经开始重视起来。前20个最受欢迎的开源许可证可能涵盖了你使用的98%的开源代码库,如果把这些许可证的违规情况治理好,那很大程度上你的代码也就合规了。
针对上述情况,2020 OSSRA报告也给出了建议,告诉企业如何从开源受益?第一,开源软件推动现代创新,企业需要培训开发和运营团队识别关键开源组件的使用,认识到开源和商业软件的不同管理方式,指定强大的企业战略从中受益。
第二,开源治理始于开发人员,企业应该培训所有开发人员了解许可证的含义,定义开源使用的补丁策略,列出所有软件清单(BOM)以供开源使用,而不只是源代码。
第三,积极与开源社区互动。开源由社区主导,并得到供应商的支持。在团队中培养参与感和共享所有权,增强分布式开发中固有的协作技能。
“商业厂商和开源社区的一个良好互动,让他们能够更加团结协作。这会让不管是治理信息还是安全信息,能够更加流畅在厂商和社区之间被沟通和分享,那才是一个比较好的使用开源的方向。”杨国梁如是说。
好文章,需要你的鼓励
树莓派基金会调查发现,尽管60%的家长认为编程是孩子的重要技能,但超过70%的家长表示孩子在正常课程中没有学习编程。该基金会CEO指出,随着AI技术快速发展,年轻人掌握技术理解和创造能力比以往更重要。超半数家长认为编程应成为必修课程,并相信学习编程能提升孩子未来职业前景。为填补学校教育空白,基金会呼吁在学校和图书馆广泛设立编程俱乐部,目标到2035年全球教授1000万儿童编程技能。
Patronus AI发布突破性研究,构建了首个系统性AI代理错误评估体系TRAIL,涵盖148个真实案例和21种错误类型。研究发现即使最先进的AI模型在复杂任务错误识别上准确率仅11%,揭示了当前AI代理系统在长文本处理、推理能力和自我监控方面的重大局限,为构建更可靠的AI系统指明方向。
文章介绍了AI大语言模型中最新的深度研究功能,这是目前最令人印象深刻的新功能之一。作者详细解析了ChatGPT、Claude和Gemini等主流模型的使用方法,并重点展示了深度研究功能的实际应用。通过实际测试,作者用ChatGPT 4.5的深度研究功能生成了一份关于1990-2025年最令人厌烦歌曲的详细报告,展示了AI如何通过思维链进行深度研究和分析。文章还提到了语音交互模式将进一步改变用户与AI的交互体验。
这项研究首次从理论和实践证明AI模型可通过模仿生物睡眠-学习周期显著提升性能。研究发现AI训练中存在自发的"记忆-压缩循环",并据此开发了GAPT算法,在大语言模型预训练中实现4.8%性能提升和70%表示效率改善,在算术泛化任务中提升35%,为AI发展指出了注重信息整理而非单纯数据扩展的新方向。