当前位置: 首页 > 科技观察

工具推荐:三款自动化代码审计工具

时间:2023-03-15 23:19:44 科技观察

0×01简介工欲善其事,必先利其器。在源代码的静态安全审计中,使用自动化工具代替人工漏洞挖掘,可以显着提高审计工作的效率。学习使用自动化代码审计工具是每个代码审计员必备的能力。在学习PHP源码审计的过程中,收集并使用了多种自动化工具。本文将简单介绍其中三个比较实用的工具:RIPS、VCG、FortifySCA。RIPS是一个开源的自动化代码审计工具,具有强大的漏洞挖掘能力。它是用PHP语言编写的,用于静态审计PHP代码的安全性。VCG(VisualCodeGrepper)是一款免费的代码安全审计工具,支持C/C++、C#、VB、PHP、Java和PL/SQL。是一款基于字典的检测工具,功能简洁,使用方便。FortifySCA(StaticCodeAnalyzer)是FortifySoftwareCompany(已被HP收购)开发的商业源代码审计工具。它采用独特的数据流分析技术,跨层、跨语言分析代码漏洞,目前支持所有主流开发语言。本文结合一个应用实例的分析,介绍这三个工具的用法和特点。0×02RIPSRIPS的主要特点如下:1)可以检测XSS、SQL注入、文件泄露、本地/远程文件包含、远程命令执行等多种漏洞。2)有5个级别的选项用于显示和辅助调试扫描结果。3)标记存在漏洞的代码行。4)突出显示变量。5)将光标悬停在用户自定义函数上以显示函数调用。6)在函数定义和调用之间灵活跳转。7)详细列出所有用户定义函数(包括定义和调用)、所有程序入口点(用户输入)和所有扫描文件(包括包含文件)。8)可视化显示源代码文件,包括文件、函数及其调用。9)使用CURL只需点击几下鼠标即可为检测到的漏洞创建EXP实例。10)详细列出每个漏洞的描述、示例、PoC、补丁和安全功能。11)7种不同的语法高亮模式。12)使用自上而下或自下而上的方法跟踪并显示扫描结果。13)支持PHP的本地服务器和浏览器即可满足使用要求。14)定期搜索功能。RIPS最新版本为0.55,下载链接如下:https://sourceforge.net/projects/rips-scanner/将下载的zip文件解压到Web服务器网站目录下。在浏览器中输入web服务器地址和对应的目录,RIPS工具的用户界面如下:最上面是一个菜单,里面有所有的功能按钮。扫描任务完成后,菜单中会出现4个新按钮,用于显示/隐藏4个扫描结果窗口:扫描文件、用户输入点、扫描状态信息和扫描功能。现在用一个简单的例子来说明RIPS的使用,下载链接如下:http://jsdx.down.chinaz.com/201603/webjoker_v2.2.0.zip这个PHP应用是用来统计一个网站的用户访问量的网站,登录程序后台查看详细访问信息。将下载的程序解压,在RIPS的“路径/文件”选项中填写程序解压目录,其他选项保持默认,点击“扫描”按钮开始扫描任务。扫描完成后,点击窗口菜单的4个按钮,可以显示任务详情。文本部分显示扫描到的漏洞详情,点击“全部隐藏”按钮可以查看/隐藏每个文件的详细漏洞结果列表。让我们看一下其中一个漏洞的详细信息。init.php源代码中存在SQL注入漏洞。未经过滤的$procookie参数由cheapcookie()函数直接调用。将光标悬停在cheapcookie()函数上以显示如何定义cheapcookie()函数。cheapcookie()函数在main.php文件中定义。可以看到,直接将未经过滤的参数带入到SQL语句中执行。在漏洞详情中,显示$procookie参数是由$_COOKIE[count_admin]传递的。从init.php源码的上下文可以看出,该参数是用于后台登录cookie值验证的。当count_admin值与数据库中的数据不匹配时,验证失败。将POST包中Cookie中的count_admin改为“'或1=1#”,即可绕过cookie验证,直接进入后台。0×03VCGVCG是一款基于字典的自动源码扫描工具,可由用户自定义扫描数据。它可以快速定位源代码中所有具有潜在风险的函数和文本。VCG的下载链接如下:http://sourceforge.net/projects/visualcodegrepp/双击下载的msi文件进行安装。可以在设置->选项->配置文件选项中编辑每种语言的扫描配置文件。单击“设置”选项以选择要扫描的目标语言类型。点击File->NewTargetDirectory选项,选择要扫描的源代码文件存放目录。我们选择上面提到的应用实例存放目录。单击“扫描”->“全面扫描”选项开始扫描。扫描结果以图标的形式对扫描文件的数据进行统计。这个功能有点鸡肋。我们重点关注结果和汇总表面板中显示的内容。结果面板显示所有存在安全风险的源代码。右键单击以对结果进行排序和过滤。汇总表面板是结果面板内容的汇总显示。VCG通过匹配字典来发现潜在风险的源代码片段。它的扫描原理比较简单,与RIPS不同的是,它没有深入挖掘应用程序漏洞。VCG可以作为快速定位源码风险函数的辅助工具。0×04FortifySCAFortifySCA是商业软件,价格比较贵,所以只找了一个早期版本试用。因为是商业软件,所以有详细的说明文档,查阅起来很方便。支持部分IDE插件功能,安装时会有选项。FortifySCA的代码审计功能依赖于其规则库文件。我们可以下载更新后的规则库,放在安装目录下相应的位置。bin文件放在安装目录下的Core\config\rules文件夹中,xml文件放在Core\config\ExternalMetadata文件夹中(如果该文件夹不存在,则新建一个)。打开AuditWorkbench,点击StartNewProject->AdvancedScan选项即可快速启动审计任务。选择需要审计的应用根目录,在AdditionalOptions选项中选择要使用的规则库,在AuditGuide提出的四个问题中选择相应的选项,点击RunScan。审计结果由5个专家组提出。让我们看看与RIPS审计结果相同的SQL注入问题。点击左侧的问题,源代码面板会自动定位到出现问题的源代码行。分析跟踪面板显示详细的数据趋势。从COOKIE中读取->为变量$procookie赋值->导入cheatCookie()函数->为变量$sql赋值->导入mysqli_query()函数执行。左边每个图标的含义可以在用户手册中找到。单击每一行以自动导航到相应的源代码行。同时,在问题审计面板的Diagram中,有一张更加形象的数据流图,直观的展示了漏洞产生的原因。审核面板的其他选项卡详细说明了漏洞信息。与RIPS等开源软件相比,FortifySCA审计结果的展示更为详细。Tools->GenerateReport功能还可以根据用户需要生成审计结果报告。0×05总结VCG不同于其他两个工具。是一款简洁的风险函数扫描定位工具,实现了基于字典的扫描功能。RIPS和FortifySCA是静态深入分析源代码漏洞的利器。他们利用各自的技术对应用程序的执行过程进行跟踪分析,并进行深入的漏洞挖掘。RIPS易于部署和使用,可以作为简单应用功能的自动化审计分析工具。而FortifySCA更强大,可以胜任更复杂的应用自动化分析。在实际审计工作中,可以将这两种工具结合使用,取长补短。自动化静态代码审计工具可以节省代码审计的人力成本,是提高代码审计效率的重要手段。但是,应该注意的是,自动化工具并不是完全智能的。与所有漏洞扫描工具一样,误报的存在仍然是一个现实问题。因此,报告中显示的漏洞是否真的存在,还需要审计人员进一步确认。此外,自动化工具还有一个很大的局限性:它只能挖掘常见类型的Web应用漏洞,对于挖掘Web2.0时代出现的业务逻辑漏洞可以说无能为力。因此,对于有经验的代码审计人员来说,审计工具只是起辅助作用,他们会在工具使用的基础上,根据自己的经验,挖掘出更深层次的漏洞。