Swek09/DepSentry

GitHub: Swek09/DepSentry

DepSentry 是一款用 Rust 编写的供应链安全 CLI 工具,通过 CVE 查询与静态启发式分析在依赖安装前检测潜在恶意行为。

Stars: 23 | Forks: 1

# 🛡️ DepSentry [![Language](https://img.shields.io/badge/Language-Rust-orange.svg)](https://www.rust-lang.org/) [![Release](https://img.shields.io/github/v/release/Swek09/DepSentry)](https://github.com/Swek09/DepSentry/releases) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) [![Security](https://img.shields.io/badge/Security-Supply%20Chain-green)](https://mitre-attack.github.io/) **DepSentry** 是一款用 Rust 编写的快速 CLI 工具,专注于**主动的供应链安全**。 大多数工具仅停留在“是否存在 CVE?”这一步。DepSentry 则更进一步:在你安装它们**之前**,它会将**包下载到一个临时沙箱**中,并运行**静态启发式分析**(熵/混淆、可疑脚本、网络指标等)。 ![DepSentry Demo](https://raw.githubusercontent.com/Swek09/DepSentry/main/assets/demo.gif) ## ✨ 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, 云安全监控, 依赖管理, 可视化界面, 域名收集, 网络信息收集, 网络流量审计, 通知系统, 静态分析