rangertaha/exfil
GitHub: rangertaha/exfil
Exfil 是一个基于 Rust 的离线 DevSecOps 静态分析引擎,通过插件化扫描代码、基础设施配置、依赖项和远程主机,在安全漏洞发布前将其捕获并存储到可查询的图数据库中。
Stars: 0 | Forks: 1
# Exfil
***检查文件、基础设施与库*** — 一个基于插件的静态分析 DevSecOps 引擎。
[](https://github.com/Rangertaha/exfil/actions/workflows/ci.yml)
[](https://rangertaha.github.io/exfil/)
[](LICENSE)
exfil 是一个离线、基于插件的 DevSecOps 引擎,可扫描您的整个交付面以查找安全问题,并将所有发现记录到一个可查询的图中——从而让您在泄露的秘密、存在漏洞的代码和高风险配置发布之前就将其捕获,且整个过程完全在您的本地机器上完成。
```
flowchart LR
T["Targets
code · config · deps
hosts · web"] --> S["Scan
walk · parse · render"] S --> M["Match
secrets · taint · IOCs
YARA · PII · supply-chain"] M --> G[("Findings graph
SurrealDB")] G --> R["Report
search · TUI · reports
HTTP · GraphQL · MCP"] ``` **扫描范围** - **代码** — 通过 tree-sitter 支持 17 种语言(危险调用 + 污点分析),外加针对任意文本的 secret/regex 规则 - **基础设施与配置** — Terraform/HCL、Dockerfiles、Kubernetes/YAML - **依赖项** — `package.json`、`requirements*.txt`、`Cargo.toml` - **压缩包与容器层** — zip/jar/war/tar/tar.gz/gz,解压后就地扫描 - **主机** — 本地文件系统、通过 SSH 连接的远程主机,以及正在运行的进程 - **Web 与网络** — 爬取的站点(包括通过 WebDriver 渲染的 JavaScript 页面)以及 TCP 服务 banner **检测目标** — 泄露的凭证、代码注入流、供应链风险(恶意及拼写错误的依赖项)、恶意软件特征(YARA · ClamAV)、IOC(恶意域名/IP/哈希值)以及 PII。扫描发现将存入一个嵌入式图数据库(或远程集群),您可以对其进行查询、在 TUI 中浏览,或通过 HTTP/GraphQL 提供服务。 📖 **完整文档: **
## 安装
exfil 是一个单一的可执行二进制文件 — 采用纯 Rust 编写,支持在 Linux、macOS 和 Windows 上运行。
```
# 从 source checkout 安装到你的 PATH
cargo install --path crates/exfil-cli
# 或者直接 build 它
cargo build --release # binary at target/release/exfil
```
## 快速开始
```
# 扫描当前目录 (流式输出匹配项; 终端上显示进度条)
exfil scan
# 查询已存储的 findings
exfil search # everything
exfil search severity=critical # by field: rule/cwe/severity/path
exfil search aws # free text against rule names
# 打开 live TUI (mutt 风格的 index + pager)
exfil tui
# 查看单条记录,列出 rules,进行清理
exfil get file:
exfil rules
exfil clean
```
示例扫描输出(严重程度在终端中通过颜色区分):
```
./.env:1:26 CRIT [aws-access-key-id] export AWS_ACCESS_KEY_ID=AKIA0123456789ABCDEF
./src/config.toml:1:7 HIGH [password-in-url] db = "postgres://admin:hunter2@db.internal/prod"
scanned 3 files (0 unchanged): 2 new matches, 0 unreadable
```
## 常用命令
| 命令 | 功能说明 |
|---|---|
| `exfil scan [path]` | 扫描目录树以查找 secret 和安全问题 |
| `exfil scan-remote [user@]host:/path` | 通过 SSH/SFTP 扫描远程主机 |
| `exfil search [query]` | 查询已存储的扫描发现(按字段或自由文本) |
| `exfil analyze` | 生成图报告 (`--format text\|json\|markdown`) |
| `exfil tui` | 打开 mutt 风格的 TUI 进行实时扫描和浏览 |
| `exfil pull [ref]` | 将规则/IOC 数据集下载到目录中 |
| `exfil rules` | 显示扫描将应用的规则 |
| `exfil clean` | 删除扫描发现存储(保留已下载的数据集) |
[完整命令参考](https://rangertaha.github.io/exfil/guide/commands.html)
涵盖了远程、进程、网络、关联和 MCP 命令。运行
`exfil --help` 可查看特定命令的标志。
## 配置
首次运行时会在用户配置目录(例如 `~/.config/exfil/config.toml`)中写入默认的 TOML 配置;`exfil config` 会显示解析出的路径及其内容。每个插件都有自己的 `[plugins.]` 表:
```
store = ".exfil"
[plugins.regex]
datasets = [] # empty = built-in security ruleset
[plugins.ast]
languages = ["go", "python", "javascript", "rust"]
```
扫描发现存储(默认为 `.exfil/`,可通过 `--store` 覆盖)是当前扫描项目本地的,可通过 `exfil clean` 删除;下载的数据集位于配置目录中,且在清理后依然保留。详情请参阅
[配置指南](https://rangertaha.github.io/exfil/guide/configuration.html)
。
## 文档
完整文档位于 ** **:
- [exfil 分析内容](https://rangertaha.github.io/exfil/guide/surfaces.html)
以及完整的[功能列表](https://rangertaha.github.io/exfil/guide/features.html)
- [命令参考](https://rangertaha.github.io/exfil/guide/commands.html)、
[TUI 快捷键](https://rangertaha.github.io/exfil/guide/tui.html) 以及
[配置](https://rangertaha.github.io/exfil/guide/configuration.html)
- [架构指南](https://rangertaha.github.io/exfil/architecture/) —
包含多页内容的详细介绍,讲解了 exfil 的构建方式,专为 Rust 初学者编写
这些文档使用 [mdBook](https://rust-lang.github.io/mdBook/) 和
[mdbook-mermaid](https://github.com/badboy/mdbook-mermaid)(用于绘制图表)构建,
源文件位于 [`docs/`](docs/)。要在本地预览:
```
mdbook-mermaid install docs # vendor the mermaid assets once
mdbook serve docs
```
## 开发
```
cargo test --workspace # run all tests
cargo fmt --all && cargo clippy --workspace --all-targets # lint
cargo llvm-cov --workspace # coverage report
```
代码中刻意包含了大量文档 — 每个 crate 的文档都包含 *Rust 笔记*,解释了其所使用的语言惯用法,旨在帮助 Rust 初学者。
## 许可证
[MIT](LICENSE)
code · config · deps
hosts · web"] --> S["Scan
walk · parse · render"] S --> M["Match
secrets · taint · IOCs
YARA · PII · supply-chain"] M --> G[("Findings graph
SurrealDB")] G --> R["Report
search · TUI · reports
HTTP · GraphQL · MCP"] ``` **扫描范围** - **代码** — 通过 tree-sitter 支持 17 种语言(危险调用 + 污点分析),外加针对任意文本的 secret/regex 规则 - **基础设施与配置** — Terraform/HCL、Dockerfiles、Kubernetes/YAML - **依赖项** — `package.json`、`requirements*.txt`、`Cargo.toml` - **压缩包与容器层** — zip/jar/war/tar/tar.gz/gz,解压后就地扫描 - **主机** — 本地文件系统、通过 SSH 连接的远程主机,以及正在运行的进程 - **Web 与网络** — 爬取的站点(包括通过 WebDriver 渲染的 JavaScript 页面)以及 TCP 服务 banner **检测目标** — 泄露的凭证、代码注入流、供应链风险(恶意及拼写错误的依赖项)、恶意软件特征(YARA · ClamAV)、IOC(恶意域名/IP/哈希值)以及 PII。扫描发现将存入一个嵌入式图数据库(或远程集群),您可以对其进行查询、在 TUI 中浏览,或通过 HTTP/GraphQL 提供服务。 📖 **完整文档:
标签:DevSecOps工具, 可视化界面, 基础设施即代码扫描, 安全专业人员, 机密检测, 通知系统, 错误基检测, 静态代码分析