rayentr/ironward

GitHub: rayentr/ironward

面向 vibe coding 时代的一体化代码安全扫描工具,集密钥检测、静态分析、依赖审计、IaC 检查与 AI 漏洞修复于一体,以 CLI、MCP 服务器和 GitHub Action 三种形态交付。

Stars: 1 | Forks: 0

Ironward

为 vibe coding 时代打造的安全扫描工具。

npm tests license downloads

一个开源的 MCP 服务器CLIGitHub Action,用于查找代码中的硬编码密钥、授权漏洞、SQL 注入、XSS、IDOR 以及易受攻击的依赖项—— 并会自动创建修复 PR。其中四个工具完全离线运行,无需 API 密钥。

## 安装 ``` # 扫描当前项目 — 无需安装,无需 API key。 npx ironward scan . ``` 就这么简单。支持离线运行,流式输出扫描结果,遇到严重级别问题时以非零状态退出,从而导致 CI 失败。 或者全局安装: ``` npm install -g ironward ironward scan ./src ``` ## 13 个工具 | 工具 | 运行环境 | 可查找的内容 | |------|---------|---------------| | `scan_for_secrets` | **离线** | 665 种模式家族 — AWS、GCP、Azure、Stripe、PayPal、GitHub、OpenAI、Anthropic、Supabase、PlanetScale、Ethereum/Solana 钱包、Firebase + Shannon 熵 | | `scan_code` | **离线** | 61 条静态规则 — `eval`、命令注入、路径遍历、弱加密、SSRF、XXE、NoSQL/LDAP 注入、模板注入、时间不安全的比较、Python 特定问题 (pickle, yaml.load, subprocess shell=True) | | `scan_deps` | **离线** | OSV.dev CVE 查找 + 域名仿冒检测 + 已知恶意软件列表 + 废弃包 + 许可证合规性 | | `scan_url` | **离线** | 字母分级 Web 扫描 — headers、CORS、cookies、暴露的 `.env` / `.git`、source maps、管理面板、API 文档、Supabase/Firebase 密钥、TLS 过期时间 | | `scan_docker` | **离线** | Dockerfile + docker-compose — root 用户、`privileged:true`、敏感的主机挂载、ENV/ARG 中的密钥、`:latest` 标签、`curl \| sh`、暴露的 SSH/DB 端口 | | `scan_k8s` | **离线** | Kubernetes 清单文件 — 特权容器、`hostNetwork`、危险权限 (SYS_ADMIN, ALL)、缺失的资源限制、环境变量明文中的密钥、默认服务账户 | | `scan_infra` | **离线** | Terraform + CloudFormation — 公开的 S3、0.0.0.0/0 安全组、公开访问的 RDS、IAM `*` 策略、未加密的 EBS、GCP allUsers ACL、Azure 开放式 NSG | | `scan_github` | **离线** | GitHub Actions — `pull_request_target` + checkout (PR 任意代码执行)、`run:` 中通过 `${{ github.event.* }}` 进行的表达式注入、未固定版本号的 action、write-all 权限、artifact 泄露 | | `scan_auth_logic` | AI | 逻辑倒置的授权检查、缺失的归属权验证、权限提升、可绕过的中间件、接受 JWT `alg:none`、会话固定 | | `scan_sqli` | AI | 跨 JS/TS、Python、Go、Ruby、PHP、Java 的 SQL 注入 — 字符串拼接、模板字面量、ORM `raw` / `$queryRawUnsafe` | | `scan_xss` | AI | DOM + 服务端 XSS — `innerHTML`、`dangerouslySetInnerHTML`、Vue `v-html`、Svelte `{@html}`、EJS 未转义输出、反射型的 Express/Koa 响应 | | `scan_idor` | AI | 从参数中读取 ID 但缺少归属权检查的路由。通过 `data: req.body` 实现的 Prisma/Mongoose 批量赋值 | | `fix_and_pr` | AI | 通过验证循环生成精准的多文件补丁 —— 在开启 PR 前对修复代码进行重新扫描 | **自带模型。** AI 工具兼容 Anthropic、OpenAI、Gemini、Groq,或完全本地的 Ollama 安装环境。 ## 演示 ``` $ npx ironward scan ./src Ironward — offline scan of ./src ── scan-secrets ── src/config.js [CRITICAL] L14:1 AWS access key ID (aws_access_key) AKIA***REDACTED*** ── scan-code ── src/api/upload.js [HIGH] L42:5 eval() call (eval-call) why: eval executes arbitrary code — a direct RCE sink when fed user input. fix: Remove eval. Parse data explicitly (JSON.parse, Function constructors). ── scan-deps ── 2 vulnerabilities across 14 dependencies — 1 critical, 1 high, 0 medium. [CRITICAL] lodash@4.17.15 GHSA-p6mc-m468-83gw — fixed in 4.17.19 Prototype pollution in lodash Done in 412ms. Exit 2. ``` 退出代码:`0` 无异常 · `1` 存在低/中级别问题 · `2` 存在严重或高级别问题(导致 CI 失败)。 ## `ironward login` — 使用 AI 驱动的扫描器 离线工具始终开启。要启用 `scan_auth_logic`、`scan_sqli`、`scan_xss`、`scan_idor` 和 `fix_and_pr`,请选择一个提供商: ``` ironward login ``` 交互式选择器: ``` Ironward — pick an AI provider. 1. Anthropic — Claude Opus/Sonnet — best reasoning 2. OpenAI — GPT-4o — great alternative 3. Google — Gemini 1.5 Pro — good for XSS/SQLi 4. Groq — Llama 3 — fastest, cheapest 5. Ollama — Local — free, private, no cloud 6. Skip — offline tools only Choose a provider [1-6]: ``` 密钥存储在 `~/.ironward/config.json` 中(权限为 chmod 600),且永远不会离开您的设备。 ``` ironward whoami # show current provider + model ironward logout # remove saved config ironward free # list tools that work without any API key ``` ## 在 Cursor / Claude Code / VS Code 中使用
Cursor ``` // ~/.cursor/mcp.json { "mcpServers": { "ironward": { "command": "npx", "args": ["-y", "ironward@latest"], "env": { "ANTHROPIC_API_KEY": "sk-ant-..." } } } } ```
Claude Code ``` claude mcp add ironward -- npx -y ironward@latest ```
VS Code ``` // .vscode/mcp.json { "servers": { "ironward": { "command": "npx", "args": ["-y", "ironward@latest"] } } } ```
`ANTHROPIC_API_KEY`(或其他提供商的密钥)仅为 AI 工具所必需。离线工具无需此密钥即可运行。 ## GitHub Action 在每次推送和拉取请求时进行扫描。支持行内 PR 注解、包含完整扫描结果表的任务摘要,且零配置。 ``` # .github/workflows/security.yml name: Security on: [push, pull_request] jobs: scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: rayentr/ironward/github-action@v1 with: fail-on: critical ``` 完整配置和输出详见 [github-action/README.md](./github-action/README.md)。 ## CLI 参考 ``` Scanning ironward scan run every offline scanner (auto-detects IaC files) ironward scan-secrets ... 665 pattern families ironward scan-code ... 61 static analysis rules ironward scan-deps ... OSV CVE + typosquat / malware / license ironward scan-url security headers, TLS, exposed files ironward scan-docker ... Dockerfile + docker-compose ironward scan-k8s ... Kubernetes manifests ironward scan-infra ... Terraform + CloudFormation ironward scan-github ... GitHub Actions workflows Provider ironward login pick AI provider (interactive) ironward logout / whoami / free Misc ironward --version ironward --help Output format --format json machine-readable output for CI --format text (default) ``` ## 监听模式 + Git 预提交钩子 **`ironward watch`** — 文件监听器,每次保存时重新扫描。按 Ctrl-C 停止。 ``` ironward watch ./src # 🛡 Ironward 正在监视 src — 按 Ctrl-C 停止 # 14:32:07 src/api/auth.ts # [CRITICAL] L42 jwt-alg-none conf=95 ``` **`ironward install-hooks`** — 安装一个 Git 预提交钩子,用于阻止包含严重/高级别问题的提交。兼容 `core.hooksPath`(husky, lefthook, ...)并保留现有的钩子内容。 ``` cd myproject ironward install-hooks # git commit 现在会在发现结果时阻止提交 # 绕过一次:git commit --no-verify # 完全移除:ironward uninstall-hooks ``` ## 增量扫描 + `.ironwardignore` Ironward 在 `~/.ironward/cache.json` 中按内容哈希缓存每个文件的扫描结果。重新扫描时,未更改的文件将从缓存中读取 —— 在缓存命中的情况下通常可提升 **5–10×** 的速度。 预提交钩子瞬间完成: ``` # 仅扫描将要 commit 的文件。 ironward scan-secrets --staged # 或者相对于某个 branch 发生更改的文件。 ironward scan-secrets --since=main # 如果需要重新运行,请清除 cache。 ironward scan-secrets --no-cache . ``` 通过 `.ironwardignore` 排除文件(采用 gitignore 语法): ``` # .ironwardignore fixtures/synthetic-secrets/ generated/ *.test.ts ``` Ironward 同时也会遵循您现有的 `.gitignore`。 ## 独特之处 - **离线优先。** 九个工具中有四个在零网络环境下运行(用于 CVE 查找的 OSV.dev 除外)。仅当您需要 AI 推理来检测 auth/SQLi/XSS/IDOR 时,才需提供 API 密钥。 - **修复而不仅是发现。** `fix_and_pr` 会生成多文件补丁,并在开启 PR 之前对修复后的代码进行重新扫描。 - **自带模型。** 支持 Anthropic、OpenAI、Gemini、Groq、Ollama。您的密钥仅保留在本地,不会上传至 Ironward 云端。 - **三行命令安装。** 无需注册,无需 SSO 握手,无需按席位收费。 - **自我扫描。** Ironward 在每次提交时都会扫描自己的源代码 —— **零发现**。 ## 许可证 [MIT](./LICENSE) — 免费使用、分支和发布。

@rayentr 构建。
如果 Ironward 帮您避免了将密钥提交到代码库,请给本仓库点个 Star。 ⭐

标签:AI风险缓解, AMSI绕过, CISA项目, DevSecOps, DOE合作, GitHub Action, MCP Server, MITM代理, Node.js安全, SQL注入检测, Web安全, 上游代理, 不安全的直接对象引用, 代码安全, 依赖安全, 威胁检测, 安全专业人员, 安全助手, 安全合规, 安全扫描, 时序注入, 暗色界面, 机密信息发现, 漏洞枚举, 漏洞组件, 离线工具, 类型检测, 结构化查询, 网络代理, 自动修复, 自动化安全, 自动化攻击, 蓝队分析, 跨站脚本攻击检测, 错误基检测, 静态代码分析