Checkmarx CxSAST 是独特的源代码分析解决方案,可以识别、追踪源代码中的技术漏洞和逻辑漏洞,例如安全漏洞、合规问题和业务逻辑问题。
. Checkmarx CxSAST产品概述
Checkmarx CxSAST 是独特的源代码分析解决方案,可以识别、追踪源代码中的技术漏洞和逻辑漏洞,例如安全漏洞、合规问题和业务逻辑问题。
Checkmarx CxSAST主要由静态分析安全测试SAST和开源分析OSA两部分组成。
CxSAST无需搭建软件项目源代码的构建环境即可对代码进行数据流分析。CxSAST目前支持20种编程语言,如图1.1。CxSAST自带各种编程语言已知安全漏洞的数百个预配置查询规则列表。CxSAST能够以静态报告(如PDF文档等)的方式提供扫描结果,也提供一种在线使用浏览器以交互界面的方式跟踪各漏洞在代码中的运行时的行为,并且提供漏洞潜在的风险、产生缘由和修复建议。使用CxSAST Audit工具,您可按照自己的安全性、质量保证和业务逻辑来配置查询规则,以解决漏报或者误报问题。
图1.1 CxSAST支持20种编程语言
CxSAST部署在服务器上,用户可通过web界面或者IDE插件(Eclipse、 Visual Studio和 IntelliJ Idea)访问。
CxSAST 支持开源分析(Open Source Analysis),支持11种编程语言,如图1.2。使用OSA,您可查找代码中使用的开源代码库,控制和预防引入开源组件带来的安全、法律、商业和技术影响。
图1.2 CxOSA 支持11种编程语言
CxSAST可与软件开发周期中多种系统整合,如软件构建自动化工具(Apache Ant和Maven)、软件开发版本控制系统(GIT, SVN, TFS, Perforce)、漏洞跟踪和项目管理软件(JIRA)、代码仓库托管服务(GitHub)、应用程序漏洞管理平台(ThreadFix)、持续集成平台(Bamboo和Jenkins)、基于云的源代码分析工具(Salesforce)、持续代码质量检查平台(SonarQube),如图1.3。
图1.3 CxSAST集成的第三方系统
CxSAST符合多种国际安全标准,如OWASP TOP 10、SANS、CWE、PCI DSS, HIPAA, BSIMM等,如图1.3。
图1.4 CxSAST符合的的国际安全标准
Checkmarx CxSAST主要功能
CxSAST的web界面提供仪表盘(dashboard)、项目与扫描(Projects & Scans)、管理(Management)、用户与团队(Users & Teams)、数据分析(Data Analysis)、我的账户(My Profile)共6大功能。
在仪表盘中,可以查看全部项目状态(Projects State),扫描失败的项目(Failed Scans),系统利用率(Utilization),全部项目风险情况(Risk)。
在菜单栏点击Dashboard->Project State,进入项目状态列表界面,如图2.1。在该界面可以查看项目名称(PROJECT NAME),最近一次扫描日期(LAST SCAN DATE),团队名称(TEAM),代码行数(LOC),风险指数(RISK LEVEL SCORE),高风险漏洞个数(HIGH VULNERALBILITIES),中风险漏洞个数(MEDIUM VULNERALBILITIES),在线查看扫描结果(OPEN VIEWER),导出扫描报告(CREATE REPORT),下载扫描日志(DOWNLOAD SCAN LOGS),如图2.1。
图2.1 全部项目状态
点击某一个项目名称链接,进入单个项目扫描结果界面。在这个界面可以选择总结(Summary)标签页和扫描历史(Scans History)标签页查看相应内容,如图2.2。
图2.2 项目代码的SAST漏洞状态、SAST扫描历史进程状态和OSA扫描
图2.3 项目代码的SAST漏洞状态
总结标签页(Summary)中的SAST漏洞状态(SAST Vulnerabilities Status)显示了所有扫描历史的漏洞情况。漏洞按照高(High)、中(Med)、低(Low)三种级别分类,并统计其漏洞个数。当扫描次数超过两次时,在第二次及以后,可查看每类漏洞新发现的个数(New)、再次出现的个数(Recurrent)、已被修复的个数(Solved),如图2.3。
图2.4 SAST扫描历史进程状态
总结标签页(Summary)中扫描历史进程状态(SAST progress status)以柱形图的形式显示每次扫描后的高(HIGH)、中(MED)、低(LOW)三类漏洞修复情况。如图2.4。
图2.5 开源分析(Open Source Analysis)
开源分析扫描部分结果如图2.6所示。在开源分析结果中会总结出开源分析的漏洞得分(Vulnerability Score)情况,有漏洞的开源库(Vulnerable Libraries),严重性分布(Severity Distribution),老化的漏洞库(Aging Vulnerable Libraries)。
图2.6 开源分析部分结果
总结标签页(Summary)中还可以进行开源分析(Open Source Analysis)。使用开源分析,将会检测您的项目代码中所使用的开源库的版本号,开源库的安全和质量,分析您的应用程序引入开源库所带来的安全漏洞和法律问题。
扫描历史(Scans History)标签页可查看某个项目的所有扫描纪录,以及每一次扫描的详细情况,如扫描日期(SCAN DATE )、扫描完成时间(SCAN COMPLETE)、风险指数(RISK LEVEL SCORE)、代码行数(LOC)、团队名称(TEAM)、发起者(INITIATOR)、源(ORIGIN)、服务器名称(SERVER NAME)、checkmarx版本号(CX VERSION)、备注(COMMENTS)、访问权限(ACCESS)、锁定状态(LOCKED),如图2.7。
图2.7 某个项目代码扫描纪录
在风险走势标签页中可查看最近7天内风险最高的所有项目。也可产看在7天、30天、365天内的风险趋势情况。
图2.8 风险走势图
在项目与扫描(Projects & Scans)菜单栏下,有4个子菜单,分别是创建项目(Create New Project)、队列(Queue)、项目(Projects)、全部扫描(All Scans)。
创建项目,填写项目名称,如图2.9。
图2.9 填写项目名称
上传项目代码,如图2.10。上传项目代码共有4中方式,本地(Local)、共享文件(Shared)、源代码控制系统(Source Control)、源代码牵引(Source Pulling)。
图2.10 上传项目代码
项目扫描,项目扫描是按队列(Queue)形式进行的,在菜单栏选择项目与扫描->队列,如图2.11。每个引擎(CxEngine)单次只能扫一个项目。扫描过程如下,从本地或其他途径把源代码上传到服务器上,在服务器进行虚拟编译,将源代码处理成代码元素,进行数据流分析。
图2.11 扫描过程
扫描结果列表如图2.12所示。在菜单栏选择项目与扫描->项目,即可查看。
图2.12 扫描结果列表
在项目列表,点击扫描列表按钮(Scan List),查看漏洞扫描结果,内容类似图2.13。
图2.13 网页版扫描结果
扫描结果默认按语言种类和严重等级分类,同时也支持按照OWASP TOP10,和PCI DSS分类,如图2.14。
图2.14 扫描结果分类
代码窗格显示有漏洞的文件的代码,如图2.15。代码区的中有漏洞的代码元素与攻击向量图中的节点相对应,如图2.16。点击攻击向量图中的节点可动态追踪数据在代码中流动的过程。
图2.15 代码区
2.16 攻击向量图
图2.17 漏洞数据流列表
Checkmarx静态代码分析是基于数据流分析,每个扫描结果都是一个数据流如图2.17所示。在扫描结果分类中,选择一种语言的一类漏洞,可查看该类型漏洞的所有数据流。每条数据流都有输入和输出,即源节点和末节点。
图2.18 漏洞点和最佳修复点
Checkmarx同时提供以图(graph)的形式显示数据流,如图2.18所示。每条数据流都是由一系列有漏洞的节点表示,图中的红色节点表示最佳修复点。
Checkmarx提供多次扫描结果对比,如图2.19。在比较结果中可查看多次扫描产生新问题的情况、修复问题的情况、问题重现的情况等。
图2.19 扫描结果对比
图2.20 checkmarx扫描规则
Checkmarx扫描规则是公开的,如图2.20。在管理(Management)->扫描设置(Scan Setting)->查询规则(Query Viewer)中可以查看。Checkmarx以语言分类,支持多大20种编程语言,支持多种开发框架。
图2.21 数据分析
在数据分析(Data Analysis)菜单下,可对所有扫描项目结果进行数据分析,如图2.21。