LangChainAI代码审计Agent初用心得

admin 2026-05-27 05:39:43 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分享使用LangChain框架构建AI代码审计代理的实践经验,重点介绍其工具集成、链式调用和RAG处理等优点,同时指出依赖服务商、高资源消耗和AI幻觉等局限性。作者通过PHPSSRF检测工具示例展示漏洞发现过程,并提出添加验证模块、国标RAG和任务自动化等改进方向。 综合评分: 78 文章分类: 代码审计,AI安全,漏洞分析,安全工具,安全开发


cover_image

LangChain AI代码审计Agent 初用心得

d2550自留地

2026年5月25日 09:37 江苏

在小说阅读器读本章

去阅读

以下文章来源于ap0s ,作者ap0s

ap0s .

安全小白

LangChain AI代码审计Agent 初用心得

本人使用的优缺点总结

优点

  1. 封装prompt、llm,Parser 调用确实方便
  2. 工具集成,如一个@tool就可以封装成一个agent的方法
  3. 链式调用
  4. 对RAG处理以及向量数据库处理比较方便

缺点:

  1. 受服务提供商的限制,如官方GLM暂未集成

框架

设计思想是通过对审计的重点使用@tool进行封装,让agent知道自己要干哪些事情,然后进行补充,这里写死比较局限,得喂一些rag

"""
PHP Ssrf 检测工具
"""
from langchain_core.tools import tool
from typing import List, Dict, Any
import re

@tool
def detect_php_ssrf(code: str) -> List[Dict[str, Any]]:
    """检测 PHP SSRF (服务端请求伪造) 漏洞"""
    import re
    vulnerabilities = []
    """例如"""
    patterns = {
        "file_get_contents": {
            "pattern": r'file_get_contents\s*\([^)]*\$_(GET|POST|REQUEST)',
            "severity": "HIGH",
            "description": "file_get_contents 使用用户输入,可能 SSRF"
        },
        "curl_setopt URL": {
            "pattern": r'curl_setopt.*CURLOPT_URL.*\$_(GET|POST|REQUEST)',
            "severity": "HIGH",
            "description": "cURL 请求 URL 由用户控制"
        },
        "fopen用户输入": {
            "pattern": r'fopen\s*\([^)]*\$_(GET|POST|REQUEST)',
            "severity": "MEDIUM",
            "description": "fopen 打开用户指定的 URL"
        },
    }

    lines = code.splitlines()
    for i, line in enumerate(lines, 1):
        for vuln_type, info in patterns.items():
            if re.search(info["pattern"], line, re.IGNORECASE):
                vulnerabilities.append({
                    "type": f"PHP SSRF - {vuln_type}",
                    "line": i,
                    "code": line.strip(),
                    "description": info["description"],
                    "severity": info["severity"]
                })

    return vulnerabilities

使用漏洞分析+污点检测的,判断此处是否用户可控

## 详细发现

### 1. SSRF (服务端请求伪造) - CRITICAL

**位置**: webhook/model.php 第 580-620 行,misc/model.php 第 200-250 行
**检测方式**: detect_php_ssrf + LLM 分析
**污点验证**: is_tainted=True, confidence=HIGH

审计结果

目前看来,确实能够审计出来一些有用或者可以水cve的洞,对于组合漏洞的挖掘效果不是很尽如人意

关于ai幻觉

让每次ai干活的时候,让读取一个类似于:《用户使用协议》的东西进行排除,但是不能完全排除

消耗

因为不集成GLM,所以我这里使用的QWEN3.5-PLUS,简单审计100w token就消耗完了,LangChain这种工具的开发还是得使用本地模型进行调试

TODO

  1. 添加LLM漏洞验证模块
  2. 添加国标+实际漏洞的RAG
  3. 添加任务模块让工具自行pull干活

免责声明:

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

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

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

本文转载自:d2550自留地 《LangChain AI代码审计Agent 初用心得》

评论:0   参与:  0