文章总结: 本文分享使用LangChain框架构建AI代码审计代理的实践经验,重点介绍其工具集成、链式调用和RAG处理等优点,同时指出依赖服务商、高资源消耗和AI幻觉等局限性。作者通过PHPSSRF检测工具示例展示漏洞发现过程,并提出添加验证模块、国标RAG和任务自动化等改进方向。 综合评分: 78 文章分类: 代码审计,AI安全,漏洞分析,安全工具,安全开发
LangChain AI代码审计Agent 初用心得
d2550自留地
2026年5月25日 09:37 江苏
在小说阅读器读本章
去阅读
以下文章来源于ap0s ,作者ap0s
ap0s .
安全小白
LangChain AI代码审计Agent 初用心得
本人使用的优缺点总结
优点
- 封装prompt、llm,Parser 调用确实方便
- 工具集成,如一个
@tool就可以封装成一个agent的方法 - 链式调用
- 对RAG处理以及向量数据库处理比较方便
缺点:
- 受服务提供商的限制,如官方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
- 添加LLM漏洞验证模块
- 添加国标+实际漏洞的RAG
- 添加任务模块让工具自行pull干活
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:d2550自留地 《LangChain AI代码审计Agent 初用心得》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论