🧠 Lagune 的专项是聚焦特定领域、与语言无关的安全知识模块,只会按需加载,绝不默认加载。它们不是命令。项目的目录就是它使用的专项集合:所用 类别 中的内置专项,加上它自己的专项。detect 和 verify 阶段会在运行时调用它们,你也可以随时直接加载某个专项。
- 概览
- 工作原理
访问控制
确保每个人只能查看和操作自己有权限的内容,没有人能仅靠改一下链接或 ID 就访问别人的数据或仅限管理员的操作。
npx lagune read catalog access-controlAPI 端点
检查你的应用对外敞开的那些门,让陌生人发来的请求无法拉取私密数据,也无法触发不该触发的操作。
npx lagune read catalog api-endpoint浏览器
守护在访客浏览器中运行的内容,让攻击者无法注入代码来窃取登录信息,或劫持用户看到和点击的内容。
npx lagune read catalog browserC / C++
找出底层的内存错误,避免攻击者借此让程序崩溃,或在你的服务器上运行他们自己的代码。
npx lagune read catalog c-cpp容器
审查你的应用如何打包和部署,让入侵被限制在局部,而不是把整台机器拱手交给攻击者。
npx lagune read catalog container凭证端点
保护登录、注册和重置密码流程,让攻击者无法猜出密码、接管账号,或重置别人的密码。
npx lagune read catalog credential-endpoint加密
确保敏感数据经过妥善加密,即使密码、令牌和个人信息泄露,也无法被读取。
npx lagune read catalog cryptoCSV
加固导出的电子表格,大幅降低别人打开下载的文件时在其电脑上悄悄执行有害命令的可能。
npx lagune read catalog csv.NET
涵盖 .NET 应用特有的安全陷阱,这些陷阱可能让攻击者在你的服务器上运行自己的代码。
npx lagune read catalog dotnet联合登录
加固"使用 Google、Microsoft 等账号登录"功能,攻击者想冒充用户或混进不属于自己的账号,就会难得多。
npx lagune read catalog federationGo
涵盖 Go 应用特有的安全陷阱,尤其是在真实流量下才会暴露的隐蔽 bug。
npx lagune read catalog goHTTP 请求
检查每个 Web 请求携带的数据,让隐藏或恶意的输入无法诱使你的应用做出错误行为。
npx lagune read catalog http-request基础设施
审查用来构建和部署应用的文件,比如 Dockerfile、Terraform 和 CI 工作流,避免一处松懈的配置就暴露整个环境。
npx lagune read catalog infra解释器
防止用户输入被当成命令运行,确保攻击者无法借助表单字段或上传的文件让你的服务器执行他的指令。
npx lagune read catalog interpreterJava
涵盖 Java 应用特有的安全陷阱,这些陷阱可能让攻击者在你的服务器上运行自己的代码。
npx lagune read catalog javaJavaScript
涵盖 JavaScript 和 Node 应用特有的安全陷阱,从运行不可信代码到读取不该读取的文件。
npx lagune read catalog javascriptLLM
保护基于 AI 模型构建的功能,让措辞巧妙的消息无法诱骗 AI 泄露数据或滥用已接入的工具。
npx lagune read catalog llm网络
检查你的应用如何与其他服务通信,确保它不会被骗去请求或信任攻击者控制的内容。
npx lagune read catalog network路径
防止攻击者在你的服务器文件中随意游走,让他们无法通过篡改文件名来读取私密文件或覆盖重要文件。
npx lagune read catalog path支付
加固结账和计费流程,让篡改价格、逃避付款或重放扣款都变得困难得多。
npx lagune read catalog paymentPHP
涵盖 PHP 应用特有的安全陷阱,这些陷阱可能让攻击者运行自己的代码或绕过登录。
npx lagune read catalog phpPython
涵盖 Python 应用特有的安全陷阱,尤其是加载不可信数据时可能执行攻击者的代码。
npx lagune read catalog python正则表达式
加固文本校验,让它始终保持高效,恶意输入想通过过载让你的应用卡死就难得多。
npx lagune read catalog regexRuby
涵盖 Ruby 应用特有的安全陷阱,尤其是加载不可信数据时可能执行攻击者的代码。
npx lagune read catalog rubyRust
涵盖 Rust 应用特有的安全陷阱,尤其是可能破坏内存或导致程序崩溃的 unsafe 代码。
npx lagune read catalog rust密钥
让密码、API 密钥和令牌远离源代码,确保共享的代码仓库或泄露的构建包绝不会把它们交到攻击者手里。
npx lagune read catalog secretsServerless
审查云函数及其权限,避免单个函数被滥用,触及远超其应有范围的资源。
npx lagune read catalog serverlessSQL
守护你的应用与数据库的交互,让精心构造的输入无法读取、修改或删除它本不该碰的数据。
npx lagune read catalog sqlSupabase
锁紧你的 Supabase 后端,让数据库规则真正生效,私密密钥也不会被公开暴露。
npx lagune read catalog supabase传输
加固传输,让数据走加密连接,这样在用户和你的应用之间传递时,想窃听或篡改它就难得多。
npx lagune read catalog transport文件上传
加固文件上传,有人想上传伪装过的文件来执行代码、覆盖数据或占满你的存储空间,就会难得多。
npx lagune read catalog uploadXML
加固你的应用读取 XML 数据的方式,让精心构造的文件难以泄露服务器文件,也难以让你的应用宕机。
npx lagune read catalog xml自己运行
要直接使用某个专项,请让你的智能体用 read catalog <name> 加载它,并在同一条提示词里写明任务。这些知识随后就会作用于你要求的内容。任何提示词都可以这样用,即使与 Lagune 的流程无关。
例如,用一条直接的自由格式提示词,以 Python 生成一组安全的 RegExp:
用 `npx lagune read catalog regex` 加载 regex 专项,然后在 @src/utils/regex.py 中创建一组用于验证邮箱和用户名的正则表达式。
这会用一个确定性的 hook 逐一测试每个 RegExp 是否存在 ReDoS 风险,保留安全的那些,并生成类似下面的结果:
import re
EMAIL = re.compile(r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")
USERNAME = re.compile(r"^[a-zA-Z0-9_]{3,20}$")
def is_email(value: str) -> bool:
return EMAIL.match(value) is not None
def is_username(value: str) -> bool:
return USERNAME.match(value) is not None
你可以在 devina.io/redos-checker 亲自测试一个正则表达式。
内置专项
内置专项按 类别 分组。以下是 Lagune 自带的专项集合:
| 专项 | 类别 | 重点 |
|---|---|---|
regex | owasp | ReDoS:遇到精心构造的输入就会失控的正则表达式。 |
network | owasp | SSRF 与重定向:由用户提供的请求目标或重定向目标。 |
interpreter | owasp, lovable | 代码注入:eval、动态 include、按名称调度。 |
sql | owasp | 关系型数据库:注入、原生 ORM 调用、权限、数据库引擎的能力范围。 |
path | owasp | 文件系统路径:路径遍历、空字节、NTFS 数据流、文件植入。 |
upload | owasp | 文件上传:类型与文件签名、恶意内容、存储、限制。 |
access-control | owasp, lovable | 身份验证、授权与会话:IDOR、批量赋值、租户隔离、会话。 |
credential-endpoint | owasp, lovable | 猜测与机器人:暴力破解、密码喷洒、撞库、限流。 |
federation | owasp | 令牌信任:OAuth/OIDC、SAML、JWT 验证、扫码登录。 |
http-request | owasp | 请求来源:CSRF、CORS 配置错误、伪造的客户端 IP。 |
transport | owasp | 信道安全:TLS 配置、HTTPS 与明文传输、HSTS、证书固定。 |
crypto | owasp, lovable | 静态数据加密:弱算法或自研算法、CSPRNG、密钥管理。 |
secrets | owasp, lovable | 硬编码凭证:以字面量写在源码中的密钥、令牌和密码。 |
api-endpoint | owasp | 非 REST 接口:GraphQL、gRPC、WebSocket 授权、DoS、schema。 |
payment | owasp, lovable | 支付流程:在服务端向网关核验、签名回调、幂等性。 |
xml | owasp | XML 解析:XXE、外部实体、billion laughs 实体膨胀。 |
csv | owasp | 公式注入:以 =/+/-/@ 开头的电子表格单元格。 |
container | owasp, infra | 容器配置:root 权限、capabilities、socket 挂载、镜像加固。 |
infra | infra | 基础设施即代码:Terraform、Dockerfile、GitHub Actions。 |
serverless | owasp, infra, lovable | FaaS 函数:最小权限 IAM、事件输入、上下文、密钥。 |
llm | ai, lovable | AI/LLM 风险:提示词注入、代理权限、RAG、MCP、输出。 |
supabase | lovable | Supabase 后端:默认关闭的 RLS、AI 误生成的策略、密钥模型。 |
browser | javascript, lovable | 客户端风险:XSS、CSP、iframe 嵌套、存储等。 |
javascript | javascript | 语言层面的风险:RCE、原型链污染等。 |
python | python | 语言层面的风险:pickle RCE、类污染、-O 等。 |
rust | rust | unsafe 健全性:safe 代码调用方引发的 UB、transmute、溢出。 |
java | java | 反序列化与移动代码:readObject 利用链、对象劫持。 |
ruby | ruby | 反序列化与 open:Marshal/YAML 对象复活、管道符陷阱。 |
php | php | type juggling 与 unserialize:魔术哈希、POP 链。 |
go | go | typed nil 与数据竞争:nil != nil、共享内存的 goroutine。 |
c-cpp | c-cpp | 格式化字符串:printf(user_input)、%n 任意地址写。 |
dotnet | dotnet | 平台层面的风险:BinaryFormatter RCE、@Html.Raw、枚举校验缺口。 |
大部分内置知识提炼自 OWASP。每个专项与 OWASP 官方攻击页面和 Cheat Sheet 页面的完整对应关系,请参阅 OWASP 来源。少数特定技术栈的模块则取材于厂商自己的指南,例如 supabase 来自 Supabase 文档和 CVE-2025-48757。
你自己的专项
内置专项的扩充方式是新增一个知识文件和一行索引,从不新增命令。你也可以用同样的方式,通过 /lagune-specialize 添加自己的专项:给它一篇文章或一个主题,它就会为你的项目提炼出一个新专项,文件放在 .lagune/catalog/ 下,条目写入 .lagune/configs.json。无论目录包含哪些类别,你自己的专项始终都在目录中,与内置专项同名时,你的专项会覆盖内置的那个。
当 detect 或 verify 阶段遇到某个专项涵盖的上下文时,会自行用 read catalog <name> 加载该专项。这是阶段流程的一部分,会自动完成,无需你手动操作。
查看可用的专项
要在终端中列出项目的目录,每行显示一个专项及其标签:
npx lagune read catalog
# regex: Regular Expression [required]
# network: Requests, Webhook, URL Fetch, Socket, IMDS, Redirect
# interpreter: Evaluator, Sink, Shell, Dynamic Execution
# ...
标记为 [required] 的专项无论做什么工作都会应用。列表中包含哪些内置专项,取决于项目的 类别。
相关知识会针对项目的实际情况引入,而不是默认运行所有检查。
常见问题
专项是聚焦特定领域、与语言无关的安全知识模块,只会按需加载,绝不默认加载。它不是命令,这一点与智能体的 skill 不同。
就是项目使用的专项:所用类别中的内置专项,加上它自己的专项。在没有记录任何类别时,项目只使用 OWASP。
不会。专项只会根据项目的实际情况按需加载。
在写任务的同一条提示词里,让你的智能体运行 npx lagune read catalog <name>。
