【代码审计】Tabby环境搭建

admin 2026-04-18 07:09:43 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细介绍了Tabby代码审计工具的环境搭建流程,涵盖Java17和Neo4j数据库的环境配置、Tabby核心与插件的编译安装、项目结构配置、关键配置文件修改、Neo4j数据库配置与插件安装、索引初始化及最终测试运行步骤。关键操作包括修改Neo4j配置文件以允许CSV导入、安装APOC和tabby-path-finder插件、分配足够内存避免OOM,并通过Cypher查询验证环境搭建成功。 综合评分: 78 文章分类: 代码审计,安全工具,技术标准,安全开发,漏洞分析


cover_image

【代码审计】Tabby 环境搭建

原创

十月的进阶之路 十月的进阶之路

十月的进阶之路

2026年4月16日 16:17 重庆

在小说阅读器读本章

去阅读

你的代审baby

目录

一、环境要求

二、安装 tabby 核心

三、安装 tabby-vul-finder

四、配置 tabby 项目结构

五、配置修改

六、配置neo4j 数据库

七、安装 neo4j 插件

八、初始化 neo4j 索引

九、验证插件安装

十、测试运行

注意事项

一、环境要求

  • Java 17:需配置 Java 17 环境。
  • Neo4j 图数据库:推荐使用Neo4j Desktop(需注意版本兼容性,如tabby需要搭配5.26.1)。

二、安装 Tabby 核心

  1. 克隆项目:
   git clone https://github.com/wh1t3p1g/tabby.git
  1. 编译打包: 在项目根目录执行:
   mvn clean package -DskipTests "-Dfile.encoding=UTF-8"
  1. 准备核心 JAR: 将 target 目录下生成的 tabby.jar 复制到项目根目录。

三、安装 tabby-vul-finder

  1. 克隆项目:
   git clone https://github.com/wh1t3p1g/tabby-vul-finder.git
  1. 编译打包: 进入项目目录执行 mvn clean package -DskipTests,生成 tabby-vul-finder.jar
  2. 复制规则文件: 将 tabby-vul-finder/rules/cyphers.yml 复制到Tabby 项目的rules文件夹中。

四、配置 Tabby 项目结构

确保tabby项目目录包含以下结构:

tabby/
├── cases/          # 放置待分析的 JAR 包(如 commons-collections-3.2.1.jar)
├── config/         # 配置文件目录
│   ├── db.properties       # 数据库连接配置
│   └── settings.properties # 分析任务配置
├── output/         # 生成的 CSV 文件输出目录
├── rules/          # 规则文件(含 sinks.json、cyphers.yml 等)
├── libs/           # 目标项目依赖 jar 包
├── temp/           # 临时文件目录
├── tabby.jar       # 核心 JAR
└── tabby-vul-finder.jar # 导入/查询 JAR

关键配置文件

  1. config/settings.properties: 配置待分析项目、JRE路径、分析模式等。
  2. config/db.properties: 配置Neo4j连接信息:
   # 路径适配配置
   tabby.cache.isDockerImportPath            = false

   # Neo4j数据库连接配置
   tabby.neo4j.username                      = neo4j
   tabby.neo4j.password                      = 你的Neo4j数据库密码
   tabby.neo4j.url                           = bolt://127.0.0.1:7687

五、配置修改

java_home修改为Windows本地有效的JDK路径。

# 目标项目java-sec-code为JDK8编译,推荐配置本地JDK8路径
tabby.build.javaHome = D:/Java/jdk1.8.0_202
# 也可使用Windows双反斜杠写法
# tabby.build.javaHome = D:\\Java\\jdk1.8.0_202

tabby.build.isJDKProcess = false,关闭了对JDK内置类的分析,但是如果你打开就会导致OOMtabby的内存由JVM控制,核心通过两个参数调整:

  • Xms:JVM初始堆内存,建议和最大值设为一致,避免运行时动态扩容缩容带来的性能损耗与GC压力
  • Xmx:JVM最大堆内存,决定了tabby能使用的内存上限,也是解决OOM的核心参数
# 示例1:16G内存机器,分配8G最大堆内存(推荐)
java -Xms8G -Xmx8G -jar tabby.jar

# 示例2:32G内存机器,分配16G最大堆内存(大项目/全量依赖分析)
java -Xms16G -Xmx16G -jar tabby.jar

# 示例3:8G内存机器,分配4G最大堆内存(低配环境)
java -Xms4G -Xmx4G -jar tabby.jar

补充说明:此处javaHome是待分析目标项目的编译JDK版本,而tabby本身运行需要 Java17环境,需确保执行java -jar命令时,系统默认Java版本为Java17。配置了tabby.build.target = cases/java-sec-code-1.0.0.jar,必须确保cases目录下确实存在java-sec-code-1.0.0.jar文件,这个jar文件就是你的审计目标,否则build阶段会直接因找不到目标文件失败。

