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

相关推荐
商业模式源码开发几秒前
2026年GEO优化全解析:生成式引擎优化如何重构企业流量与品牌护城河
大数据·人工智能·ai
对讲机数码科普13 分钟前
黑龙江应急救援单工通信保障方案设计与实战应用
大数据·网络·人工智能
SuperHeroWu716 分钟前
【HarmonyOS AI】DevEco CLI、Skills、知识库运用AI Coding提效详解
人工智能·华为·harmonyos
Old Uncle Tom18 分钟前
银行用户画像 -- 金融目标与需求意图
前端·人工智能·金融
码农学院20 分钟前
AIO与GEO融合趋势:从内容生成到智能搜索优化的技术演进
人工智能
半亩码田21 分钟前
【.NET新特性·第8篇】.NET 9 AI 构建基块:Microsoft.Extensions.AI
人工智能·microsoft·.net
IT_陈寒23 分钟前
Vue的响应式让我加班到凌晨3点,原来问题出在这
前端·人工智能·后端
东方小月24 分钟前
从0开发一个 Coding Agent(一):前言
前端·人工智能·typescript
ZENERGY-众壹26 分钟前
AI 诊断光伏组件热斑:从 10% 功率偏差到深度学习建模的实战复盘
人工智能·深度学习·光伏运维·逆变器api·能源数字化
中微极客26 分钟前
2026 RAG框架横评:LlamaIndex凭检索称霸
人工智能