通过本地静态污点分析规则(req.query.name → path.join → fs.readFile)和运行时探测,在不依赖云端 AI 的情况下完整捕获 CWE-22 路径遍历漏洞。
以下是一个小型 Express 演示应用中的路由(scan-target-demo-apps/apps/06-path-traversal):
app.get('/files', (req, res) => {
const name = req.query.name;
const filePath = path.join(docsDir, name);
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
return res.status(404).json({ error: 'file not found', path: filePath });
}
res.type('text/plain').send(data);
});
});
name 直接从查询字符串取出来,直接塞进 path.join() —— 没有任何检查来确保解析后的路径仍然留在 docsDir 内部。path.join('./docs', '../secret.txt') 会愉快地把路径解析到 ./docs 之外的文件。请求 /files?name=../secret.txt,服务器就会读取并返回它本应限制在 ./docs 之上的那一层目录里的任意文件。
经典的 CWE-22、OWASP A01:2021(失效的访问控制)。这个漏洞本身没什么新奇 —— 有意思的是它是如何被发现的,以及有多少种独立的检测方式。
我们把这个目标跑了一遍 AI Security Studio,这是我们一直在做的离线的安全研究平台。没有云端调用,没有任何代码离开本机。
这是这个系列里第一个同时被流水线两端确认的漏洞,不只是某一端:
1. 静态分析 —— 在任何人打开应用之前。同一条标记命令注入的 JavaScript 污点规则也声明了一个文件系统 sink:fs.readFile / readFileSync / writeFile / .sendFile( 等等。它在 server.js 内部完整追踪了 req.query.name → path.join(docsDir, name) → fs.readFile(filePath, …),并自动生成一条发现 —— Risk: High、CWE-22、OWASP A01:2021 —— 零人工步骤。这条发现的可达性得分是:不受信任的输入到达了文件系统 sink。
2. 动态分析 —— 活的、自动化探测。不同于这个系列里其他一些漏洞类别(主动探测那端还没接上),路径遍历有一个真实的、默认开启的探测(PathTraversalProbeAdapter、ProbeSafetyTier.ReadOnly)。把它指向 /files 并带上 name 参数跑一下:它会返回一个 Critical 发现、Confidence: Likely,以及——通常是人工报告才会有的部分——一条已经生成好的、随时可跑的 curl 复现命令。这条发现的得分是「已确认利用」,所以它落在比同一个根因的纯静态发现更高的风险等级。同一漏洞在不同流水线阶段出现不同数字是正常的,不是平台 bug。
手动验证也只需要浏览器,不需要任何工具:
GET /files?name=../secret.txt
返回 secret.txt 的内容,这个文件位于应用预期的 ./docs 根目录的上一层,根本不应该通过 /files 访问到。
你可以对着未发布 / 内部的代码跑它,而厂商的云端流水线永远不会接触到它。
规则引擎和主动测试探测 —— 而不是 LLM —— 负责真正的发现和真正的利用。结果是可复现的,多次运行之间不会漂移。
本地 LLM 的职责缩减到它真正擅长的事情上:把已经结构化的证据(有污点的源码行、可用的 curl 证明、CWE/OWASP 引用)转成通俗易懂的语言 —— 「不受信任的输入通过未做清理的 path.join 到达文件系统读取,允许在预期目录之外任意泄露文件。」原始的请求 / 响应体、原始的源码文件,永远不会直接交给模型。
这个演示应用是故意留有漏洞的开源项目 —— 安全地供任何扫描器(包括这个)扫描:
Try it yourself → https://github.com/sendwavehub/scan-target-demo-apps Windows Store https://apps.microsoft.com/detail/9pj0j7bk1m27?hl=en-US Web Site https://Sendwavehub.tech/en/apps/ai-security-studio-4
为安全研究人员、渗透测试员和正在执行授权工作的 AppSec 团队打造。