📌 项目地址KeygraphHQ/shannon | ⭐ 43,926 颗星 | 🔧 TypeScript | 📜 AGPL-3.0

一句话告诉你它是什么

Shannon 是一个自主运行的白盒 AI 渗透测试工具,专门针对 Web 应用和 API。它先读你的源码找出攻击路径,然后对正在运行的应用发起真实攻击。只有利用成功的漏洞才写入报告 —— 这意味着每一条输出都是可复现的 PoC,不是“疑似风险”。

项目由 Keygraph 开发,TypeScript 实现,43926 个 Star。当前版本是 Beta,直接在终端运行。

为什么这种思路更有用

大多数安全工具只做一件事。

静态分析工具(SAST)只看代码,给你一堆“可能存在风险”的告警。实际很多是误报,要人工验证。黑盒扫描工具只扫端口和请求,发现的问题可能是探测出来的,但能不能真正利用、攻击路径是什么,它说不清楚。

Shannon 把两件事串起来了:

  1. 从源码中提取攻击入口 —— 路由、参数、数据库查询、认证逻辑
  2. 用真实 HTTP 请求和浏览器自动化验证这些入口能否被攻破

结果是每一条漏洞都附带攻击步骤。比如 SQL 注入的 PoC 直接给出 curl 命令,你复制到终端执行就能看到数据泄露。

我看了它的实测报告

README 提供了三份示例报告。我重点看的是 OWASP Juice Shop(一个故意留漏洞的 Node.js 电商应用)的测试结果。

Shannon 发现了 20 个以上可直接利用的漏洞,包括:

  • 认证绕过 —— 用 admin 账号直接登录,不需要密码
  • SQL 注入 —— 从数据库读出其他用户的密码哈希
  • IDOR —— 直接访问其他用户的购物车和订单
  • SSRF —— 让服务器向内部网络发送请求

每个漏洞都写明了攻击步骤,格式像专业渗透测试报告。例如 SQL 注入的 PoC 字段里直接塞了一段 curl,参数中嵌入了注入 payload。你不需要懂内部实现就能复现。

另一个测试目标是 c{api}tal API,一个专门包含 API 漏洞的 Python 应用。发现了大约 15 个高危问题,包括命令注入、认证绕过、批量赋值漏洞。我注意到这份报告的漏洞描述更偏 API 安全,比如未授权访问管理接口、参数注入修改服务器文件。

这说明 Shannon 对不同语言和框架有针对性。对 Node.js 应用的测试更侧重请求参数和数据库交互,对 Python 后端的测试更侧重 API 端点安全。

跑起来只需一条命令

npx @keygraph/shannon@beta run --source ./path-to-your-app --target http://localhost:3000

两个参数必须同时提供:

  • --source:你的应用源码目录路径
  • --target:应用正在运行的本地地址

Shannon 需要同时看到代码和运行实例。只看代码它无法验证漏洞能否利用,只看运行实例它不知道内部结构和数据流向。

第一次运行会自动下载 Chromium(约 300MB),因为测试过程中有浏览器自动化。如果你本地已经有 Playwright,它会跳过下载。

不需要写配置文件。它会自动检测语言、框架、路由结构。

语言支持分三类,影响实际可用性

支持级别 语言
完整支持(源码分析+攻击) Node.js、Python、Go
部分支持(可运行但框架解析可能不完整) Java、Ruby、C#
不支持(源码分析阶段跳过,仅尝试黑盒扫描) 其它(Rust、PHP、C++等)

说人话:

如果你的应用是用 Node.js(Express、Fastify、Next.js)、Python(Django、Flask、FastAPI)或 Go(Gin、Echo)写的主流框架,Shannon 可以开箱即用,源码分析质量比较高。

如果是 Java(Spring Boot、Jakarta)或 Ruby(Rails),它能跑,但可能漏掉一些攻击路径。关键看你的框架是否在官方测试范围内。

