Swek09/DepSentry
GitHub: Swek09/DepSentry
DepSentry 是一款用 Rust 编写的供应链安全 CLI 工具,通过 CVE 查询与静态启发式分析在依赖安装前检测潜在恶意行为。
Stars: 23 | Forks: 1
# 🛡️ DepSentry
[](https://www.rust-lang.org/)
[](https://github.com/Swek09/DepSentry/releases)
[](LICENSE)
[](https://mitre-attack.github.io/)
**DepSentry** 是一款用 Rust 编写的快速 CLI 工具,专注于**主动的供应链安全**。
大多数工具仅停留在“是否存在 CVE?”这一步。DepSentry 则更进一步:在你安装它们**之前**,它会将**包下载到一个临时沙箱**中,并运行**静态启发式分析**(熵/混淆、可疑脚本、网络指标等)。

## ✨ DepSentry 的功能(目前)
DepSentry 包含两条“主线”:
### 1) 按需扫描
- `depsentry check` — 扫描**单个包**(远程)或**本地目录**
- `depsentry scan` — 扫描**来自 manifest 的依赖**(基础解析,支持 npm/pypi/cargo/java)
### 2) 持续监控
- `depsentry firewall ...` — 本地 daemon + 项目注册表(阶段 0)
- 启动/停止/重启 daemon
- 添加/移除/列出项目
- 查看状态与日志
## 📥 安装
### 选项 A:下载二进制文件(推荐)
从 Releases 页面获取预构建的二进制文件:
- Windows: `DepSentry-Installer-x64.msi`
- Ubuntu/Debian: `DepSentry-Linux-x64.deb`
- Linux(其他): `DepSentry-Linux-x64.tar.gz`
### 选项 B:从源码构建
```
git clone https://github.com/Swek09/DepSentry.git
cd DepSentry
cargo build --release
# binary: ./target/release/depsentry
```
## 🚀 用法
### A) 检查单个包(质量门禁)
当你想要快速审查单个依赖项时,请使用此功能。
```
# 尽可能自动检测 ecosystem (NPM / PyPI / Cargo / Java)
depsentry check axios
# 指定 ecosystem + version
depsentry check requests --type pypi --version 2.31.0
depsentry check serde --type cargo --version 1.0.197
depsentry check org.slf4j:slf4j-api --type java --version 1.7.36
# 保存 JSON 报告 (audit.json)
depsentry check axios --json
```
**行为**
* 打印该包的报告。
* 如果 **score < 50**,则以**退出码 1** 退出(质量门禁)。
### B) 扫描项目 manifest(审计但不会强制失败)
在 CI/CD 中审计 manifest 里的依赖项时,请使用此功能。
```
depsentry scan --path ./package.json
# 或
depsentry scan --path ./requirements.txt
# 或
depsentry scan --path ./Cargo.lock
# 或
depsentry scan --path ./pom.xml
# 或
depsentry scan --path ./build.gradle
```
**行为**
* 解析依赖项(目前仅为基础解析)。
* 下载并扫描每个依赖项。
* **仅在 score < 80 时**才打印报告(减少干扰)。
* 默认情况下**不会**“导致构建失败”(此模式目前尚无强制退出门禁)。
### C) Firewall 模式(daemon) — 阶段 0
```
# daemon 生命周期
depsentry firewall start
depsentry firewall stop
depsentry firewall restart
# project registry
depsentry firewall add ~/work/my-api
depsentry firewall ls
depsentry firewall status my-api
depsentry firewall logs my-api --lines 200
depsentry firewall rm my-api
depsentry firewall scan my-api --deep
depsentry firewall scan my-api --cve-only
depsentry firewall save
depsentry firewall resurrect
```
## 🔍 检查内容(分析引擎)
DepSentry 将漏洞查询与静态启发式分析结合在一起:
### 漏洞 (OSV)
* 当网络可用时,通过 `(ecosystem, name, version)` 查询 OSV。
* 如果 OSV/网络不可用,则跳过此检查(扫描继续进行)。
### 启发式(静态,无代码执行)
* **Typosquatting(域名/包名抢注)**: 基于小型热门列表进行简单的相似度(Levenshtein)检测
* **信誉度**: 标记极新的发布版本(例如,发布时间不到 7 天)
* **Entropy(熵)**: 高熵数据块(加壳/混淆内容)
* **可疑模式**: `eval/exec`
* **NPM 生命周期脚本**: `package.json` 中的可疑安装钩子
* **网络指标**: 硬编码的 IP / socket 模式(尽力检测)
所有操作均在**临时沙箱目录**中运行。DepSentry **不会**执行包中的代码。
## 🧱 架构(宏观)
DepSentry 由多个从 CLI 调用的小型模块组成:
* `cli.rs` — Clap 命令树 (`check`, `scan`, `firewall ...`)
* `ecosystem.rs` — NPM/PyPI 检测与辅助工具
* `fetcher.rs` — 注册表元数据查询、下载、解压(临时目录)
* `analysis.rs` — 启发式分析 + OSV 查询 + 评分
* `report.rs` — 终端表格 + 可选的 `audit.json`
* `firewall.rs` — daemon + 项目注册表 + 日志(阶段 0)
## ⚖️ 许可证
Copyright 2026 Mikhail Grishak.
基于 **Apache License, Version 2.0** 授权 — 详见 `LICENSE`。
标签:DNS 反向解析, LNA, Rust, 云安全监控, 依赖管理, 可视化界面, 域名收集, 网络信息收集, 网络流量审计, 通知系统, 静态分析