Edward-WanderCode/SCA
GitHub: Edward-WanderCode/SCA
一个自托管的静态代码分析平台,集成 SAST、密钥检测和 CVE 漏洞扫描,帮助团队在一处完成代码安全审计与报告导出。
Stars: 0 | Forks: 0
# 🛡️ SCA — 静态代码分析器
🇨🇳 [简体中文版本](docs/README.vi.md)
## ✨ 功能
| 功能 | 描述 |
|---------|-------------|
| 🔍 **SAST 扫描** | 由 OpenGrep(兼容 Semgrep)驱动,内置 2000+ 社区规则 |
| 🛡️ **漏洞检测** | 集成 Trivy,对依赖项和容器进行 CVE 扫描 |
| 🔑 **密钥检测** | 基于 TruffleHog 的扫描,用于检测 API 密钥、token 和凭证 |
| 🧹 **Linter 集成** | 内置支持 Ruff、ESLint 和 GolangCI-Lint |
| 📊 **SARIF 导出** | 兼容 GitHub Security、VS Code 等的标准化输出 |
| 📄 **PDF 报告** | 专业且可直接导出的漏洞报告 |
| 🤖 **Telegram 机器人** | 通过 Telegram 进行远程扫描和通知 |
| 🌲 **文件树视图** | 带有内联结果标注的交互式源代码树 |
| 📈 **仪表盘** | 实时安全健康评分和扫描分析 |
| 🔄 **增量扫描** | 对比多次扫描结果以跟踪修复进度 |
## 🏗️ 架构
```
SCA/
├── src/
│ ├── app/ # Next.js App Router (pages & API routes)
│ │ ├── api/ # REST API endpoints
│ │ │ ├── scan/ # Scan orchestration
│ │ │ ├── history/ # Scan history management
│ │ │ ├── telegram/ # Telegram bot webhooks
│ │ │ └── upload/ # File upload handling
│ │ ├── scan/ # New Scan page
│ │ ├── results/ # Scan results viewer
│ │ ├── history/ # Scan history page
│ │ ├── rules/ # Rule registry browser
│ │ ├── vulnerabilities/ # Vulnerability explorer
│ │ ├── terminal/ # Agent terminal
│ │ └── settings/ # Application settings
│ ├── components/ # Reusable React components
│ └── lib/ # Core logic
│ ├── scanner.ts # Scan engine orchestrator
│ ├── linter.ts # Multi-language linter runner
│ ├── sarif.ts # SARIF format converter
│ ├── telegram.ts # Telegram bot integration
│ └── pdf-export.ts # PDF report generator
├── prisma/ # Database schema & migrations (SQLite)
├── scripts/ # Setup & maintenance scripts
├── OpenGrep/ # SAST engine (auto-downloaded)
├── Trivy/ # Vulnerability scanner (auto-downloaded)
└── TruffleHog/ # Secret scanner (auto-downloaded)
```
## 🚀 快速开始
### 前置条件
- **Node.js** ≥ 20.x
- **Windows** 10/11(扫描引擎为 Windows 可执行文件)
- **Git**
### 安装
```
# 1. Clone repository
git clone https://github.com/Edward-WanderCode/SCA.git
cd SCA
# 2. 安装依赖
npm install
# 3. 设置环境
cp .env.example .env
# 使用你的配置编辑 .env
# 4. 初始化数据库
npx prisma migrate dev
npx prisma generate
# 5. 下载扫描引擎 (OpenGrep, Trivy, TruffleHog)
npm run setup
# 6. 启动开发服务器
npm run dev
```
应用程序将在 **http://localhost:3000** 提供。
### 可用脚本
| 命令 | 描述 |
|---------|-------------|
| `npm run dev` | 启动开发服务器 |
| `npm run build` | 构建生产环境 |
| `npm run start` | 启动生产服务器 |
| `npm run lint` | 运行 ESLint |
| `npm run setup` | 下载扫描引擎二进制文件 |
| `npm run update-rules` | 更新 OpenGrep 安全规则 |
| `npm run cleanup-temp` | 清理临时扫描文件 |
## 🔧 配置
### 环境变量
将 `.env.example` 复制到 `.env` 并进行配置:
| 变量 | 必需 | 描述 |
|----------|----------|-------------|
| `DATABASE_URL` | 否 | SQLite 数据库路径(默认:`file:./prisma/dev.db`) |
| `TELEGRAM_BOT_TOKEN` | 否 | 用于远程扫描的 Telegram Bot API token |
| `TELEGRAM_CHAT_ID` | 否 | 用于接收通知的 Telegram 聊天 ID |
### 扫描源
SCA 支持多种扫描输入方式:
- **📁 本地目录** — 浏览并选择服务器上的文件夹
- **📤 文件上传** — 上传源代码压缩包(ZIP、TAR.GZ)
- **🔗 Git URL** — 克隆并扫描远程仓库
- **🤖 Telegram** — 通过 Telegram 机器人发送文件或仓库
## 📜 许可证
该项目基于 [MIT 许可证](LICENSE) 授权。
由 Edward-WanderCode 用 ❤️ 制作
标签:SAST, StruQ, 盲注攻击, 自动化攻击, 自托管, 错误基检测, 静态代码分析