kaa911-syp/AspidaSec
GitHub: kaa911-syp/AspidaSec
一款以CLI为核心、专注于为开发者提供可操作修复指导的网站安全扫描器。
Stars: 1 | Forks: 0
# AspidaSec
[](https://github.com/kaa911-syp/AspidaSec/actions/workflows/ci.yml)
[](https://www.apache.org/licenses/LICENSE-2.0)
[](https://github.com/kaa911-syp/AspidaSec/tags)



[](https://github.com/kaa911-syp/AspidaSec/commits/main)
网站安全扫描,附带切实可行的修复指导。
AspidaSec 扫描现代 Web 应用程序,识别与 OWASP 相关的风险,对重要发现进行优先级排序,并生成开发者可直接使用的修复建议和报告。

## 产品范围
AspidaSec 不是一个 AI 网络安全生态系统、培训平台、通用扫描器或以仪表板为核心的产品。
它是一个以 CLI 为核心的网站安全扫描器,面向需要回答以下问题的开发者和小型团队:
- 这个 Web 应用中存在哪些安全风险?
- 应该优先修复哪些发现?
- 哪些证据能证明问题的存在?
- 我们如何安全地修复它?
- 我们如何在 CI、拉取请求或团队审查中分享结果?
MVP 仅包含支持扫描、优先级排序、修复、报告或 CI 工作流的工作。
## 目标用户
- 维护面向公众的网站和 Web 应用的开发者
- 需要覆盖实用 OWASP 项但没有专职安全团队的小型产品团队
- 需要为客户或团队审查生成可共享安全报告的代理商和维护者
- 希望 CI 输出足够可读以便采取行动的用户
## 黄金路径
首个产品工作流有意设计得非常聚焦:
```
aspidasec scan .
```
或者:
```
aspidasec scan https://example.com
```
扫描应沿着一条清晰的路径进行:
1. 接受本地项目、GitHub 检出或已部署的 URL。
2. 运行面向网站的检查:依赖项审计、面向 OWASP 的静态检查、动态扫描、路由爬取以及基本的密钥和配置审查。
3. 规范化并去重发现项。
4. 根据严重程度、置信度、可利用性、公开暴露程度、受影响的文件或端点以及修复可用性对发现项进行优先级排序。
5. 生成实用的修复指导。
6. 导出干净的 HTML 报告、Markdown 报告、PR 评论、JSON 或 SARIF。
如果这条路径表现卓越,那么在任何仪表板存在之前,AspidaSec 就已具备产品价值。
## MVP 功能集
### 核心扫描器
- 面向 OWASP Top 10 的检查
- ZAP 动态扫描,用于已部署或本地运行的 Web 应用
- npm、pnpm 或 yarn 依赖项审计
- Semgrep Web 应用程序规则
- 基本的密钥和高风险配置检测
- Playwright 辅助的路由发现爬取(在适用情况下)
### 分析
- 将发现项规范化为单一模式
- 跨扫描器去重
- OWASP 类别映射
- 严重程度和置信度规范化
- 对主要发现项进行风险优先级排序
### 指导
- 基于扫描器证据的发现摘要
- 实用的修复步骤
- 安全的代码示例
- 引用相关标准或扫描器证据
### 输出
- CLI 输出
- HTML 报告
- Markdown 报告
- PR 评论输出
- 用于 CI 和下游工具的 JSON 和 SARIF
## 明确不在 MVP 范围内
这些可能以后会变得有用,但现在不应主导产品:
- 托管仪表板
- 多租户后端
- 认证或 RBAC
- 团队排行榜
- 游戏化优先的工作流
- 攻击模拟实验室
- 多智能体研究工作流
- 自定义 IDE
- 云同步
- 企业策略管理
仪表板、历史和协作代码可以存在于仓库中,但 MVP 的故事应保持以 CLI 为核心,以报告为核心。
## AspidaSec 为何存在
大多数安全扫描器在“最后一英里”对开发者失败了。它们可能检测到问题,但输出通常嘈杂、重复、难以确定优先级,并且难以转化为安全的修复。
AspidaSec 专注于使网站安全工作可操作的部分:
- **证据优先的发现** - 扫描器输出和可重现的证据驱动每个问题。
- **优先级排序的输出** - 将主要风险与背景噪音分离。
- **修复优先的指导** - 每个重要发现都包括实用的修复方案、示例和引用。
- **CI 就绪的报告** - 输出专为拉取请求、CI 日志、HTML 审查和 SARIF 消费者设计。
## 信任模型
AspidaSec 必须值得信赖,然后才是聪明。
AI 或生成的指导绝不能凭空捏造漏洞、严重程度、受影响文件、端点、证据或扫描器名称。检测必须来自扫描器、仓库分析、配置审查或用户明确提供的证据。
指导层可以总结、解释、翻译和建议修复。但它绝不能编造发现项。
完整的规则集请参见 [docs/trust-model.md](./docs/trust-model.md)。
## 快速开始
### 本地项目扫描
```
git clone https://github.com/kaa911-syp/AspidaSec.git
cd AspidaSec
pnpm install
pnpm run build
pnpm --filter @aspidasec/cli start -- scan ./my-project
```
### 网站 / OWASP 扫描
```
pnpm --filter @aspidasec/cli start -- owasp-scan --format html --output report.html
```
### MCP 服务器
将 MCP 服务器添加到 AI 编码助手(如 Claude Code、Cursor 或 Windsurf):
```
{
"mcpServers": {
"aspidasec": {
"command": "node",
"args": ["path/to/AspidaSec/packages/mcp-server/dist/index.js"]
}
}
}
```
MCP 服务器提供扫描、OWASP 扫描、预检、扫描器列表、发现解释、修复建议、SARIF 转换和覆盖率报告工具。
## CLI 命令
```
# 核心扫描
aspidasec scan [path-or-url] # Run a website security scan
aspidasec owasp-scan [options] # Run OWASP Top 10 structured scan
aspidasec init # Generate .aspidasec.yml config
# 输出格式
aspidasec scan ./project --format markdown
aspidasec scan ./project --format json
aspidasec scan ./project --format sarif
aspidasec scan ./project --format html
# 语言
aspidasec scan ./project --language id
aspidasec scan ./project --language en
```
## 配置
AspidaSec 使用被扫描项目根目录下的 `.aspidasec.yml`。
```
language: id
scanners:
semgrep: true
npmAudit: true
zapBaseline: false
output:
markdown: true
html: false
sarif: false
owasp:
enabled: false
categories: [A01, A02, A03, A04, A05, A06, A07, A08, A09, A10]
parallel: false
confidenceGate: low
evidenceGate: true
failOnSeverity: high
environment:
skipWslCheck: false
scannerTimeout: 120000
```
带注释的配置示例请参见 [examples/configs/](./examples/configs/)。
## 架构
AspidaSec 围绕四个产品层组织:
| 层 | 职责 | 关键包 |
|---|---|---|
| 扫描器层 | 运行网站安全扫描器并收集原始证据 | `adapters-*`, `owasp`, `cli` |
| 分析层 | 规范化、去重、映射和优先级排序发现项 | `schema`, `core`, `prioritizer`, `config` |
| 指导层 | 解释发现项并生成实用修复方案 | `coaching`, `i18n`, `lessons` |
| 输出层 | 为开发者和 CI 系统渲染报告 | `output-markdown`, `output-html`, `output-sarif`, `mcp-server` |
```
AspidaSec/
├── apps/
│ ├── cli/ # primary developer entry point
│ ├── bot-github/ # PR comment workflow
│ ├── bot-gitlab/ # MR comment workflow
│ ├── bot-gitea/ # Gitea / Forgejo PR workflow
│ └── docs-site/ # public website
├── packages/
│ ├── schema/ # normalized finding types and validators
│ ├── core/ # scan pipeline, dedupe, plugin system
│ ├── config/ # .aspidasec.yml loader and validation
│ ├── prioritizer/ # risk scoring
│ ├── owasp/ # OWASP Top 10 orchestration
│ ├── adapters-*/ # scanner integrations
│ ├── coaching/ # remediation templates
│ ├── i18n/ # Bahasa Indonesia and English text
│ ├── output-*/ # Markdown, HTML, and SARIF renderers
│ └── mcp-server/ # AI assistant integration
├── docs/ # product, setup, and architecture docs
├── examples/ # demo projects and config examples
└── docker-compose.yml # self-hosted bot deployment
```
产品架构请参见 [docs/architecture.md](./docs/architecture.md)。
## 产品文档
| 文档 | 目的 |
|---|---|
| [产品范围](./docs/product-scope.md) | 定义 AspidaSec 是什么、为谁服务以及当前不会做什么 |
| [MVP](./docs/mvp.md) | 冻结首个可用版本并推迟非核心功能 |
| [架构](./docs/architecture.md) | 分离扫描器、分析、指导和输出层 |
| [产品哲学](./docs/product-philosophy.md) | 定义产品决策背后的原则 |
| [信任模型](./docs/trust-model.md) | 记录证据优先的安全和 AI 安全边界 |
| [黄金路径](./docs/golden-path.md) | 定义必须首先体验卓越的唯一工作流 |
## 现有设置文档
| 指南 | 描述 |
|---|---|
| [入门指南](./docs/getting-started.md) | CLI 安装、配置和选项参考 |
| [GitHub 机器人设置](./docs/github-bot-setup.md) | GitHub App 注册和 PR 评论 |
| [GitLab 机器人设置](./docs/gitlab-bot-setup.md) | GitLab webhook 设置和 MR 评论 |
| [自托管](./docs/self-hosting/deployment.md) | Docker Compose 部署 |
| [MCP 集成](./docs/mcp-integration.md) | 面向 AI 编码助手的 MCP 设置 |
| [SARIF IDE 集成](./docs/sarif-ide-integration.md) | 用于 IDE 和代码扫描的 SARIF 输出 |
## 测试
```
pnpm test
pnpm run typecheck
pnpm lint
```
GitHub Actions 在推送到 `main` 分支和拉取请求时运行安装、构建、类型检查、测试和 lint。
## 许可证
[Apache License 2.0](./LICENSE)
Copyright 2026 Vibellabbs Code.
标签:GNU通用公共许可证, MITM代理, Node.js, pnpm, TypeScript, Web安全, 修复指导, 威胁情报, 安全扫描工具, 安全报告, 安全插件, 小团队安全, 应用程序安全, 开发者工具, 智能体, 特征检测, 网络安全, 自动化攻击, 蓝队分析, 隐私保护