nuke-on-rails/nuke-on-rails
GitHub: nuke-on-rails/nuke-on-rails
Nuke on Rails 是一个面向 AI 编程代理的 Rails 安全审计技能,整合确定性扫描器与 LLM 分诊能力,按影响程度排序输出可执行的修复计划。
Stars: 20 | Forks: 1
## 它是什么 **Nuke on Rails** 是一个开源的**技能**,专为 AI 编程代理(Claude Code、Cursor、Codex 等)设计,而不是一个添加到 Gemfile 的 gem。它像首席工程师一样审计你的 Rails 应用:*该重构什么,哪里有漏洞,以及修复的优先顺序。* 它不是简单地将各个工具的报告拼凑在一起,而是返回**一个按影响程度排序的列表**。支付控制器中的 IDOR 问题排名高于臃肿模型;高频繁修改的臃肿模型排名高于理论上的警告。 扫描器只负责列出问题。而 Nuke on Rails 负责决定优先顺序。 ## 快速开始 Nuke on Rails 通过 [`skills`](https://skills.sh) CLI 发布。你需要安装 [Node.js](https://nodejs.org)。 **1. 安装 `skills` CLI:** ``` npm install -g skills ``` **2. 添加 Nuke on Rails**(在你的项目根目录下执行): ``` skills add nuke-on-rails/nuke-on-rails ``` 它兼容各种代理:Claude Code、Cursor、Codex、Gemini CLI、Warp 等等。 **3. 运行它**(在你的代理中): ``` /nuke-on-rails ``` 此后无需任何额外设置。它会自动安装所需的工具,检测是 Rails 还是纯 Ruby 项目,运行所有检测流程,并为你提供修复计划。它绝不会触碰你的 Gemfile。 **4. 更新**(当你想要最新的检测视角和修复补丁时): ``` skills update nuke-on-rails ``` ## 为什么不直接让代理“审查我的代码”? 你可以这么做,它也能找出一些问题。但是“审查我的 Rails 应用”每次给出的答案都不一样且更肤浅,并且会漏掉所有确定性扫描器能抓出的问题。区别在于: | | 要求代理“审查我的代码” | Nuke on Rails | |---|---|---| | **扫描** | 模型只能粗略查看它碰巧读到的文件 | Brakeman 解析 100% 的 AST;bundler-audit 和 ruby_audit 检查每一个锁定的 gem | | **可重复性** | 每次运行结果都不同 | 确定性引擎加上固定的分析方法 | | **检查范围** | 视模型随机游走的范围而定,直到上下文耗尽 | 通过变动率 × 复杂度,精准定位真正重要的热点 | | **CVE 与 EOL** | 受限于训练数据的截断日期;无法获知昨天刚发布的 CVE | 实时咨询数据库、零日网络交叉检查、生命周期终止检测 | | **误报** | 貌似合理实则错误的误报问题,且汇报语气十分自信 | 每一个安全发现都经过对抗性验证;无法验证的问题会被标记为“理论上的” | | **覆盖率** | 取决于它当天记住了要检查什么 | 每次运行都采用固定的 OWASP Top 10 检测视角目录 | | **输出** | 一大段冗长的文字 | 一个按影响程度排序的列表,附带“立即修复”计划 | LLM 仍然在做它擅长的事情:阅读代码路径、解释漏洞利用、评估严重程度。它只是不再单打独斗、全凭记忆且毫无优先级地工作了。 ## 它能检测什么 检测范围映射到 **OWASP Top 10 2025**。每个领域都是一个[检测视角](lenses/):这是一项纯 Markdown 编写的检查规则,在扫描器之上应用于审计过程。
访问控制与 IDOR
* 通过 ID 加载记录但缺少所有权范围限定(典型的支付/订单/发票场景) * 存在身份验证的地方缺少授权验证(已登录并不等于有权限) * 批量赋值:`permit!`、权限提升、嵌套属性、原始 Hash 绕过 * 通过表单下拉列表和序列化器泄露记录 * 多租户应用中的跨租户泄露;路由暴露了本不应公开的操作身份验证与会话
* Devise 配置错误:用户枚举、无锁定机制、永不过期的会话、弱密码策略 * 会话固定攻击以及缺少 Cookie 标志(`secure` / `httponly` / `SameSite`) * Token 和凭据查找过程中的时序攻击和类型混淆攻击 * Token 以明文存储或没有过期时间;速率限制/节流绕过 * 自定义 Warden 策略漏洞、作用域混淆、模拟登录缺陷;JWT 陷阱(`none` 算法、无过期时间)机密信息
* `master.key`、凭据密钥或 `.env` 被提交到了 git(包括历史记录中) * 代码和初始化程序中硬编码的 API 密钥(Stripe、AWS、Twilio 等) * seeds、fixtures 或 `database.yml` 中包含机密信息;将机密信息作为 ENV 备份密码学
* 加密预言机(一个加密例程被同时用于信任令牌和用户数据) * 自行编写的加密逻辑而非采用 Rails 原语;静态 IV;未经身份验证的加密模式 * 弱密码哈希(MD5/SHA);敏感列(CPF、SSN、银行、健康信息)以明文存储配置与强化
* 关闭了 `force_ssl` / HSTS;后台服务流量(Postgres、Redis)以明文传输 * CSP 缺失或被禁用;在基于 Cookie 验证的操作中跳过了 CSRF;主机头注入 * 挂载了未经身份验证的仪表盘(Sidekiq、PgHero、Flipper) * Debug / console gems 被部署到了生产环境(形成了一个远程代码执行攻击面) * 向用户暴露堆栈跟踪、不安全的上传、通过 Markdown 渲染导致的存储型 XSSAPI 表面
* JSON 信息过度暴露(`render json:` 泄露了 Token 摘要、角色标识、PII) * 缺少分页(导致数据表被整体拖取和自我拒绝服务);带有凭据的 CORS 通配符配置;查询字符串中包含 Token * 异常信息泄露;未经验证的 Webhooks * GraphQL 内省以及无限制的查询深度/复杂度 * XXE 和实体扩展 * OAuth 的 `redirect_uri`、`state` 和范围缺陷日志与监控
* 日志中包含敏感数据(过滤漏洞、`puts` / logger 转储、未清洗的错误跟踪器面包屑) * 将 PII 发送给第三方及 LLM 调用 * 对登录、支付、权限和管理员操作缺乏审计追踪依赖项与版本
* 你的 gems 和 Ruby 版本本身存在的已知 CVE * JavaScript 依赖项安全通告 * 不安全或未锁定的 gem 源 * 已停止维护的 Ruby 或 Rails 版本(即使没有公开的 CVE,这也是一个严重的合规性发现)代码质量
* 臃肿模型 * 回调驱动的工作流 * 代码纠缠的 mixins * 意大利面条式的混乱分支 * N+1 查询 * 变动率 × 复杂度得出的热点区域标签:AI Agent插件, AI编程助手, MITM代理, Ruby on Rails, 云安全监控, 内存转储, 批量扫描, 技术债务, 防御加固, 静态分析
### 一条命令。找出 Rails 应用中的所有风险,并按影响程度排序。