工具介绍
Fenrir 是一个基于 MCP 协议与 AST 技术的代码审计工具,旨在解决安全研究与自动化代码审计领域中,面对大规模、结构复杂甚至反编译代码时,传统代码搜索与分析手段效率低、准确性差的问题。
功能特性
1. AST 抽象语法树
本工具实现代码搜索功能的核心原理是为代码构建 AST 抽象语法树。
2. 代码结构分析
基于 AST 语法树实现对于类、方法、属性、父类、子类精确的代码段查找功能,使大模型能够准确的搜索到自己想要的代码段。众所周知,使用 MCP 协议一个很大的痛点就是发送给大模型的上下文容易过长。此举能够剔除冗余信息,解决上下文过长的问题,也利于大模型更有效的做出判断。
3. MCP 协议
使用当下流行的 MCP 协议为 AI 赋能,通过提供功能强大的 MCP 工具,使得大模型能够与安全研究者站在相同的代码语境下平等对话,充分发挥 AI 的 “主观能动性” 。
4. 高效的 AST 缓存机制
支持AST索引的持久化缓存,避免每次分析都重复解析源码,大幅提升大项目的分析速度。缓存机制可配置,支持自动重建和手动清理。
实机演示
选择 Apache 开源项目 Sling CMS 作为待审计的项目,项目地址: https://github.com/apache/sling-org-apache-sling-app-cms
导入 maven 依赖,在本地仓库中找到 sling 的依赖,比如我这里的路径是:C:\Users\miaoj.m2\repository\org\apache\sling:

这些依赖中包含着 Sling CMS 的核心代码,需要全部反编译并将反编译后的代码复制到代码仓库。
完成上述步骤后,指定代码仓库为 Sling CMS 的项目根路径,运行服务端代码,开始为代码仓库构建 AST 索引并保存到缓存文件,并开启一个 SSE 监听:

使用 Cherry Studio 作为 MCP 客户端连接此服务器,下面我们让 Deepseek 从登录逻辑 LoginServlet 处开始分析,LoginServlet 位于依赖 org.apache.sling.auth.core 反编译后的代码中:

来看看大模型的表现:




-
首先,我们能够看到对于 Apache Sling CMS 这样的大型项目也能够正确地进行 AST 解析。
-
其次,反编译的代码也能被正确解析并被查找到。
-
再次,deepseek 画出了调用图展示了其链式调用的过程,体现了本工具自动化链式查找并分析的强大功能。
-
最后,deepseek 指出了存在安全风险的代码段并给出了修复建议,完成了代码审计。
工具获取
https://github.com/ChangeYourWay/Fenrir-CodeAuditTool
文章来源:夜组安全













暂无评论内容