代码审计——四款主流的源代码扫描工具简介
工欲善其事,必先利其器。
在源代码的静态安全审计中,使用自动化工具代替人工漏洞挖掘,可以显著提高审计工作的效率。学会利用自动化代码审计工具,是每一个代码审计人员必备的能力。在学习PHP源代码审计的过程中,本人搜集使用了多款自动化工具。本文将简要介绍其中三款比较实用的工具:
Fortify SCA(Static Code Analyzer)是由Fortify软件公司(已被惠普收购)开发的一款商业版源代码审计工具。它使用的数据流分析技术,跨层跨语言地分析代码的漏洞产生,目前支持所有的主流开发语言。Fortify SCA是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态分析,分析的过程中与它特有的软件安全漏洞规则进行地匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并给于整理报告。
Checkmarx的CxEnterprise静态源代码安全漏洞扫描和管理方案是一款比较的、综合的源代码安全扫描和管理方案,该方案提供用户、角色和团队管理、权限管理、扫描结果管理、扫描调度和自动化管理、扫描资源管理、查询规则管理、扫描策略管理、更新管理、报表管理等多种企业环境下实施源代码安全扫描和管理功能。
VeraCode静态源代码扫描分析服务平台是商业运营好的平台,数千家 软件科技公司都在使用其服务发现软件安全漏洞、质量缺陷。
白盒代码审计系统建设实践
静态代码分析是指在不实际执行程序的情况下,对代码语义和行为进行分析,由此找出程序中由于错误的编码导致异常的程序语义或未定义的行为。通俗的说,静态代码分析就是在代码编写的同时就能找出代码的编码错误。你不需要等待所有代码编写完毕,也不需要构建运行环境,编写测试用例。它能在软件开发流程早期就发现代码中的各种问题,从而提高开发效率和软件质量。
静态AST(SAST)技术通常在编程和/或测试软件生命周期(SLC)阶段分析应用程序的源代码,字节代码或二进制代码以查找安全漏洞。
商业产品分析Coverity、Fortify、CheckMarx 作为白盒静态扫描领域的产品,拥有极其深厚的技术积累以及的产品技术团队。其产品能力都为业界。笔者曾经和Coverity的售前及***团队有过一定的交流,可以总结以上商业产品的优点及缺点优点深厚的技术积累,产品能力强大,在SAST领域内少有不支持扫描的漏洞类型
***团队,能较为理解用户需求缺点定制化需求支持困难,引擎对用户不透明,需求提交给厂商响应时长为 Month ++
规则学习成本高,规则学习文档不完善,自定义规则困难
厂商以大并发量***license,弹性扩容能力差,存在成本浪费
漏洞模型难以适配每个用户自己内部的漏洞模型,难以准确处理误报、漏洞修复复查等业务需求
融入企业自身的CI/CD流程困难,数据模型需要企业自己转换
***行业用户源代码安全审计服务
案例背景
某***内部软件多数由外包公司开发,存在开发人员水平参次不齐,安全意识薄弱,软件安全方面投入不足等问题,以及该***相对单一的安全测试方法和管理人员缺乏对软件安全等级的验证能力,因此在程序源码层面依旧存在大量安全问题。
针对用户需求,通过源代码安全审计服务,挖掘应用系统隐蔽漏洞,并提出解决方案,以保证用户系统安全。
服务流程
对用户实施的源代码安全审计服务流程分为准备阶段、熟悉阶段、分析审核阶段和总结报告阶段。
?准备阶段
签署保密协议、调研基本情况、熟悉代码和搭建审计环境。
?熟悉阶段
熟悉系统整体架构和各个业务流程等。
?分析审核阶段
工具辅助检测、人工分析、静态分析、动态分析、综合分析和人工验证。
?总结报告阶段
发现并确认风险后,对风险进行分析和编写代码审计报告,包括漏洞名称、漏洞级别、漏洞数量、问题文件、审计过程、风险分析和修复建议。
版权所有©2025 产品网