ramukallepalli/vibe-vuln-scanner
GitHub: ramukallepalli/vibe-vuln-scanner
基于 Chrome 扩展的前端安全扫描工具,集成 CISA KEV 和 NVD 数据库,帮助用户在浏览网页时即时发现已知漏洞和客户端安全风险。
Stars: 0 | Forks: 0
# Vibe 漏洞扫描器
[](LICENSE)
[](CHANGELOG.md)
[](CONTRIBUTING.md)
[](CODE_OF_CONDUCT.md)
**在攻击者之前发现可利用的漏洞。** 由 CISA 已知被利用漏洞目录驱动的实时安全扫描,并带有自动 NVD 验证功能。

## ✨ 核心功能
- 🔍 **实时扫描** - 页面加载时自动检测漏洞
- 🛡️ **CISA KEV 集成** - 根据官方已知被利用漏洞目录进行检查
- ✅ **NVD 验证** - 使用 NIST CVE 数据确认存在漏洞的版本
- 📊 **持久化历史** - 存储每个域名最近 50 次扫描 (v1.2.0)
- 📤 **导出结果** - 将检测结果下载为 JSON 或 CSV (v1.2.0)
- 🔐 **HTTP 标头分析** - 检查安全标头 (v1.2.0)
- 🎯 **置信度评分** - 区分已确认的检测结果和启发式推断
- 🔒 **隐私至上** - 所有扫描均在本地进行,不收集任何数据
- ⚡ **Manifest V3** - 现代化的 Chrome 扩展架构
## 快速入门
1. 克隆此仓库
2. 在 Chrome 中打开 `chrome://extensions/`
3. 启用右上角的“开发者模式”
4. 点击“加载已解压的扩展程序”并选择项目目录
5. 导航至任意网站并点击扩展图标!
尝试使用内置的 `test-page.html` 查看实际的检测效果。
## 安装
### 面向用户
**[从 Chrome 网上应用店安装](https://chromewebstore.google.com/detail/gongeafhjogbeaamabonkmlbcokgndkc?utm_source=item-share-cb)** 🎉
### 面向开发者
```
# 克隆仓库
git clone https://github.com/ramukallepalli/vibe-vuln-scanner.git
cd vibe-vuln-scanner
# 安装依赖
npm install
# 在 Chrome 中加载扩展
# 1. 导航到 chrome://extensions/
# 2. 启用 "Developer mode"
# 3. 点击 "Load unpacked"
# 4. 选择 vibe-vuln-scanner 目录
# 在开发模式下运行并自动重新加载
npm run dev
```
### 生产环境构建
```
npm run package
```
在 `web-ext-artifacts/` 目录下生成一个 `.zip` 文件,可直接用于提交至 Chrome 网上应用店。
## 工作原理
### 了解扫描模型
此扩展提供的是**启发式安全分析**,而非绝对的漏洞确认。结果按以下方式进行分类:
#### 置信度级别
- **高**:问题有明确的证据(例如,已确认通过 HTTP 加载脚本)
- **中**:可能存在问题,但需要验证(例如,潜在的敏感信息模式)
- **低**:信号微弱,需要人工排查(例如,产品名称与 KEV 数据库匹配)
#### 发现分类
- **已确认**:客观事实(例如,缺少 HTTPS)
- **极可能**:基于强证据极有可能存在的问题
- **启发式**:基于模式的检测,需要结合上下文判断
- **信息性**:建议或提示,而非漏洞
### 带有自动版本验证的 CISA KEV 关联
该扩展会自动验证检测到的库版本是否存在漏洞:
1. 从脚本 URL 和 meta 标签中**检测库**(jQuery、React、Vue、Angular 等)
2. 将产品与 CISA KEV 目录进行**匹配**
3. 从 NVD API **获取 CVE 详情**以获取受漏洞影响的版本范围
4. **比较版本**以确定检测到的版本是否处于受影响范围内
**结果分类:**
- **严重 (已确认)**:根据 NVD 数据已确认该版本存在漏洞 → 需要立即采取行动
- **低 (信息性)**:产品与 KEV 匹配,但版本似乎是安全的 → 自动检查您是否使用的是最新稳定版
- **中 (信息性)**:产品与 KEV 匹配,但 NVD 数据不可用 → 建议人工验证
## 扫描内容
### 已确认的问题
- ✅ **HTTP 脚本**:通过不安全的 HTTP 加载脚本 → `高` 严重性
- ✅ **弱 CSP**:CSP 中包含 `unsafe-inline` 或 `unsafe-eval` → `中` 严重性
- ✅ **有漏洞的库**:已确认的 KEV 匹配并经过 NVD 验证 → `严重` 严重性
### 启发式模式(需要验证)
- 🔍 **内联事件处理器**:`onclick`、`onerror` 等 → `中` 严重性
- 🔍 **敏感信息暴露**:API 密钥的模式匹配 → `高` 严重性
- 🔍 **innerHTML 使用**:潜在的 XSS 风险 → `低` 严重性,信息性
- 🔍 **缺少 SRI**:没有 integrity 属性的 CDN 脚本 → `低` 严重性,信息性
### 发现结构
每项发现包括:
```
{
id: "finding-12345", // Fingerprint for deduplication
type: "INLINE_EVENT_HANDLER",
severity: "MEDIUM", // CRITICAL, HIGH, MEDIUM, LOW
confidence: "medium", // high, medium, low
category: "heuristic", // confirmed, probable, heuristic, informational
title: "Inline Event Handlers Detected",
description: "Found 3 elements with inline event handlers...",
evidence: { count: 3, samples: [...] },
remediation: "Consider using addEventListener...",
metadata: {},
timestamp: 1234567890
}
```
## 截图

*主要扫描结果界面,显示严重性级别划分*

*附带修复指导的详细发现说明*

*将扫描结果导出为 JSON 或 CSV (v1.2.0)*

*查看每个域名的历史扫描记录 (v1.2.0)*
## 架构
```
vibe-vuln-scanner/
├── manifest.json # Extension manifest (MV3)
├── src/
│ ├── content/
│ │ └── scanner.js # Vulnerability scanner logic (1,150 lines)
│ ├── background/
│ │ └── service-worker.js # KEV management, NVD integration (644 lines)
│ └── popup/
│ ├── popup.html # Popup UI
│ ├── popup.css # Styles
│ └── popup.js # Safe DOM rendering, export, history (481 lines)
├── __tests__/ # Jest test suite
├── CHANGELOG.md # Version history
└── package.json # NPM configuration
```
### 消息流
1. **自动扫描**:内容脚本在页面加载时运行 → 将结果发送到后台 → 后台存储并更新徽章
2. **手动扫描**:弹出窗口请求扫描 → 内容脚本扫描 → 后台存储 → 弹出窗口显示结果
## 可用脚本
```
npm run lint # Run ESLint
npm run lint:fix # Auto-fix linting issues
npm test # Run Jest test suite
npm run test:watch # Run tests in watch mode
npm run test:coverage # Generate coverage report
npm run dev # Run extension with auto-reload
npm run package # Build production .zip
```
## 安全与隐私
- ✅ **无外部数据传输**:所有扫描均在客户端进行(获取公共 CISA KEV 目录除外)
- ✅ **无用户追踪**:无分析,无遥测
- ✅ **最小权限**:仅请求 activeTab、storage、alarms、tabs 权限
- ✅ **安全渲染**:所有弹出窗口内容均通过 DOM API 渲染,而非 innerHTML
- ✅ **仅限 HTTPS**:KEV 目录和 NVD API 调用均使用 HTTPS
### 权限说明
- `activeTab`:访问当前选项卡的 DOM 以进行扫描
- `storage`:在本地缓存 CISA KEV 目录和扫描历史
- `alarms`:安排周期性的 KEV 刷新(MV3 要求)
- `tabs`:检测选项卡关闭/导航以清理结果
## 局限性
1. **启发式 XSS 检测**:存在 `onclick` 并不能证明 XSS 可被利用
2. **敏感信息模式匹配**:基于正则表达式,容易产生误报
3. **仅限客户端**:无法检查服务端代码或 HTTP 响应头
4. **无 DOM XSS 分析**:不追踪数据流以检测基于 DOM 的 XSS
5. **版本检测**:依赖于脚本 URL/meta 标签中的版本号
## 贡献
我们欢迎您的贡献!有关指南,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
**优质新手问题**:[查看适合新手的任务](https://github.com/ramukallepalli/vibe-vuln-scanner/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
### 添加新的漏洞检测
```
scanNewPattern() {
const findings = [];
findings.push(this.createFinding({
type: 'NEW_PATTERN',
severity: 'MEDIUM',
confidence: 'low',
category: 'heuristic',
title: 'Pattern Detected',
description: 'Explanation of what was found',
evidence: { key: 'value' },
remediation: 'How to fix'
}));
return findings;
}
```
从 `runScans()` 调用,检测结果将自动去重。
## 测试
### 自动化测试
```
npm test
```
测试套件包括:
- 版本解析与比较逻辑
- 检测结果去重
- 敏感信息模式检测
- Chrome API 模拟
### 手动测试
内置的 `test-page.html` 包含以下故意设置的问题:
- 内联事件处理器
- innerHTML 使用
- 缺少 SRI
- 弱 CSP
- 潜在的敏感信息暴露模式
## CISA KEV 集成
- **来源**:https://www.cisa.gov/known-exploited-vulnerabilities-catalog
- **更新频率**:每 6 小时通过 chrome.alarms 更新
- **存储**:chrome.storage.local(在扩展重启后依然保留)
- **NVD 集成**:从 https://services.nvd.nist.gov/rest/json/cves/2.0 获取 CVE 详情
- **缓存机制**:KEV (24h),CVE 详情 (永久),npm 版本信息 (1h)
## 更新日志
有关详细的版本历史,请参阅 [CHANGELOG.md](CHANGELOG.md)。
## 许可证
Apache License 2.0 - 详见 [LICENSE](LICENSE) 文件。
## 致谢
- 贡献者:见 [AUTHORS.md](AUTHORS.md)
- 强力支持:[CISA KEV](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) 和 [NIST NVD](https://nvd.nist.gov/)
## 支持
- **问题反馈**:[GitHub Issues](https://github.com/ramukallepalli/vibe-vuln-scanner/issues)
- **讨论交流**:[GitHub Discussions](https://github.com/ramukallepalli/vibe-vuln-scanner/discussions)
- **安全问题**:有关漏洞报告请参见 [SECURITY.md](SECURITY.md)
标签:CISA KEV, CISA项目, Claude, CVE检测, GPT, HTTP头部分析, Manifest V3, NVD验证, 代码生成, 反取证, 多模态安全, 子域名暴力破解, 安全合规, 安全评估, 实时安全扫描, 数据可视化, 无线安全, 暗色界面, 浏览器插件, 渗透测试工具, 漏洞管理, 版本校验, 网络代理, 网络安全, 网络安全, 网络安全审计, 自动化检测, 自定义脚本, 隐私保护, 隐私保护