如果是其它语言,源码分析直接跳过。它仍然会尝试用黑盒方式扫描 API 端点,但效果取决于你的 API 是否遵循 REST 规范、路由是否可枚举。

我个人的判断:如果团队主力技术栈是 Node.js/Python/Go,值得投入时间测试。如果是 Java 团队,建议先在小项目上跑一次看看效果再决定。

两个版本,差距主要在 CI/CD 集成

特性 Shannon Lite(免费) Shannon Pro(商业)
源码分析 + 真实攻击
黑盒模式(只看 API,不看源码)
修复验证
CI/CD 安全门控
PoC 转回归测试用例
企业平台(项目管控、SLA)
许可证 AGPL-3.0 商业授权

免费版能做的事已经很核心:分析源码、发起攻击、输出可验证的漏洞。对个人开发者、小团队、或者想先评估再决定是否采购的组织,它就是完整工具。

Pro 版的价值不在攻击能力更强,而在工程化集成。修复验证是指开发者改完代码,Shannon 能自动重新运行之前的攻击向量,确认漏洞是否真的关闭。这对于把渗透测试嵌入到每次 CI 构建的团队是刚需。如果没有这个需求,免费版够用。

README 没写价格,需要联系 Keygraph 官网询价。

它不擅长什么,这很重要

README 专门有一节 Safety, Scope, and Limitations,我总结几个关键点:

  • 业务逻辑漏洞基本测不出来。比如:竞拍的时间差攻击、审批流程跳过、两步验证绕过。这些依赖你对业务规则的理解,Shannon 只懂技术层面的攻击模式。
  • 不能替代年度正式渗透测试。它是填补“每天发版、一年才测一次”这个时间窗口的工具。专业渗透测试人员能发现更深层、更复杂的问题。
  • 依赖完整的源码和运行实例。如果应用只给了编译后的代码,或者依赖太多外部服务无法本地启动,Shannon 无法工作。
  • 测试范围有限。同一个框架的不同版本、特殊配置、自定义中间件,都可能导致分析不完整。官方也承认覆盖率不是一个固定值。

如果你期望它像一个 7×24 的黑客一样发现所有漏洞,会失望。它的定位是“在正式渗透之间的低成本高频自测手段”。

有一个细节值得注意

仓库根目录有两个文件:llms.txtllms-full.txt。README 注释说这两个是给 AI agent(Claude、Copilot 等)准备的,让它们能快速理解项目结构。

人类开发者也能看。llms.txt 是仓库地图,llms-full.txt 把 README 和所有文档合并到一个文件。如果你需要把整个项目结构喂给 AI 做上下文,或者自己不想翻目录,这个文件省事。

谁适合现在试

团队特征:代码每天都在合,渗透测试一年只做一两次。你能接受在这之间有漏洞被部署到生产环境吗?如果不能,Shannon 给你一个低成本的自测手段。

技术栈要求:Node.js、Python、Go。如果团队主力用这些语言,且框架是主流,可以开箱即用。

不适合的场景:

  • 项目语言在“不支持”列表里
  • 应用无法在本地运行(依赖云服务、外部 API 过多、需要特定硬件)
  • 你主要担心的是业务逻辑安全,不是技术型漏洞

对开发者的建议

找一个你熟悉但有安全顾虑的项目,跑一次 Shannon,看看结果。和你的静态分析工具(比如 SonarQube、Snyk)对比,看重叠和差异。

重点不是看它发现了多少漏洞,而是看它报告的每一条漏洞是否真的能复现。如果都能复现,说明它的攻击路径分析是准确的。如果存在大量误报(无法复现的漏洞),说明当前版本对你们的技术栈支持不够好。

这才是衡量它是否值得集成的标准。

项目地址:https://github.com/KeygraphHQ/shannon
官网:https://keygraph.io(Pro 版咨询入口)

这篇文章对你有帮助吗?

发表回复