随着大数据、云计算、人工智能的不断发展,从移动应用到基于云的系统再到内部部署的遗留系统,大多数政府行业用户在管理着成百上千的软件元素。此类软件通常是由现成的商业软件包和定制构建的代码库共同组成。随着软件系统的复杂程度增加,软件开发过程及软件供应链链条也越来越长。软件的快速上线,能帮助政府行业用户提高效率、促进发展。但软件代码安全问题也在法律遵从、信息安全、IT投资等方面为政府行业用户带来了严峻的问题与风险。根据近年绿盟科技的研究,政府行业用户在代码安全方面常面临以下几方面的困扰:
Ø 需满足上级部门代码安全监管要求;
Ø 软件漏洞修复成本太高;
Ø 搞不清自主研发或外包研发的软件系统使用了哪些开源组件;
Ø 搞不清开源组件当前的安全状况;
Ø 自动化对接软件开发流程;
Ø 安全部门和业务部门对于代码安全有不同的态度,安全团队认识到安全开发的重要性,而业务团队不愿因此放弃系统快速上线,从而产生矛盾。
绿盟科技根据政府行业用户业务场景打造的绿盟代码安全审计系统(SDA),可在软件发布前,对源代码及组件进行安全检测,满足合规需求;在软件发布后,进行二进制检测和生成BOM清单,帮助政府行业用户掌握软件资产和风险状况。绿盟代码安全审计系统(SDA)是应用安全测试范畴中的子集,主要以软件成分分析的形式,在编程和测试阶段,发现应用程序中的安全缺陷,并将此过程集成到软件生命周期中。业务数据平面,主要是对源代码进行缺陷审计,并将审计结果传给管理平面。业务数据平面可对自有代码、开源组件进行审计,其中开源组件审计包括合规性在内。
1.源代码审计
绿盟代码安全审计系统(SDA)支持常用源代码静态审计功能,包括C、C++、Java、PHP、Go、Python、JSP等。除了对源代码进行分析外,本系统还只对部分编译后的代码进行静态分析功能。例如java语言的.class文件、jar包等。针对源代码中常见的缺陷漏洞,本系统能检查的缺陷类型包括:SQL注入、XSS、密码硬编码存储、不安全配置、堆栈信息泄露等40种安全分类。
2.开源组件审计
绿盟代码安全审计系统(SDA)还支持对项目中应用的第三方组件、代码库进行依赖检测。检测到后,根据内置的漏洞库进行匹配,查看当前被引用的组件是否有已知的漏洞。本系统当前支持Java、Python、C/C++语言的组件依赖检测。内置的漏洞库包括OWASP TOP 10已知漏洞组件。
开源组件审计的工作流程一般分为两个阶段,信息收集阶段和开源组件漏洞分析阶段:
Ø 信息收集阶段:通过扫描和遍历给定的目录中文件,尽可能多的找到软件组成的信息,给后面分析阶段提供数据;
Ø 组件漏洞分析阶段:也称为知识库匹配阶段,通过信息收集阶段获得到的数据,与知识库(组件库和漏洞库)的匹配,来进行软件组成的分析和漏洞分析。
3.开源组件识别功能
通过对源代码进行遍历和提取,收集各个文件的属性特征,统计文件的基本信息;通过对比组件库规则,找出源代码中使用的开源组件;基于千万级开源软件版本库,精确匹配识别特征文件中的开源软件。
4.开源组件风险分析
Ø 开源漏洞识别功能
通过多模匹配、词法分析等技术,来主动识别源代码中的证书信息,给出使用开源证书信息列表,以及证书冲突性检测。
Ø 许可证证书识别功能
通过扫描出来的开源组件的列表,在组件漏洞库中进行漏洞匹配,分析出存在漏洞的开源组件,发现潜在威胁,给出修复建议。
Ø 漏洞跟踪功能
通过依赖关系分析识别技术,来对漏洞组件在代码中传播的途径进行跟踪,找到漏洞传播的途径。
绿盟代码安全审计系统(SDA)技术完全自主研发,安全可控,目前已积累数千万开源组件版本数据。支持与安全设备联动,形成安全闭环。同时可提供丰富的API接口,供第三方平台调用。还可为政府行业用户解决安全部门和业务部门的分歧,保障业务快速上线,并掌握开源资产情况。在开发阶段发现漏洞降低修复成本,并极大缩短开发周期等待时间。