DeepAudit AI多智能体代码审计项目学习与解读(四)

DeepAudit AI多智能体代码审计项目学习与解读(四)

本篇主要探讨DeepAudit中的工具

工具基类(base.py

工具位于app/services/agent/tools下,所有工具继承自 AgentTool 基类(app/services/agent/tools/base.py),在前面的文章中已经知道,agent会使用app/services/agent/agents/base.py中的execute_tool去调用工具:

Agent如何调用工具

对于recon agent,其输入是step的的action和action_input字段

  • action:要调用的工具名
  • action_input:要调用工具的入参

由LLM结合_parse_llm_response结构化输出的结果就是step:

值得注意的是,Step这样的类在各个agent中尤其是调用工具的agent中并没什么不同

数据类

前面已经知道了各个Agent中的Step会提供工具的输入,而工具的结构化输出由基类中的ToolResult决定:

必须实现的方法

基于AgentTool工具基类实现自定义工具必须实现以下方法:

  • name:

  • description

  • _execute

工具加载(LLM加载工具描述)

前面知道工具的调用会基于step去做,但是LLm还需要知道有哪些工具以及这些工具可以做什么才知道应该调用什么工具,在DeepAudit中是通过Agent初始化对话历史时加入所有工具描述实现的:

工具

工具数量很多,随便看看就行

  1. 基础文件操作工具

    • FileReadTool: 读取项目中的文件内容,支持读取特定行范围,避免输出过长

    • FileSearchTool: 在项目代码中搜索关键字或模式,支持正则表达式和文件名模式

    • ListFilesTool: 列出目录中的文件,支持递归和文件名模式匹配

  2. 代码分析与扫描工具

    • CodeAnalysisTool: 代码分析工具

    • DataFlowAnalysisTool: 数据流分析工具

    • SmartScanTool: 智能扫描工具

    • QuickAuditTool: 快速审计工具

    • PatternMatchTool: 模式匹配工具

    • RAGQueryTool: RAG知识库查询工具

    • SecurityCodeSearchTool: 安全代码搜索工具

    • FunctionContextTool: 函数上下文分析工具

  3. 专业安全扫描工具

    • SemgrepTool: 多语言静态分析工具,支持30+种编程语言

    • BanditTool: Python专用安全扫描工具

    • GitleaksTool: 密钥泄露检测工具,检测硬编码密钥、密码等

    • SafetyTool: Python依赖漏洞扫描工具

    • NpmAuditTool: Node.js项目依赖漏洞扫描工具

    • TruffleHogTool: 密钥和凭证检测工具

    • OSVScannerTool: 开源漏洞扫描工具

    • KunlunMTool: PHP和JavaScript语义分析工具

  4. 漏洞验证与测试工具

    • SandboxTool: Docker沙箱工具,提供隔离环境执行代码

    • SandboxHttpTool: 沙箱HTTP测试工具

    • VulnerabilityVerifyTool: 漏洞验证工具

    • CommandInjectionTestTool: 命令注入漏洞测试工具

    • SqlInjectionTestTool: SQL注入漏洞测试工具

    • XssTestTool: XSS漏洞测试工具

    • PathTraversalTestTool: 路径遍历漏洞测试工具

    • SstiTestTool: 模板注入漏洞测试工具

    • DeserializationTestTool: 反序列化漏洞测试工具

    • UniversalVulnTestTool: 通用漏洞测试工具

  5. 多语言代码测试工具

    • PhpTestTool: PHP代码测试工具

    • PythonTestTool: Python代码测试工具

    • JavaScriptTestTool: JavaScript代码测试工具

    • JavaTestTool: Java代码测试工具

    • GoTestTool: Go代码测试工具

    • RubyTestTool: Ruby代码测试工具

    • ShellTestTool: Shell脚本测试工具

    • UniversalCodeTestTool: 通用代码测试工具

  6. Agent协作与流程控制工具

    • CreateSubAgentTool: 创建子Agent工具

    • SendMessageTool: 发送消息工具

    • ViewAgentGraphTool: 查看Agent图工具

    • WaitForMessageTool: 等待消息工具

    • AgentFinishTool: Agent完成工具

    • RunSubAgentsTool: 运行子Agent工具

    • CollectSubAgentResultsTool: 收集子Agent结果工具

    • ThinkTool: 思考工具,允许Agent进行内部思考

    • ReflectTool: 反思工具,用于自我评估

  7. 代码执行与功能提取工具

    • RunCodeTool: 通用代码执行工具

    • ExtractFunctionTool: 函数提取工具

  8. 报告与输出工具

    • CreateVulnerabilityReportTool: 创建漏洞报告工具

    • FinishScanTool: 扫描完成工具

    1. 漏洞验证工具(沙箱)
      • VulnerabilityValidationTool: 漏洞验证工具

代码审计的工具调用分析

接下来探讨DeepAudit代码审计过程中的工具调用是否存在问题。

  • Recon调用了list_files、semgrep_scan、gitleaks_scan、npm_audit、 osv_scan、rag_query、search_code、think,Recon工具:

    由于扫的是java+nodejs项目,明确用于python的工具没有使用,而Gitleaks和trufflehog_scan这两种工具只调用了前者,尽管trufflehog_scan的工具描述建议与Gitleaks搭配使用:

  • Analysis调用了read_file、semgrep_scan、gitleaks_scan、smart_scan、pattern_match、dataflow_analysis、 security_search、search_code、think、reflect,有三种没调用

    可以发现dataflow_analysis调用出现了错误,但是缺少重试,或调整超时时间:

  • Verification调用了read_file、run_code,其他工具均未调用,而Verification的工具超过20个,有意思的是我发现在使用run_code验证java 路径穿越漏洞时失败了,但是它使用python去模拟了这个路径穿越的过程,函数使用的也是python的函数,乐:

  • Orchestrator未调用任何工具,think、reflect均未被调用

总结

  • 涉及到工具调用的Agent会在初始化LLM对话历史时将所有的工具描述加载,Recon拥有12种工具,analysis拥有13种工具,verification更是拥有超过20种工具,如此多的工具描述会增加token消耗,同时,Agent可能无法正确推理出应该调用哪些工具,所以重点是要实现工具的按需加载,Skill或许是一个不错的选择

  • 如果无法按需加载,尽量保证一个Agent只拥有3-5个工具,拥有过多工具的Agent最好拆分为多Agent

  • 缺少要求工具必须执行和执行失败进行一定次数重试或尝试修改超时时间的机制,直接集成到CI/CD会出现问题,比如思考和反思对应的工具缺少必须执行的机制,像thinkTool仅在Recon和Analysis中使用了,Orchestrator每次迭代时都进行思考和反思会不会更好

DeepAudit的系列文章到此为止,项目整体可圈可点,最后感谢开源:https://github.com/lintsinghua/DeepAudit

相关推荐
回眸&啤酒鸭1 天前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智1 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
AI的探索之旅1 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein1 天前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
LaughingZhu1 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
美狐美颜SDK开放平台1 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
wukangjupingbb1 天前
智能网联汽车安全能力框架
人工智能
龙亘川1 天前
明月照湾区,智启新赛道:从顶流文旅IP盛会看智慧文旅升级路径
人工智能·智慧城市·开源软件·数据可视化
飞猫的边缘AI1 天前
边缘AI应用:家用AI摄像头怎么做数据训练?
人工智能·边缘计算·ai算法·边缘ai