raeseoklee/scanrail
GitHub: raeseoklee/scanrail
Scanrail 是一个开发者优先的安全扫描编排器,通过统一 CLI 封装开源安全工具,实现可重复的标准化安全检查与报告。
Stars: 0 | Forks: 0
[English](README.md) | [한국어](README.ko.md)
# Scanrail
[](https://github.com/raeseoklee/scanrail/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/scanrail)
[](LICENSE)
Scanrail 是一个开发者优先的安全扫描编排器。它将经过验证的开源安全工具封装在一个 CLI 之后,使团队能够在发起 pull request、发布或内部交接之前运行可重复的安全检查。
Scanrail 不会尝试重新实现商业的 SAST 或 DAST 引擎。它的工作是标准化扫描器的安装、配置、执行、规范化和报告方式。
## 它标准化了什么
- 工具的设置与执行
- 基于项目的扫描配置
- 身份验证与目标允许列表
- 扫描结果规范化与严重性策略
- 开发者可读的报告
- CI/CD 集成
## 方向
其长期模型是通过隔离的适配器(通常由 Docker 提供支持)来编排 OWASP ZAP、Nuclei、Semgrep、Trivy 和 Gitleaks 等工具。第一个候选版本有意缩小了范围:它提供了 CLI 脚手架、配置流程、报告生成、npm wrapper 分发以及一个原生安全标头扫描器。
```
scanrail init
scanrail setup
scanrail run --profile quick
scanrail mcp serve
```
典型的开发者流程:
1. 启用由 Docker 提供支持的扫描器时,安装 Docker。
2. 运行 `scanrail init` 创建项目配置。
3. 运行 `scanrail setup` 准备工作区状态和扫描器资产。
4. 运行 `scanrail run` 执行检查。
5. 查看 HTML 和 JSON 报告。
## 安装
```
npm install -g scanrail
scanrail doctor
```
运行首次发布的原生标头检查:
```
scanrail init --non-interactive --project-name demo --target https://example.com
scanrail run --only headers
```
npm 包会安装一个轻量级的 JavaScript 命令 wrapper,以及适用于 macOS、Windows 或 Linux 的匹配 Go 二进制包。带有作用域的 `@scanrail/cli` 包作为底层的 wrapper 包保留。由 Docker 提供支持的 Gitleaks、Trivy 和 Semgrep 适配器计划于下一步推出;它们真实的命令/输出契约已在 [Scanner Adapter Spike](docs/experiments/scanner-adapter-spike.md) 中记录。
为支持 stdio MCP 的 AI 客户端运行本地 MCP 服务器:
```
scanrail mcp serve
```
MVP 版本的 MCP 暴露了受限的工具,用于 `doctor`、读取配置、获取最新报告摘要,以及带有明确主动扫描确认的原生标头扫描。
stdio MCP 路径可以使用 [MCP Workbench](examples/mcp-workbench/README.md) 进行回归测试。
## 文档
- [产品需求](docs/product-requirements.md)
- [架构](docs/architecture.md)
- [Go 技术设计](docs/go-technical-design.md)
- [实施计划](docs/implementation-plan.md)
- [ADR-0001:带有 npm Wrapper 的 Go 核心](docs/adr/0001-go-npm-wrapper.md)
- [命名](docs/naming.md)
- [设置场景](docs/setup-scenario.md)
- [CLI 参考](docs/cli-reference.md)
- [配置参考](docs/config-reference.md)
- [安全模型](docs/safety-model.md)
- [开源工具审查](docs/open-source-tools.md)
- [OSS 策略](docs/oss-strategy.md)
- [分发策略](docs/distribution.md)
- [npm 发布操作手册](docs/npm-publish.md)
- [发布说明 0.1.3](docs/releases/0.1.3.md)
- [发布检查清单](docs/release-checklist.md)
- [发布风险登记册](docs/release-risk-register.md)
- [风险处理计划](docs/risk-treatment-plan.md)
- [MCP 设计](docs/mcp-design.md)
- [MCP Workbench 验证](examples/mcp-workbench/README.md)
- [演示录像场景](docs/demo-tape-scenario.md)
- [贡献指南](CONTRIBUTING.md)
- [安全策略](SECURITY.md)
- [路线图](docs/roadmap.md)
- [Scanner Adapter Spike](docs/experiments/scanner-adapter-spike.md)
## 演示录像
MCP 验证:

Scanner adapter spike:

## MVP 范围
当前的首次候选发布版本支持:
- `scanrail doctor`
- `scanrail init --non-interactive`
- `scanrail setup --pull-policy never`
- `scanrail run --only headers`
- `scanrail mcp serve`
- JSON 和 HTML 报告生成
- npm wrapper 包结构
- 针对 macOS、Windows 和 Linux 的特定平台二进制包
- 发布预演自动化
由 Docker 提供支持的 Gitleaks、Trivy 和 Semgrep 适配器已包含在产品和打包计划中,但它们的命令生成和结果规范化仍是未来的工作。
## 开发
```
go test ./...
npm test
node scripts/build-release.mjs
npm pack --workspaces --dry-run
```
完整的发布预演流程为:
```
make release-dry-run
```
## 许可证
Apache-2.0。详见 [LICENSE](LICENSE)。
## 安全默认设置
- 默认情况下禁用主动扫描。
- 当所选扫描器可以强制执行该作用域时,将拒绝配置的允许列表之外的请求。
- 密钥通过环境变量名称进行引用,不存储在项目配置中。
- 破坏性路径将被阻止或受到明确警告。
- 生产环境目标需要明确的选择加入。
- 扫描器的功能缺失将以跳过或失败的形式显现,而不是默默地削弱安全策略。
## 参考标准
- OWASP Top 10
- OWASP ASVS
- OWASP WSTG
- OWASP API Security Top 10
- CWE
- CVSS
- EPSS
- CISA KEV
- SARIF
- CycloneDX / SPDX
标签:DevSecOps, EVTX分析, FTP漏洞扫描, GNU通用公共许可证, LNA, Node.js, 上游代理, 安全编排, 开发安全, 数据可视化, 日志审计, 暗色界面, 请求拦截