madebyaris/chaca-scanner
GitHub: madebyaris/chaca-scanner
基于 Tauri 2 和 Rust 构建的桌面安全扫描器,帮助开发者快速检测 Web 应用的 OWASP Top 10 漏洞、API 暴露和配置泄露问题。
Stars: 31 | Forks: 3
Chaca — Web 安全扫描器
一款面向氛围编码者和开发者的原生桌面安全扫描器
对您的 Web 应用程序进行快速、具有针对性的安全审计 — 无需终端。
直接支持 Chaca:购买 Chaca Pro,通过 GitHub 提供支持,或者通过 PayPal 向 arissetia.m@gmail.com 发送 $100 创始人支持,即可让您的公司标志永久列于此处。
](assets/home.png) | [
](assets/detail.png) | [
](assets/list-vuln.png) |
| 配置目标 URL、扫描模式(被动/主动/全量),或扫描本地文件夹 | 安全评分、漏洞趋势、目标情报 | 按严重程度过滤、CWE 参考、导出为 JSON/CSV/SARIF/PDF |
## Chaca 是什么?
**Chaca** = **Cha**lim S**ca**nner — 一款使用 **Tauri 2**、**React 19** 和 **Rust** 构建的桌面应用程序,用于扫描 Web 应用程序的安全问题。专为希望在无需学习 Burp Suite 或 OWASP ZAP 的情况下获得可操作结果的开发者而设计。
## 功能特性
### 扫描引擎 (Rust)
| 类别 | 能力 |
|----------|--------------|
| **被动** | 安全标头、Cookie、CORS、CSP、CSRF、点击劫持、JWT、速率限制、反序列化指标 |
| **主动** | XSS(Canary + 属性/事件注入)、SQLi、SSTI、开放重定向、路径遍历、CORS 反射、CSRF 验证 |
| **CMS** | WordPress、Drupal、Joomla、Shopify、Magento 指纹识别 + 平台特定检查 |
| **API** | 57+ 敏感路径探测(`/swagger.json`、`/env`、`/graphql`、`/wp-json/wp/v2/users` 等) |
| **信息泄露** | 堆栈跟踪、调试标头、文件路径泄露(Python、Java、PHP、.NET、Go、Ruby、Node.js) |
| **服务** | Supabase、Firebase、PocketBase、管理面板(phpMyAdmin、Adminer、wp-login、调试控制台) |
| **侦察** | IP、DNS、TLS、服务器指纹识别、技术检测(框架、CDN、WAF、主机托管)、`robots.txt` / `sitemap.xml` / `security.txt` |
| **知识库** | 50+ 漏洞定义,包含 CWE、CVSS 严重程度、修复建议、参考链接 |
| **质量** | 置信度评分(已确认/确凿/试探性)、去重、按类别计算的安全评分(0–100) |
### 桌面应用 (React + Tailwind)
- 优先等宽字体的极简 UI
- 实时进度(爬取 → 被动 → 主动)
- 包含评分、图表、统计和目标情报面板的仪表盘
- 报告查看器,包含 CWE 链接和外部参考
- 按严重程度和置信度过滤
- 导出为 JSON、CSV、SARIF 和 PDF
- Pro 扫描助手:快速标头、优先登录设置、品牌 PDF 导出
- 应用重启后保留持久化扫描历史
- 扫描预设(快速被动、API 审计、全量扫描)+ 自定义预设
- 本地文件夹扫描:Secrets、配置暴露、端点清单(仅限本地)
- 设置页面(网络、爬取、被动、主动、数据检测、导出、预设),支持持久化存储
## 技术栈
| 层级 | 技术 |
|-------|------------|
| Shell | Tauri 2 |
| 前端 | React 19, TypeScript, Tailwind CSS v4 |
| 状态 | Zustand, tauri-plugin-store |
| UI | Radix UI, Lucide icons, Recharts |
| 后端 | Rust (reqwest, regex, tokio, serde, tracing, base64) |
## 入门指南
### 前置条件
- [Node.js](https://nodejs.org/) 18+
- [Rust](https://rustup.rs/) 1.77+
- 适用于您平台的 [Tauri 前置条件](https://v2.tauri.app/start/prerequisites/)
### 运行
```
npm install
npm run tauri dev
```
### 构建
```
npm run tauri build
```
输出:`src-tauri/target/release/bundle/`
### 发布 (GitHub)
针对 **Windows (x64)** 和 **Linux (x64 AppImage)** 的预构建二进制文件会在每个版本标签发布到 [GitHub Releases](https://github.com/madebyaris/chaca-scanner/releases)。macOS 构建目前需要本地编译,因为 Chaca 尚未使用 Apple Developer 账户进行签名/公证。
**创建发布版:**
1. 在 `package.json` 和 `src-tauri/tauri.conf.json` 中升级版本号
2. 提交并推送
3. 创建并推送版本标签:`git tag v0.6.0 && git push origin v0.6.0`
4. GitHub Actions 构建所有平台并创建草稿发布
5. 编辑草稿发布,添加发布说明,并发布
**预期的构建产物:**
| 平台 | 产物 | 备注 |
|----------|----------|-------|
| macOS (Apple Silicon) | 本地构建 | 目前,macOS 开发者应使用 `npm run tauri build` 自行编译 Chaca |
| Windows (x64) | `Chaca_0.6.0_x64-portable.exe` | 直接运行;Windows 10 需要安装 [WebView2](https://developer.microsoft.com/en-us/microsoft-edge/webview2/) |
| Windows (x64) | `Chaca_0.6.0_x64-setup.nsis.exe` | 安装程序(包含 WebView2) |
| Linux (x64) | `Chaca_0.6.0_amd64.AppImage` | 直接运行 |
**注意:** 当前的发布版本未签名。Windows 可能会显示安全警告,macOS 的公开发布会暂时受阻,直到 Chaca 完成签名/公证。请确保 **Settings → Actions → General → Workflow permissions** 设置为 "Read and write permissions",以便发布工作流可以创建发布。
### macOS “已损坏” 警告
如果 macOS 提示 `"Chaca.app" is damaged and can't be opened`,通常是因为应用未签名或下载时带有隔离标记,被 Gatekeeper 阻止。
如果您是 Mac 开发者,目前最可靠的方法是克隆仓库并在本地构建:
```
npm install
npm run tauri build
```
尝试以下步骤:
1. 打开 `.dmg`
2. 将 `Chaca.app` 拖入 `Applications`
3. 在 Finder 中,右键点击 `Chaca.app` 并选择 `Open`(打开)
4. 如果 macOS 仍然阻止,请前往 `System Settings -> Privacy & Security` 并点击 `Open Anyway`(仍要打开)
如果仍然无效,请手动移除隔离属性:
```
xattr -dr com.apple.quarantine "/Applications/Chaca.app"
```
然后再次打开应用。
## 使用方法
### URL 扫描
1. 输入目标 URL
2. 选择 **Passive**(被动)或 **Full**(全量)扫描
3. 查看仪表盘 — 评分、漏洞、目标情报
4. 打开发现项查看证据、修复建议、CWE 参考
5. 导出为 JSON、CSV、SARIF 或 PDF
### 本地文件夹扫描 (v0.6)
1. 点击 **SCAN FOLDER** 并选择一个项目目录
2. Chaca 扫描:Secrets(AWS、GitHub、Stripe 等)、暴露的配置文件(`.env`、CI、K8s)以及端点模式(Express、Next.js、FastAPI)
3. 所有扫描仅在本地进行;不会有任何内容离开您的设备
4. 结果显示在同一个仪表盘中;像往常一样导出
## 项目结构
```
src/ # React frontend
├── components/
│ ├── dashboard/ # Scan results, charts, target intelligence
│ ├── layout/ # App shell, sidebar, header
│ ├── settings/ # Settings page and controls
│ └── ui/ # Radix-based primitives
├── store/ # Zustand (scan state, settings)
└── utils/ # Export helpers
src-tauri/ # Rust backend
└── src/
├── scanner/
│ ├── engine.rs # Scan orchestrator
│ ├── crawler.rs # URL discovery
│ ├── folder_scanner.rs # Local folder scan (secrets, config, endpoints)
│ ├── passive.rs # Passive checks
│ ├── active.rs # Active tests
│ ├── cms.rs # CMS detection
│ ├── recon.rs # Target intelligence
│ └── rules/ # api_exposure, data_exposure, info_disclosure,
│ # exposed_services, vuln_db
└── lib.rs # Tauri commands & data structures
```
## 作者
**Aris Setiawan**
- [madebyaris.com](https://madebyaris.com)
- [GitHub @madebyaris](https://github.com/madebyaris)
- [X @arisberikut](https://x.com/arisberikut)
开源软件。请负责任地使用。
标签:API安全, DInvoke, JSON输出, OWASP Top 10, React 19, Rust, SARIF, Snort++, Talos规则, Tauri 2, Web安全, 主动扫描, 加密, 可视化界面, 威胁情报, 密码管理, 开发者工具, 插件系统, 桌面应用, 漏洞扫描器, 目标情报, 网络安全, 网络流量审计, 蓝队分析, 被动扫描, 通知系统, 隐私保护