wellwelwel/blue-spec

GitHub: wellwelwel/blue-spec

Blue Spec 是一个让 AI agent 自动检测代码安全风险、制定并逐条应用防御修复方案的安全驱动加固工具包。

Stars: 10 | Forks: 0

# 🌊 Blue Spec:安全驱动的加固 [![版本](https://img.shields.io/npm/v/blue-spec?label=&color=70a1ff&logo=npm&logoColor=white)]() **Blue Spec** 帮助你的 AI agent 让项目变得更加安全。你只需将其指向你的代码,agent 就能弄清楚你的系统实际做了什么,然后指导你完成对它至关重要的安全工作。 - **Blue Spec** 适用于**任何编程语言**的项目,并支持 **37 个 agent** ✨ ## 目录 - 🌱 [**开始使用**](#get-started) - [**安装**](#install) - [**命令**](#commands) - 🧠 [**可用技能**](#available-skills) - 🎓 [**示例**](#examples) - 🤖 [**支持的 Agent**](#supported-agents) - 📦 [**环境要求**](#requirements) - 🖖 [**致谢**](#acknowledgements) - 🧑‍⚖️ [**许可证**](#license) ## 开始使用 ### 安装 ``` npx -y blue-spec@latest init ``` - **Blue Spec** 底层运行在 **Node.js** 上,你可以使用任何你想要的语言 🃏 ### 命令 一旦在你的项目中设置好 **Blue Spec**,你的 **AI** agent 就会解锁一系列斜杠命令: | # | 命令 | 为你执行的操作 | 建议的最低投入程度 | | --- | ------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | 1 | `/bluespec.charter` | 设定你的项目安全规则,为你提供建议或根据你的描述进行塑造_(可选)_。 | 中等 | | 2 | `/bluespec.detect` | 读取你的代码,梳理系统的功能以及风险所在。 | 高或更高(投入程度越高,结果越好) | | 3 | `/bluespec.plan` | 将 detect 发现的问题转化为防御计划,并为每个发现提供修复方案。 | 高 | | 4 | `/bluespec.harden` | 将计划中的修复方案安全地、逐一应用到你的代码中。 | 高 | | 5 | `/bluespec.verify` | 验证每个已应用的修复方案是否有效,并关闭已确认有效的修复。 | 中等 | #### 附加命令 | 命令 | 为你执行的操作 | | ------------------ | ----------------------------------------------------- | | `/bluespec.repair` | 修复 **Blue Spec** 的内部追踪。 | | `/bluespec.skills` | 按需加载安全_子_技能。 | | `/bluespec.list` | 按名称列出 **Blue Spec** 正在追踪的所有发现。 | ## 可用技能 _子_技能是专注于特定领域的安全知识模块,各阶段会根据项目的范围按需自动加载。你也可以自己运行它们(包括在与 **Blue Spec** 无关的 prompt 中),以便在开发的同时兼顾安全性: | _子_技能 | 路径 | 侧重点 | | ------------ | -------------------------------- | -------------------------------------------------------- | | `regex` | `.bluespec/skills/regex.md` | **ReDoS:** 在特定输入下会引发指数级耗时爆炸的正则表达式。 | | `javascript` | `.bluespec/skills/javascript.md` | **语言级风险:** RCE、prototype pollution 等。 | | `browser` | `.bluespec/skills/browser.md` | **客户端风险:** DOM XSS、origin、storage 等。 | 直接使用自由格式的 prompt,通过 **Python** 生成安全 **RegExp** 集合的示例: ``` @.bluespec/skills/regex.md Create a collection of regular expressions in @src/utils/regex.py to validate emails and usernames. ``` 这将会使用一个 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**](https://devina.io/redos-checker) ## 示例 ### `/bluespec.charter` 🧬 设定规则,或者让 **Blue Spec** 为你定义。 ``` # 不带输入使用它,让 Blue Spec 提供建议 /bluespec.charter ``` ``` # 或者描述它 /bluespec.charter My project is an online store that sells video games. Customers add products to a cart and pay by credit card or bank slip. They can see their orders and the status of each one. ``` 接着,**Blue Spec** 会分析出这对安全性意味着什么,例如: - 一个包含订单的购物车意味着存在一个**数据库**: - 例如,`"数据存储在哪里?"`、`"谁可以访问它?"`、`"是否会泄露?"`。 - 客户能够查看自己的订单意味着存在某种**登录或访问控制**: - 例如,`"一个客户能否访问另一个客户的订单?"`、`"会话是否受到保护?"`。 - 接收银行卡和银行汇款支付意味着**涉及资金和敏感数据**: - 例如,`"是否存储了银行卡数据?"`、`"支付是否经过验证?"`。 基于此,**Blue Spec** 会为项目构建一套量身定制的安全规则,你可以随时对其进行审查和调整。 ### `/bluespec.detect` 🔬 找出你的系统究竟在做什么,以及风险隐藏在哪里。 ``` # 不带输入使用它,让 Blue Spec 扫描整个项目 /bluespec.detect ``` ``` # 将其指向特定文件或文件夹 /bluespec.detect src/routes/ src/auth.ts ``` ``` # 或者描述你想要检查的内容 /bluespec.detect make sure customer data is never exposed ``` 接着,**Blue Spec** 会读取代码并映射其实际发现,例如: - **文件上传**,系统接受用户上传的文件: - _重要性:_ 伪装成图片的文件可能隐藏恶意代码。 - _证据:_ POST /upload 处理程序信任客户端发送的 MIME 类型,而没有检查文件的真实类型。 - **登录与会话**,用户通过登录访问其账户: - _重要性:_ 薄弱的会话处理会让一个账户被另一个账户接管。 - _证据:_ 会话发放逻辑中,发放的会话没有设置过期时间。 从这里开始,你将获得一张清晰的系统功能及风险所在位置的映射图,为后续步骤的执行做好准备。 ### `/bluespec.plan` 🛡️ 将 detect 发现的问题转化为防御计划:针对每个发现,制定需要应用的修复方案。 ``` # 不带输入使用它,为 detect 映射到的每个发现计划修复 /bluespec.plan ``` ``` # 将其指向 detect 已经覆盖的特定文件或文件夹 /bluespec.plan src/routes/upload.ts ``` ``` # 或者描述一个需要重点关注的问题 /bluespec.plan where sensitive data could leak ``` 此阶段在 detect 之后继续。detect 已经发现了系统的功能以及每项功能携带的风险,因此计划不会重复这些风险,而是决定如何应对它们。它仅基于 `/bluespec.detect` 已经映射的内容进行工作,因此请先运行 detect。每一项计划中的修复都会指向 detect 的一项发现,例如: - **文件上传**(优先级:**严重**) - _遵循原则:_ III. 所有输入在被验证之前都是不可信的。 - _修复:_ 检查文件的真实类型和大小,在保存时重命名,并将上传内容存储在无法作为代码执行的位置。 从这里开始,你将得到一个按优先级排序的修复列表,每一项都与一个发现绑定,随时准备在下一阶段中应用。 ### `/bluespec.harden` 🔧 将计划中的修复方案安全地、逐一应用到你的代码中。 ``` # 不带输入使用它以应用 plan 生成的每个修复,优先处理最高优先级 /bluespec.harden ``` ``` # 将其指向 plan 已经覆盖的特定修复或文件 /bluespec.harden src/routes/upload.ts ``` ``` # 或者按优先级应用:Critical、High、Medium 和/或 Low /bluespec.harden Critical and High ``` 计划已经决定了每一项修复方案,因此 harden 只需应用它即可。由于这是唯一直接接触你代码的阶段,它的操作非常谨慎:它会向你展示每一处更改并事先询问,每次只应用一个修复方案,以便每一次更改都易于审查,并且绝不会为了强行应用修复而削弱现有的安全控制。例如,针对文件上传的修复: - **文件上传**(状态:**已应用**) - _更改内容:_ 检查文件的真实类型和大小,拒绝任何意外内容,在保存时重命名,并将其存储在无法作为代码执行的地方。 - _更改位置:_ `handleUpload` 函数,以及它调用的存储 helper。 如果某个修复无法完全应用,harden 会在确保安全的前提下尽可能完成,并将其余部分标记为 **Partial** 或 **Blocked**,保持其开启状态。已应用并不意味着已被证明有效,这正是 verify 阶段的职责所在。 ### `/bluespec.verify` ⚖️ 通过阅读代码并将其与 harden 记录的内容进行对比,验证每个已应用的修复是否有效,然后关闭确认有效的修复。 ``` # 不带输入使用它以验证每个已应用的控制,优先处理最高优先级 /bluespec.verify ``` ``` # 将其指向 harden 已经应用的特定控制或文件 /bluespec.verify src/routes/upload.ts ``` ``` # 或者按优先级验证:Critical、High、Medium 和/或 Low /bluespec.verify Critical and High ``` 它会读取 harden 记录的每一处代码位置,并确认其是否真正符合声明,证明就来源于这种对抗,即代码与记录的比对。每个控制措施都会得出三种结论之一:**✅ 风险已消除**、**❌ 风险未消除**,或 **❓ 无法从代码判断**(当仅从代码中无法看到证据时)。在你的确认下,被证明已消除的风险将退出链条,例如: - **文件上传**(结论:**✅ 风险已消除**) - _如何证明:_ 阅读了上传处理程序,看到它会从文件内容检测真实文件类型,强制执行大小限制,并拒绝任何其他内容,完全符合记录的声明。 - _证据:_ `handleUpload` 函数,该函数从内容中检测真实的文件类型。 如果风险未消除(**❌ 风险未消除**),verify 会明确指出这一点,并将你送回 `/bluespec.harden`,因为该修复仍处于开启状态。 ### `/bluespec.skills` 按需加载专注的安全_子_技能,并针对你的代码运行 🧠 ``` # 按名称运行子技能 /bluespec.skills regex ``` ``` # 查看可用的内容 /bluespec.skills ``` ### `/bluespec.repair` 🧰 当重命名或移动文件导致链条混乱时,修复链条。 ``` # 它不需要输入:它总是修复整个链条 /bluespec.repair ``` 在重构后重命名发现或移动文件时,某个阶段可能会失去对它的追踪,从而丢失仍然重要的工作。Repair 通过读取所有 artifact 和你当前的代码来修复此问题,找到每个条目现在所在的位置,并一次性重写整个链条。 ## 支持的 Agent 通过传递其 key 来选择你的 agent,例如 `npx -y blue-spec@latest init `(如果不指定,**Blue Spec** 会提示你进行选择)。 | Agent | Key (Alias) | | ---------------------------------------------------------------------------- | -------------- | | [**Amazon Q Developer**](https://aws.amazon.com/q/developer/) | `amazonq` | | [**Amp**](https://ampcode.com/) | `amp` | | [**Antigravity**](https://antigravity.google/) | `agy` | | [**Auggie CLI**](https://docs.augmentcode.com/cli/overview) | `auggie` | | [**Claude Code**](https://www.anthropic.com/claude-code) | `claude` | | [**Cline**](https://github.com/cline/cline) | `cline` | | [**CodeBuddy CLI**](https://www.codebuddy.ai/cli) | `codebuddy` | | [**Codex CLI**](https://github.com/openai/codex) | `codex` | | [**Continue**](https://continue.dev/) | `continue` | | [**CoStrict**](https://github.com/zgsm-ai/costrict) | `costrict` | | [**Crush**](https://github.com/charmbracelet/crush) | `crush` | | [**Cursor**](https://cursor.sh/) | `cursor-agent` | | [**Devin for Terminal**](https://cli.devin.ai/docs) | `devin` | | [**Factory Droid**](https://factory.ai/) | `factory` | | [**Forge**](https://forgecode.dev/) | `forge` | | [**Gemini CLI**](https://github.com/google-gemini/gemini-cli) | `gemini` | | [**GitHub Copilot**](https://code.visualstudio.com/) | `copilot` | | [**Goose**](https://block.github.io/goose/) | `goose` | | [**Hermes**](https://hermes-agent.nousresearch.com/) | `hermes` | | [**IBM Bob**](https://www.ibm.com/products/bob) | `bob` | | [**iFlow CLI**](https://docs.iflow.cn/en/cli/quickstart) | `iflow` | | [**Junie**](https://junie.jetbrains.com/) | `junie` | | [**Kilo Code**](https://github.com/Kilo-Org/kilocode) | `kilocode` | | [**Kimi Code**](https://code.kimi.com/) | `kimi` | | [**Kiro CLI**](https://kiro.dev/docs/cli/) | `kiro-cli` | | [**Lingma**](https://lingma.aliyun.com/) | `lingma` | | [**Mistral Vibe**](https://github.com/mistralai/mistral-vibe) | `vibe` | | [**opencode**](https://opencode.ai/) | `opencode` | | [**Pi Coding Agent**](https://pi.dev) | `pi` | | [**Qoder CLI**](https://qoder.com/cli) | `qodercli` | | [**Qwen Code**](https://github.com/QwenLM/qwen-code) | `qwen` | | [**Roo Code**](https://roocode.com/) | `roo` | | [**RovoDev ACLI**](https://www.atlassian.com/software/rovo-dev) | `rovodev` | | [**SHAI (OVHcloud)**]( 版权所有 © 2026 至今 [**Weslley Araújo**](https://github.com/wellwelwel) 及[**贡献者**](https://github.com/wellwelwel/blue-spec/graphs/contributors)。
标签:GitHub Advanced Security, MITM代理, SOC Prime, 人工智能, 安全加固, 开发工具, 暗色界面, 用户模式Hook绕过, 自动化攻击, 防御加固, 防御工作流