ARTICLE · 1005178
当 AI 开始读你的源码:Shannon 白盒渗透实测
当 AI 开始读你的源码:Shannon 白盒渗透实测
▼
开篇:真正的漏洞,写在源码里
黑盒渗透有个天花板:你从外面试了几百个 payload,不如开发者打开源码看一眼。漏洞的本质是代码缺陷,而代码就躺在仓库里。
过去这堵墙靠人翻。一个资深审计员读几千个文件,找注入点、找权限缺陷、找逻辑漏洞,一周起步。现在有人把这件事交给了 AI:让模型直接读源码,规划攻击路径,然后在真实环境里验证——打通了才写进报告,打不通就闭嘴。
这个开源项目叫 Shannon,来自 Keygraph,在 CyberBench 基准上刷出 96.15% 成绩的那个团队。他们把自家的渗透流水线开源了。
本文先讲它怎么设计,再讲我实测的结果:同一个靶场,5 个埋的洞,它全部打穿,一个不落,零假阳性。而同样用 DeepSeek 的黑盒工具,一个都没打中。
项目介绍:Shannon 是什么
Shannon 是 AI 驱动的白盒渗透测试 agent,TypeScript 写的,AGPL-3.0 协议。输入是一个目标 URL 加一份源码仓库,输出是一份带完整证据链的安全评估报告(PDF + Markdown + SARIF)。
它的工作方式是五阶段流水线:
第一段:读代码建基线(pre-recon)。 模型通读源码,搞清架构:技术栈、路由结构、鉴权模型、数据流。先知道系统怎么搭的,才知道漏洞可能在哪。
第二段:画攻击面(recon)。 基于代码认知去摸目标在线暴露面,把"源码里有什么"和"线上有什么"对应起来。
第三段:五个漏洞分析 agent 并行。 注入、XSS、认证、SSRF、越权——五个 agent 同时开工,各查各的类,各写各的交付物。每个结论必须落到具体的代码位置和调用链,不是泛泛而谈。
第四段:条件性利用。 分析阶段说"这里有漏洞"的,才轮到利用 agent 上。五类并行,在真实环境里打真实利用,产出利用证据。
第五段:出报告。 综合全部证据,生成执行摘要级别的报告,带严重级别、利用步骤、代码位置、修复建议。给客户看,也给开发看。
这套流水线跑在 Temporal 编排引擎上:每一步的状态持久化,中途崩了能断点续跑,不会前功尽弃。
项目地址
▍GitHub:https://github.com/KeygraphHQ/shannon
▍npm:`npx @keygraph/shannon`(零安装方式)
实测:29 分钟,5 个真洞全部打穿
设计讲得再好,不如拉出来打一轮。我搭了本地授权靶场 test-vuln-app v2(员工绩效查询系统,Flask,127.0.0.1:5201),里面埋了 5 个漏洞:SQL 注入、存储型 XSS、命令注入、路径遍历、越权读取。把源码仓库一起喂给 Shannon,接 DeepSeek(deepseek-chat,原生 1M 上下文窗口),跑完整条流水线。
先说结论:5 个真洞全部被利用到 PoE Level 4(完整利用 + 证据),零假阳性。 29 分 44 秒,成本 0.19 美元。
逐个看它干了什么:
SQL 注入(/login)→ 管理员全库拖出。 `' OR 1=1 --` 直接绕过登录成管理员,然后 7 列 UNION 注入把整个库拖出来:admin:admin123,加 4 个员工的明文密码、PII、薪资、角色。一条链走完。
命令注入(/ping)→ root RCE。 参数 `ip=127.0.0.1;id` 打进去,返回 `uid=0`。接着注入 python3 把数据库整个拉走,读 /etc/passwd、/etc/environ,还拿到出网能力当 SSRF 原语用。
路径遍历(/download)→ 下载源码和系统文件。 `filename=../users.db` 把完整数据库下下来,再遍历读 /etc/shadow,最后把应用源码整个拖走——源码里还翻出一个硬编码的内部接口密钥。
存储型 XSS(/feedback)→ 实际是 SSTI,直接 RCE。 这是最有意思的一个。靶场原意是存 XSS,Shannon 分析代码后发现模板引擎在渲染用户输入,先测 `{{7*7}}` 返回 49 确认模板注入,再用 cycler gadget 链打到 root,还做成持久化:每个访问页面的人都会触发。比原设计的 XSS 狠一个等级。
IDOR(/api/user)→ 匿名枚举全量档案。 无任何认证,遍历 uid 1 到 5,把所有人资料读出来,包括管理员的薪资 5 万。
还有 3 个黑盒工具全漏掉的高危:
▍垂直越权:/internal/health 接口靠一个硬编码的 header secret 门禁,这个 secret 就写在源码里,而源码能通过路径遍历下载。拿到 secret,伪造 header 直接访问内部接口。
▍工作流绕过:登录接口写 SESSION 的代码是死代码,根本没有 Set-Cookie。那登录校验形同虚设,跳过登录直接查任意档案。
▍内网 Redis 未认证:SSRF 探到内网 Redis,默认 ACL `+@all nopass`,未认证就能读写。
这 8 个发现,每一个都带 curl 命令 + 响应原文 + 落盘证据。Shannon 的 deliverables 用 git 管理,全程 8 个 checkpoint 提交,证据链可追溯。这就是它反幻觉的底气:打不通就不报,报了就有证据。
为什么黑盒工具打不出这个效果?VulnClaw 和蜂群用了同一个靶场、同一个 DeepSeek 模型,结果 5 个洞一个没中。差别不在模型,在 Shannon 能读源码:它知道 /internal/health 的密钥在哪个文件里,知道登录的 SESSION 是死代码,知道 /feedback 渲染的是模板引擎。这些信息黑盒从外面永远猜不到。
踩坑记录,供复现:
1.模型 ID 别写成 `openai:deepseek-chat`。pi 引擎在 openai 模型目录里找不到这个 ID,会 fallback 借用 gpt-4 的配置(上下文窗口只有 8192),pre-recon 光 7 个工具定义就有 7500 token,一压就把工具集压没了,agent 只会回一句计划文本不干活。改成 `deepseek:deepseek-chat`(原生 provider,1M 窗口)立刻正常。
2.跑之前先查 LLM key 余额。我这次跑到第 9 个 agent 时 key 欠费(402 Insufficient Balance),最后 4 个 agent 中断。好在证据全部落盘,结论不受影响。真要说教训:充够钱再跑。
3.扫描结果落在 `workspaces/
应用场景
客户源码审计。 接一个渗透/代码审计项目,拿到源码授权,跑一遍 Shannon,它把五类漏洞过一遍,你专注在它漏掉的和它看不懂的业务逻辑上。这是它的主场。
白盒 SRC。 部分 SRC 平台开放源码授权的目标,可以交给它铺底。
开发团队自查。 上线前把自己仓库跑一遍,SARIF 输出直接对接 CI,比人肉 code review 覆盖面大。
代码安全评估报告交付。 它的报告形态就是交付级:执行摘要 + 证据链 + 修复建议,还能出 SARIF,省掉大量报告整理时间。
适用人群
适用:
▍有源码授权前提的渗透测试工程师
▍安全审计乙方,做代码审计项目交付
▍甲方安全团队,做自有系统的上线前自查
▍想要"证据驱动"报告的团队——它打不通不报,报告含金量高
不适用:
▍黑盒场景。没源码,它一半的功力用不出来——这是它的设计前提,不是缺陷
▍快速打点、红队对抗。它的流程重(五阶段 + Temporal + 容器编排),不是为快而生的
▍没有 Docker / 不想维护容器编排环境的人
▍需要对外交付源码级集成的乙方——AGPL 协议的传染性要先过法务
安装条件
▍Docker(必须,跑 Temporal 编排和 worker 容器)
▍Node.js 22.19 以上(本地模式)
▍一份目标源码仓库(白盒前提)
▍LLM API key(支持 OpenAI 兼容网关,智谱 GLM、DeepSeek 这类都能接)
▍磁盘和内存要够:每跑一次扫描会起一个临时 worker 容器
安装步骤
# 方式一:npx 零安装(最省事) npx @keygraph/shannon setup # 配置 LLM key(交互式向导) npx @keygraph/shannon start -u <目标URL> -r /path/to/repo # 方式二:本地构建(开发/深度使用) git clone https://github.com/KeygraphHQ/shannon cd shannon echo "你的LLM_API_KEY=xxx" > .env ./shannon build # 构建 worker 镜像 ./shannon start -u <目标URL> -r ./my-repo # 监控与结果 ./shannon status# 看实时进度 ./shannon logs # 看日志 # Dashboard: http://localhost:8233
说明:Shannon 默认模型是 Anthropic 的 Claude,但架构上是 provider 无关的——`SHANNON_AI_MODEL=
优劣势
优势:
▍白盒思路直击漏洞本质:从源码找缺陷,比黑盒盲试高一个维度。实测 5/5 真洞全中,另挖出 3 个黑盒看不到的高危
▍反幻觉工程扎实:报告从结构化数据确定性渲染,没有 LLM 编造空间;利用阶段要真实证据,"打不通不报"。实测零假阳性
▍五类漏洞 agent 并行,效率可观
▍Temporal 编排:崩溃恢复、断点续跑、进度可查,工程底子厚
▍交付级报告:PDF + Markdown + SARIF,直接能交客户
▍认证场景支持完整:登录流程、TOTP、会话隔离都做了
劣势:
▍AGPL-3.0:对外交付源码级集成的乙方要谨慎,传染性约束是真实存在的
▍重:Temporal + Docker + 每扫描一个容器,资源开销大,不是轻量工具。实测一轮 29 分钟起步
▍依赖源码:黑盒用不了,这是硬前提
▍成本不低:实测一轮 0.19 美元(中途中断还更贵),且要吃住 LLM key 的余额,欠费直接断流水线
▍漏洞类目固定(注入/XSS/认证/SSRF/越权),超出五类的缺陷(如供应链、加密实现)覆盖不到
▍项目较新,中文社区资料少,踩坑要自己啃英文文档
合规声明
本文仅作技术研究与学习交流。Shannon 及文中涉及的渗透测试能力,只允许用于已获得明确授权的目标(自有系统、客户授权的代码审计、SRC 授权范围等)。未经授权对任何系统进行扫描、探测或利用,均违反《网络安全法》《数据安全法》等法律法规,一切后果由行为人自行承担。请读者合法合规使用技术,共同维护网络安全环境。
结语
黑盒是猜,白盒是看。实测把这句话坐实了:同一个靶场,同一个模型,黑盒工具 5 个洞一个没中,Shannon 5 个全中还多挖 3 个。差距不在 AI 的聪明程度,在它有没有权限看代码。
AI 渗透的下半场,不在 payload 数量,在证据质量。Shannon 给了一条路:让 AI 读源码、打实弹、留证据,人退到判断和决策的位置——哪些漏洞值得报、哪些利用值得深入、报告怎么给客户讲。