特点 • 安装 • 用法 • 运行 depx • JSON • 加入 Discord
depx 是一个快速、被动的供应链情报 CLI。它通过匹配 OpenSSF 恶意软件包 数据(MAL-*,OSV 格式)以及从 X(Grok API) 每小时刷新一次的活动情报订阅源,告知你某个软件包是否已知恶意(劫持发布、凭据窃取程序、安装脚本后门)。
它能在几秒钟内回答四个问题:
depx feed 显示按时间排序的卡片(或 --list 显示每行一个结果)。--require-clean 门控、SARIF 导出以及版本化 JSON 信封。ecosystem:name 引用、裸名称或管道列表。--exclude-pkg 文件,用于从审计结果中排除已知良好的软件包。curl -sfL https://raw.githubusercontent.com/projectdiscovery/depx/main/scripts/install.sh | sh
下载适用于你 OS/arch 的最新发布版本(或退而使用 go install 构建)。该脚本会验证二进制文件,并在需要时更新你的 shell PATH。
从源码构建(需要 Go 1.25+):
git clone https://github.com/projectdiscovery/depx.git
cd depx
make build
./bin/depx --help
或者直接用 Go 安装:
go install github.com/projectdiscovery/depx/cmd/depx@latest
预编译二进制文件也位于 GitHub releases 页面。
depx --help
核心命令和标志:
用法:
depx [flags]
depx [command]
可用命令:
feed 显示最近披露的恶意软件包(卡片)
audit 审计依赖项中的恶意软件包(默认:$HOME)
github 通过依赖关系图 SBOM 审计 GitHub 仓库
search 按名称搜索已知恶意软件包(本地索引)
id 按 ID 查找公告
version 显示版本并检查更新
update 将 depx 更新到最新版本
全局标志:
-j, --json 机器可读的 JSON 输出
-V, --version 显示版本并退出
-e, --ecosystem string 将查找限制为一个生态系统(npm, PyPI, Go, ...)
-v, --verbose 额外的审计/github 细节
--silent 隐藏横幅和版本信息
--no-color 禁用 ANSI 颜色
--config string 配置文件路径
--update 将 depx 更新到最新版本
--disable-update-check 禁用更新检查
默认命令(情报面板):
--since string 订阅源时间窗口(默认 "3d")
-n, --limit int 默认命令的面板/订阅源条目上限
depx feed:
--since string 订阅源时间窗口(默认 "3d")
-n, --limit int 结果限制
--list 每行一个标题行
depx search:
-n, --limit int 显示的最大结果数(默认 25)
--list 每行一个标题行
depx audit / depx github:
--require-clean 如果发现任何恶意软件包则退出码为 1
--exclude-pkg string 包含要排除的 ecosystem:package 行的文件
-o, --output string 将导出文件写入此路径或基本名称
--output-format string 逗号分隔的导出格式:json, csv, txt(默认:json)
--sarif-export string 将 SARIF 2.1.0 报告写入此路径
--sbom-export string 写入已审计依赖项的 SBOM(仅 audit)
--sbom-format string SBOM 格式:cyclonedx(默认)或 spdx
depx github:
-n, --limit int 组织/用户目标的最大仓库数(有令牌默认 100,无令牌默认 10)
depx id:
--raw 仅原始 OSV 记录
depx # 最近 3 天的面板
depx --since 7d # 扩大时间窗口
depx -e npm # 仅 npm 面板
depx feed # 卡片订阅源(无面板)
depx feed --list # 每行一个公告
depx -j # 用于面板/管道的 JSON
针对本地恶意软件包索引扫描锁定文件和 SBOM,首次运行后即时完成。未指定路径时,depx 会扫描 $HOME 中的项目和全局安装。
depx audit # 扫描 $HOME 中的项目 + 全局安装
depx audit ./my-app # 单个项目树
depx audit ./bom.cdx.json # CycloneDX / SPDX 文件
支持 npm、PyPI、Go、Cargo、RubyGems、Maven/Gradle 锁定文件,以及 CycloneDX / SPDX SBOM。
抑制误报。 当某个软件包被标记但你已经验证为安全时,传递 --exclude-pkg(用于 audit 或 github)一个包含换行符分隔的 ecosystem:package 条目的文件,以将其从结果中排除:
depx audit ./my-app --exclude-pkg .depxignore
depx github google --exclude-pkg .depxignore
# .depxignore: 要从结果中排除的软件包
npm:internal-tool
PyPI:requests
*:shared-lib # '*' 匹配任何生态系统
使用 GitHub 的依赖关系图 SBOM 导出。设置 GITHUB_TOKEN 以访问私有仓库和发现组织。
depx github projectdiscovery/depx
depx github google
depx github
未经身份验证的 GitHub 访问限制约为每小时 60 个请求,因此没有令牌时组织/用户扫描默认为 10 个仓库(而有令牌时为 100 个)。设置 GITHUB_TOKEN、GH_TOKEN 或 DEPX_GITHUB_TOKEN(或使用 -n 明确提高限制)以扫描更多内容。
depx npm:lodash
depx id MAL-2026-4343
depx search redhat
--require-clean 会在发现恶意软件包时立即退出并返回非零状态码。
depx audit . --require-clean # 如有任何恶意软件包则构建失败
depx github google --require-clean -j
| 退出代码 | 含义 |
|---|---|
0 | 干净/成功 |
1 | --require-clean 且找到了恶意软件包 |
每个 -j 响应都使用一个稳定、版本化的信封,因此可以安全地在其上构建。
{
"schema_version": "1",
"command": "check",
"depx_version": "v0.1.0",
"data": {
"total": 1,
"results": [
{
"ref": "npm:evil-pkg",
"purl": "pkg:npm/evil-pkg",
"verdict": "malicious",
"confidence": "high",
"ids": ["MAL-2026-4343"],
"package_ecosystem": "npm",
"package_name": "evil-pkg",
"registry_url": "https://www.npmjs.com/package/evil-pkg",
"advisories": [
{
"id": "MAL-2026-4343",
"url": "https://github.com/ossf/malicious-packages/blob/main/osv/npm/MAL-2026-4343.json",
"summary": "Malicious code in evil-pkg (npm)",
"modified_at": "2026-06-01T12:00:00Z",
"published_at": "2026-06-01T10:00:00Z"
}
]
}
]
}
}
一个干净的软件包返回 "verdict": "clean"。当搜索所有生态系统时,裸名称检查可能包含 checked_ecosystems、matched_ecosystems 和 found_ecosystems。
模式文件位于 schema/v1/。
depx 采用 MIT 许可证 分发。
加入我们的 Discord • 由 ProjectDiscovery 团队用 ❤️ 构建
2 | 用法错误 |
3 | 上游不可用 |