thesp0nge/dr_source
GitHub: thesp0nge/dr_source
一款支持 Java、Python、JS/TS 的多语言静态代码安全分析工具,通过 AST 污点追踪和兼容 Semgrep 的布尔引擎精准发现跨文件漏洞。
Stars: 17 | Forks: 3
# DRSource
DRSource 是一款专业、可扩展、多语言的**静态应用安全测试 (SAST)** 工具。它结合了高速正则表达式模式匹配、先进的**基于 AST 的跨文件污点分析**以及**兼容 Semgrep 的布尔引擎**,能够识别整个代码库中的复杂漏洞。
DRSource 不仅仅查找“恶意字符串”;它还理解应用程序的数据流,跟踪用户输入从入口点(Sources)穿透逻辑层,遵循安全过滤函数,直到抵达危险的执行点(Sinks)。
## 核心特性
- **先进的跨文件污点分析**:跟踪跨不同文件和模块的数据流。它可以追踪一个污点变量,从某个文件中的 Web 控制器一直延伸到另一个文件中的数据库辅助函数。
- **兼容 Semgrep 的布尔引擎 (v0.110.0)**:支持使用以下方式定义复杂的规则:
- `patterns`:跨多个模式的逻辑与 (AND)。
- `pattern-either`:用于替代匹配的逻辑或 (OR)。
- `pattern-not`:用于排除特定情况(例如,测试代码或已知安全模式)的逻辑非 (NOT)。
- **元变量统一**:真正的 `$X` 元变量匹配,确保同一变量名的多次出现指向同一个 AST 节点。
- **工业级精度**:
- **字段敏感的污点跟踪**:区分对象中的不同字段(例如,标记 `user.name` 但忽略 `user.id`),从而减少在大量使用 ORM/DTO 的现代代码中的误报。
- **常量传播**:自动识别并跟踪硬编码值和安全的字符串拼接,通过忽略安全的“sinks”来大幅减少误报。
- **作用域管理**:理解局部和全局作用域,防止函数之间的变量名冲突。
- **AST Sanitizers**:识别安全控制措施(例如 `escape()`、`prepareStatement`、`int()`)。
- **多引擎分析**:
- **Tree-sitter 驱动**:为 Java 和 JavaScript/TypeScript 采用工业级解析器,能够对现代语法进行稳健分析。
- **原生 Python AST**:与 Python 原生 AST 深度集成,实现精确的数据流跟踪。
- **专业知识库**:高度可配置的基于 YAML 的规则引擎,支持配置覆盖层(默认、用户、项目、CLI)。
## 支持的语言与框架
- **Java**:Spring, Servlets, JDBC。
- **Python**:Flask, Django, FastAPI, 标准库。
- **JavaScript/TypeScript**:Node.js (Express), Sequelize, Prisma, Axios, 浏览器端 JS。
## 布尔规则示例
DRSource 允许直接在 YAML 中定义复杂的逻辑:
```
SELF_COMPARISON:
description: "Comparing a variable to itself is usually a bug."
severity: "LOW"
language_specific:
python:
patterns:
- pattern: "$X == $X"
- pattern-not: "1 == 1"
```
## 安装说明
克隆仓库并以可编辑模式安装:
```
git clone https://github.com/thesp0nge/dr_source.git
cd dr_source
pip install --editable .
```
## 用法
```
# 目录的标准 scan
dr_source /path/to/codebase
# 查看完整的 data-flow traces
dr_source --show-trace /path/to/codebase
# 导出到 SARIF 以进行 CI/CD 集成
dr_source --export sarif --output report.sarif /path/to/codebase
```
## 许可证
DRSource 采用 MIT 许可证授权。
标签:CISA项目, DevSecOps, GraphQL安全矩阵, Java分析, JS文件枚举, odt, SAST工具, Semgrep兼容, Tree-sitter, TypeScript分析, XML 请求, 上游代理, 代码安全, 作用域管理, 元变量匹配, 多语言支持, 字段敏感, 安全开发, 安全扫描器, 安全测试框架, 布尔逻辑引擎, 常量传播, 抽象语法树, 数据可视化, 正则表达式匹配, 漏洞枚举, 跨文件分析, 逆向工具, 错误基检测, 静态代码分析, 静态应用安全测试