mlab-sh/mlab-cve
GitHub: mlab-sh/mlab-cve
mlab-cve 是一个 Rust 编写的 CVE 漏洞搜索命令行工具,简化漏洞信息获取和管理。
Stars: 4 | Forks: 0
# mlab-cve
一个轻量、快速的 Rust 命令行工具,可直接在终端中通过 [vuln.mlab.sh](https://vuln.mlab.sh) 搜索 CVE 漏洞。
```
┳┳┓┓ ┏┓┳┓ ┏┓┓ ┏┓
┃┃┃┃ ┣┫┣┫───┃ ┃┃ ┣
┛ ┗┗┛┛┗┻┛ ┗┛┗┛┗┛
vuln.mlab.sh client
```
- 🔎 全文搜索 + 多维度筛选(严重性、日期范围、精确匹配)
- 🆕 最新发布的 40 条 CVE
- 📄 详细信息:CVSS 向量分解、EPSS、CISA KEV、CWE、受影响产品、参考链接
- 🎨 彩色输出(严重 / 高危 / 中危 / 低危)
- 📦 `--json` 标志,便于通过管道传入 `jq`、脚本、仪表盘等
- 🦀 单一静态二进制文件,无运行时依赖
## 安装说明
### 通过发布版本
从 [发布页面](../../releases) 获取适用于您平台的预编译二进制文件:
| 平台 | 目标三元组 |
| -------------------- | ------------------------------ |
| macOS (Apple Silicon) | `aarch64-apple-darwin` |
| Linux x86_64 | `x86_64-unknown-linux-gnu` |
| Linux ARM64 | `aarch64-unknown-linux-gnu` |
然后执行:
```
tar -xzf mlab-cve--.tar.gz
chmod +x mlab-cve
sudo mv mlab-cve /usr/local/bin/
```
### 通过源码编译
您需要近期的稳定版 Rust 工具链(≥ 1.74)。可通过 [rustup](https://rustup.rs/) 安装。
```
git clone https://github.com/mlab-sh/mlab-cve.git
cd mlab-cve
cargo build --release
./target/release/mlab-cve --help
```
将其安装到您的 `PATH` 中:
```
cargo install --path .
```
## 本地构建(速查手册)
```
# 调试构建(快速编译)
cargo build
# 发布构建(优化、剥离符号)
cargo build --release
# 无需安装运行
cargo run -- latest
# 带参数运行
cargo run -- search openssl --severity high
# 检查 / 代码分析
cargo check
cargo clippy --all-targets -- -D warnings
cargo fmt
```
编译后的二进制文件位于 `target/release/mlab-cve`。
## 使用方法
```
mlab-cve [OPTIONS]
```
全局标志:
| 标志 | 说明 |
| ---------------- | ------------------------------ |
| `--json` | 输出原始 JSON 而非美化格式。 |
| `--no-banner` | 不打印 ASCII 横幅。 |
| `-h, --help` | 显示帮助信息。 |
| `-V, --version` | 显示版本信息。 |
### 命令
#### `latest` —— 最近的 40 条 CVE
```
mlab-cve latest
```
#### `search` —— 关键词搜索
```
mlab-cve search openssl
mlab-cve search log4j --severity critical --limit 10
mlab-cve search "remote code execution" --from 2024-01-01 --to 2024-12-31
mlab-cve search CVE-2024-3094 --exact
```
选项:
| 标志 | 默认值 | 说明 |
| -------------------- | ------ | ------------------------------------- |
| `-p, --page ` | `0` | 从 0 开始的页码索引 |
| `-l, --limit ` | `20` | 每页结果数(最大 100) |
| `-s, --severity` | — | `critical` / `high` / `medium` / `low` |
| `--from ` | — | 发布日期下限 |
| `--to ` | — | 发布日期上限 |
| `-x, --exact` | 关闭 | 精确匹配而非模糊匹配 |
#### `show` —— 显示单个 CVE 的完整详情
```
mlab-cve show CVE-2024-3094
mlab-cve --json show CVE-2024-3094 | jq '.cvss_score, .epss_score'
```
### 管道传输 JSON
```
mlab-cve --json search openssl --severity critical --limit 50 \
| jq -r '.cves[] | [.id, .cvss_score, .epss_score] | @tsv'
```
## 示例
过去一周内的最新严重 CVE:
```
mlab-cve search "" --severity critical --from "$(date -v -7d +%F)"
```
涉及 Apache 的最常被利用的(CISA KEV)条目:
```
mlab-cve --json search apache --limit 100 \
| jq '.cves[] | select(.in_kev) | .id'
```
## API 参考
此客户端与公共 JSON API 通信,其文档位于 `https://vuln.mlab.sh`。
使用的端点:
- `GET /api/v1/cve` —— 搜索
- `GET /api/v1/cve/latest` —— 最新 40 条
- `GET /api/v1/cve/{ID}` —— 详情
无需认证,无 API 密钥。所有端点均有服务端缓存。
## 发布 / CI
GitHub Actions 为以下平台构建并发布二进制文件:
- macOS ARM64 (`aarch64-apple-darwin`)
- Linux x86_64 (`x86_64-unknown-linux-gnu`)
- Linux ARM64 (`aarch64-unknown-linux-gnu`)
当推送匹配 `Cargo.toml` 中版本号的标签时,将自动创建一个发布版本。要进行发布:
```
# 首先在 Cargo.toml 中提升版本号,然后:
VERSION=$(grep -m1 '^version' Cargo.toml | cut -d'"' -f2)
git tag "v$VERSION"
git push origin "v$VERSION"
```
此工作流也可从 Actions 标签页手动触发;它会读取 `Cargo.toml` 中的版本号,如果不存在 `v` 标签则会创建。
## 许可证
MIT 许可证 —— 详见 [LICENSE](LICENSE)。
标签:AES-256, API安全, CISA KEV, CVE搜索, CVSS, EPSS, GPT, JSON输出, Rust, vuln.mlab.sh客户端, 全文搜索, 分面搜索, 可视化界面, 安全扫描, 开源CLI, 彩色输出, 时序注入, 漏洞管理, 漏洞评估, 漏洞详情, 终端工具, 网络安全, 网络流量审计, 通知系统, 隐私保护, 静态二进制