扩展规则是用来帮助Xcheck检查器去适配各种项目框架的一个解决方案。通过扩展规则模版,简单的填写项目框架中的一些必要信息(如类名,函数名等),即可让Xcheck检查器在扫描该项目的过程中,**“认识”**私有框架(或忽略某些片段),帮助用户挖掘代码中隐藏的安全风险。
首先,需要私有化部署Xcheck,并在部署的Xcheck网页上申请Token:
申请完成后,记录
后台地址URL
Token
完成上述步骤后,安装私有化交付配套的Xcheck扩展规则客户****端(win/mac)并打开:
软件打开后界面如图,共两个Tab:扩展规则/设置
首次打开Xcheck扩展规则客户端,需要完成以下几个步骤:
在本地磁盘新建一个目录例如C:/rule/rule,并在扩展规则客户端设置中填写。注:需要用户提前创建目录,并且至****少为盘符下两级(包含两级),如不可为C:/rule,否则可能会有文件读写权限问题
在设置中填写规则测试服务器,如http://xcheck.com
在左侧设置中填写插件鉴权Token(在Xcheck后台页面创建)
完成以上三个步骤即为初始化完成,接下来就可以使用扩展规则客户端的核心功能:
添加规则并测试,若生效即可导出规则zip包,通过拖拽等方式上传至Xcheck网页
接下来重点介绍一下核心功能的使用方法。
以一个Java私有项目为例,介绍如何添加规则,帮助检查器识别框架。
注:一些关键信息在代码注释中
package file_testcase; import com.lib.FileUtils; // 需要适配的包名类名 import java.io.File; public class FileTest { @RequestMapping("test0") public String test0(String name0) { File f = FileUtils.createFile(name0); // createFile是污点传播场景的方法名称 // name0是污点,且下标是0(第一个参数) // 返回类型是java.io.File f.delete(); } @RequestMapping("test1") public String test1(String name1) { FileUtils.deleteFile(name1); // deleteFile是危险函数场景的方法名称 // name1是污点,且下标是0(第一个参数) // 此处存在任意文件删除漏洞 } }
首先切换到“扩展规则”Tab:
点击上方标题右侧添加规则按钮,然后分为4步:
此处为污点传播场景的扩展规则,因此场景类型选择污点传播
•需要适配的包名类名:com.lib.FileUtils•方法名字:createFile•污点参数:0,因为污点name0是createFile的第一个参数•返回类型:java.io.File,因为FileUtils.createFile返回的类型是File
确认无误后点击确定按钮,提交即可
编写好规则之后,扩展规则客户端提供了低成本的规则测试方法:
找到刚才添加的扩展规则那一行,点击右侧测试按钮,自行选择测试样本根文件夹,等待测试结果。前后两次结果不同,表示扩展规则生效。
0x04 名词解释
污点:英文名source,指系统中会使用到的用户可控/不受信任的数据
风险(危险)函数:英文名sink,指可能触发危险行为如文件操作、命令执行、数据库操作等行为的函数
•Q: 点击测试之后,按钮一直转圈?•A: 可能扫描项目过大,请替换成较小项目,并重新打开客户端重试
Xcheck的扩展规则还在持续迭代中,后续会逐步优化从而提高易用性,减轻用户的使用成本,敬请期待。