目前在这个信息技术行业高效高产出的时代,开发者对开源组件以及第三方库的引入会极大地降低人力成本以及时间损耗,并且该引入协助简化了开发过程,从而进一步缩减了软件开发生命周期。现如今,开源代码以及开源组件的使用已经逐渐超越闭源,成为主流开发趋势。
什么是开源代码?
开放源代码(Open source code)也称为源代码公开,指的是一种软件发布模式。一般的软件仅可取得已经过编译的二进制可执行档,通常只有软件的作者或著作权所有者等拥有程序的原始码。有些软件的作者会将原始码公开,此称之为“源代码公开”,但这并不一定符合“开放源代码”的定义及条件,因为作者可能会设定公开原始码的条件限制,例如限制可阅读原始码的对象、限制衍生品等。但是开放源代码的同时,由于都可以对代码进行恶意篡改或者信息窃取等不法行为,因此开源代码在拥有众多优点的同时,用户也同时暴露在极高的风险下。
金融机构为什么需要引入第三方开源安全审计工具?
近日由人民银行为首的五部门紧急联合发布了针对金融机构对开源技术合规安全使用的《关于规范金融业开源技术应用与发展的意见》(后文简称为《意见》)。其发布该报告的主旨在于,希望所有金融机构加快完善其开源技术的合规使用,并且贯彻落实“安全使用”这一个核心思想。落实贯彻这个核心思想的首要步骤需从基层开始抓起,金融机构需要对开源组件中含有的开源漏洞、许可证合规性、以及软件物料清单(SBOM)进行合理的管控。这就需要做到部署软件成分分析工具(SCA)来对所有开源代码、开源组件、中间件、开源软件进行扫描,并且做到对漏洞的实时监控以及对其他风险的实时预警。SourceCheck是一款由深圳开源网安技术有限公司自主研发的软件成分分析工具,其包含的漏洞库数量目前处于国内领先位置,其扫描检测覆盖的方面也较为全面,并且针对不同的客户可以提供更为贴切客户自身需求情况的定制化功能的开发,来帮助金融机构更好的落地贯彻本次五大机构联合发布的《意见》一案。
使用开源代码、开源组件以及开源软件中可能遇到的风险?
金融机构在使用开源代码、开源组件以及开源软件中最为可能遇到的风险就是来自于高危漏洞、许可证不合规这两大方面。如果金融机构所使用的开源代码、开源组件以及开源软件中如果含有潜在的高危漏洞,那么随之而来的风险主要是重要配置文件或源代码等敏感数据泄露,更严重的是可能会发生金融机构所有客户的重要个人信息泄露。如果该金融机构所使用的平台存在文件上传功能,则攻击者可以进一步实现远程代码执行的指令(RCE),带来的后果是攻击者可以直接获取服务器的控制权。
如果所使用的开源代码、开源组件以及开源软件中含有未被发现漏洞或者新发现漏洞容易被不法分子所利用来进行恶意的零日攻击(Zero-day Attack)。该攻击种类目前无法有效预先防范,很容易造成无法挽回的损失。因为没有相关处理应对方法记录在档,所以当金融机构被零日攻击时,只能通过找到相关技术人员来临时填补这个漏洞,或者进行相关补救,但是这个补救措施的整体补救时间以及人力成本资源消耗无法进行有效预估。
SourceCheck如何对金融机构所使用的开源代码进行合理高效的风险管控?
SourceCheck可以针对金融机构所使用的所有开源软件、开源项目中的所有开源组件、开源代码进行扫描,并且将其中组件所包含的漏洞,项目中使用到的许可证,通过数据分析归纳总结之后以报告产出以及数据资产可视化等形式呈现给用户。其中报告产出内容主要包括漏洞主要信息(弱点类型、发布时间、关联漏洞、漏洞描述、属性信息、漏洞风险等级、漏洞修复建议方案等),组件信息(开源组件名称、版本、所属语言、包含的漏洞分布、许可ID等),还有许可证合规性审查等。
SourceCheck除了有可以对用户的开源项目进行一个风险实时的扫描以及监控的核心功能点以外,还将信息可视化极大的融合进了工具结果产出呈现的功能中。用户可以在项目模块的位置对该开源项目的概览信息的可视化结果进行解读。其内容主要将应用数量、组件数量、许可数量、漏洞数量、组件风险严重性、许可风险以及漏洞风险百分比占比等信息做一个整体化、可视化的展示,下图为产品示意图:
图1项目模块信息可视化展示图
在该项目模块面板处,用户可以将鼠标放置在任意统计图的任意板块位置处就可以查看信息概览,并且通过点击可以快速进入相应的细节模块信息进行进一步信息查看。同时在该模块下方会有两块重要信息提供给用户,分别是:高危组件Top 10以及未经授权的组件。这两块信息十分的重要,相当于给用户提供该开源项目中着重需要优先去关注的漏洞、许可风险,帮助用户更好的合理分配调度机构的人力、财力以及时间等资源来帮助解决问题。优先集中资源去解决风险最大,优先级最高的一系列问题。用户同样可以点击进所感兴趣的信息进行更多详细信息的了解。
图2 高危组件Top 10以及未经授权组件列表
SourceCheck在组件方面会提供被扫描开源包所含有的第三方组件总数,以及每个开源组件的名称、版本、所属语言、漏洞分布以及许可ID等重要信息。下图是产品该页面的部分截图:
图3 开源组件信息概览页面展示
用户可以点击进任意组件中查看该组件的历史版本信息、含有的漏洞数量、许可数量、应用数量和活跃度等信息,进一步供用户参考。
漏洞信息方面,SourceCheck可以提供漏洞的弱点类型、发布时间、关联漏洞编号、漏洞描述、属性信息(基础分数、影响、可开发性)、漏洞风险等级以及漏洞修复建议方案等重要信息。用户可以通过点击和查看这些信息,对开源项目中存在的漏洞有更深层次的理解,并且可以根据漏洞修复建议方案进行相应的及时应对处理,从而极大程度降低用户因为开源风险所带来的相关损失。
图4 漏洞详情页面展示
许可证信息方面,SourceCheck可以提供给用户开源项目中所包含的所有已收录许可证的信息,同时自动按照由高风险等级到低风险等级进行排序,同时用户也可以针对性地点进需要详细了解的许可证进行详细信息的查看。
图5 许可信息排序概览效果图
在许可证详细信息中,用户可以了解到该许可证的风险级别、许可ID、是否过期、许可证信息参考地址、描述信息以及该开源项目中使用此许可的组件列表。打好金融机构开源安全基础从使用开源网安SCA工具开始。
图6 许可证详细信息展示
上述所有用户可以直观了解到的信息均可以在主目录处的看板部分进行查看。看板模块是针对所有信息进行数据化、可视化的一个概述部分,其中用户除了可以查看到项目、应用、组件、许可、漏洞等数量以外,还可以查看到漏洞变化趋势、组件变化趋势、许可风险严重性、组件风险严重性、被引用次数最多的组件等信息,使用户对该开源项目数据、变化以及趋势有一个更直观的感受。
综上所述,针对《意见》第六、第七以及第十一条,金融机构的用户可以通过部署使用SourceCheck工具,并且阅读开源项目扫描后所产出的分析报告,从而对整体开源项目中潜在的漏洞风险、许可不合规等信息有整体并且可视化的了解,从而进一步判断哪些漏洞是需要优先去修复。主旨在于节约公司人力、资金、时间等成本,从最大程度上减少公司的损失。SourceCheck在金融领域这种行业节奏快,资金流量大的场景下,可以很好的判断重点风险并且及时止损,同时提供起到决定性帮助的解决方案给用户。此外,SourceCheck可以提供对开源组件漏洞以及许可风险等进行实时监控、实时风险预警等功能,从根本预防安全问题,做到有备无患,落实“安全左移”的概念。