六、配置 Neo4j 数据库

  1. 下载并安装 Neo4j Desktop
  • 官网下载最新版即可,若桌面版无法打开,可先断网再启动。

  • neo4j desktop无法通过ui界面安装程序到指定目录,参考如下命令.\neo4j-desktop-2.1.3-x64.exe /S /D=D:\code-audit\neo4j\app将程序安装到指定目录。

  • 数据库实例推荐版本:5.26.1(需代理才会出现下载版本列表,tabby推荐5.26.1),创建后开始自动下载数据库,这个过程需要点时间。

  1. 修改 Neo4j 配置: 打开Neo4j Desktop,进入数据库管理界面,修改 neo4j.conf。我猜测如果您整个过程中将会碰到的最大的麻烦一定是将tabby的数据导入neo4j,因此请导入数据之前修改neo4j.conf配置文件,这相当重要,参考如下的内容,您可以将您的计算机配置给ai以获取一份量身定制的配置。
   # 注释掉 import 目录限制,允许从任意位置加载 CSV
   #server.directories.import=import

   # 允许 APOC 和 Tabby 扩展
   dbms.security.procedures.unrestricted=jwt.security.*,apoc.*,tabby.*

   #其他配置参考如下
   server.default_listen_address=0.0.0.0

   server.bolt.enabled=true
   server.bolt.listen_address=0.0.0.0:7687
   server.bolt.tls_level=DISABLED

   server.http.enabled=true
   server.http.listen_address=0.0.0.0:7474

   server.memory.heap.initial_size=6G
   server.memory.heap.max_size=6G
   server.memory.pagecache.size=4G

   db.memory.transaction.max=256M
   db.memory.transaction.total.max=1G

   db.transaction.timeout=30m
   server.config.strict_validation.enabled=true
  1. 创建 apoc.conf: 在Neo4j配置目录新建 apoc.conf
   apoc.import.file.enabled=true
   apoc.import.file.use_neo4j_config=false

配置文件目录如下。

七、安装 Neo4j 插件

将以下插件JAR放入Neo4j 的 plugins 目录:

  1. APOC 插件
  • apoc-core:https://github.com/neo4j/apoc

  • apoc-extended:https://github.com/neo4j-contrib/neo4j-apoc-procedures

  • Neo4j v5 需分为 apoc-core 和 apoc-extended

  • 版本对应APOC插件版本前两位需与Neo4j版本一致(如Neo4j 5.26.x对应APOC 5.26.x)。

  1. tabby-path-finder 插件
  • 克隆项目:https://github.com/wh1t3p1g/tabby-path-finder
  • 编译打包:mvn clean package -DskipTests,生成JAR后放入 plugins目录。(注意: 不是tabby-vul-finder插件,别搞混了)

最终您的插件目录包含如下内容。

八、初始化 Neo4j 索引

启动Neo4j数据库,打开Neo4j Browser,执行以下Cypher语句创建索引(通过浏览器访问http://127.0.0.1:7474/,并键入您的账号密码):

CREATE CONSTRAINT c1 IF NOT EXISTS FOR (c:Class) REQUIRE c.ID IS UNIQUE;
CREATE CONSTRAINT c2 IF NOT EXISTS FOR (c:Class) REQUIRE c.NAME IS UNIQUE;
CREATE CONSTRAINT c3 IF NOT EXISTS FOR (m:Method) REQUIRE m.ID IS UNIQUE;
CREATE CONSTRAINT c4 IF NOT EXISTS FOR (m:Method) REQUIRE m.SIGNATURE IS UNIQUE;
CREATE INDEX index1 IF NOT EXISTS FOR (m:Method) ON (m.NAME);
CREATE INDEX index2 IF NOT EXISTS FOR (m:Method) ON (m.CLASSNAME);
CREATE INDEX index3 IF NOT EXISTS FOR (m:Method) ON (m.NAME, m.CLASSNAME);
CREATE INDEX index4 IF NOT EXISTS FOR (m:Method) ON (m.NAME, m.NAME0);
CREATE INDEX index5 IF NOT EXISTS FOR (m:Method) ON (m.SIGNATURE);
CREATE INDEX index6 IF NOT EXISTS FOR (m:Method) ON (m.NAME0);
CREATE INDEX index7 IF NOT EXISTS FOR (m:Method) ON (m.NAME0, m.CLASSNAME);

九、验证插件安装

Neo4j Browser中执行:

CALL apoc.help('all');  // 验证 APOC
CALL tabby.help('tabby'); // 验证 Tabby

若成功返回结果,说明插件安装成功。

十、测试运行

  1. 生成图数据(Build): 在Tabby项目根目录执行如下命令。
   java -Xmx16g -jar tabby.jar

成功后会在 output 目录生成CSV文件。

  1. 导入数据到 Neo4j(Load)
   java -Xms12G -Xmx12G -jar tabby-vul-finder.jar --load ./output/dev
  1. 查询漏洞链: 在Neo4j Browser中执行Cypher查询,验证是否能返回结果。

注意事项

  • Neo4j 版本:需与APOCTabby插件版本严格匹配。
  • 内存配置Neo4jTabby的内存分配需足够大,避免OOM
  • 网络问题Neo4j Desktop下载版本需挂代理。

完成以上步骤后,即可开始使用Tabby进行代码审计和漏洞链分析。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:十月的进阶之路 十月的进阶之路 十月的进阶之路《【代码审计】Tabby 环境搭建》

评论:0   参与:  0