为什么要检查服务器本身
网站扫描只能看到服务器对外展示的内容:响应头、暴露的文件、TLS。它无法发现三层之下的某个 Composer 包、构建过程中的某个 npm 依赖或后台 worker 的某个 Python 库存在已公开的 CVE——而一旦漏洞利用代码公开,攻击者扫描的正是这些。
唯一可靠的方法是列出实际安装的内容,并与漏洞数据库进行比对。这正是本检查所做的工作,比对对象为 OSV 以及 CISA 的在野利用漏洞清单(KEV)。
检查哪些内容
服务器按软件栈自下而上读取:
- 操作系统:发行版和内核。
- 系统库和已安装软件:openssl、nginx、docker、redis…
- 编程语言和框架:PHP 与 Laravel、JavaScript 与 Vue、Python…
- 语言库:每个应用程序的 Composer、npm 和 PyPI 包,包括直接依赖和传递依赖。
使用 --docker 时,每个正在运行的容器也会被原地读取,无需导出其镜像。
如何检查
wpsbom 是一个适用于 Linux 和 macOS 的开源单文件程序。它只读取文件,除非你要求,否则不会发送任何内容。
curl -fsSL https://raw.githubusercontent.com/ice-s/wpsbom/main/install.sh | sh它无法猜测你的代码位于何处,因此请用 --path 指定每个应用程序目录,数量不限:
sudo wpsbom scan / --path /srv/shop --path /srv/worker --docker \
--out-dir scans/ -o cyclonedx-json几秒钟后,scans/ 中会生成一个服务器文件,以及每个容器镜像各一个文件。然后登录,从账户菜单打开我的服务器,为项目命名,选择服务器并拖入文件:

- 只扫描应用程序库、不含操作系统软件包:
--no-os。 - 扫描单个镜像:
wpsbom scan --image acme/shop:1.4 -o cyclonedx-json=shop.cdx.json。 - 也支持 syft、Trivy 或 cdxgen 生成的文件(CycloneDX 或 SPDX JSON)。
解读结果
软件栈概括了整台服务器:每个区块显示其软件包以及按严重程度划分的未修复漏洞,区块左边缘的颜色取决于其中最严重的一个。点击某个区块即可只查看该部分。

漏洞列表采用相同的层级结构。位置说明某个软件包属于哪个应用程序,以及它是直接依赖还是传递依赖;修复版本给出修复的版本号和可复制的命令。

优先修复什么
- 已被利用(KEV)和严重:这些漏洞正被用于攻击真实服务器,请今天就升级。
- 应用程序的直接依赖:升级它们通常会同时带来传递依赖的修复版本。
- dev 软件包(构建工具)在生产服务器上影响较小,除非构建过程在该服务器上运行。
升级后,重新扫描并上传:列表会显示剩余的问题。若想无需手动操作即可保持最新,请在集成下创建 API 令牌,让 wpsbom 发送扫描结果,例如通过每日 cron 任务:
export WPSBOM_TOKEN=wp_…
sudo -E wpsbom push / --project demo-web-01 \
--path /srv/shop --path /srv/worker --docker常见问题
Watchpost 会连接我的服务器吗?不会。扫描由你自己运行;我们只读取你上传的文件。
会发送哪些数据?软件包名称、版本以及锁文件的路径。不包含源代码、配置或密钥。主机名会被替换为哈希值,上传的文件本身不会保留,项目仅对你的账户可见。
支持哪些系统?wpsbom 可读取 Debian、Ubuntu 和 Alpine 软件包,以及 Composer、npm / yarn、PyPI、Go 和 RubyGems 库;若文件来自其他工具,Maven 和 NuGet 库也会进行比对。操作系统软件包会被列出,但暂不与漏洞进行比对。
Kubernetes 呢?wpsbom k8s 在集群内运行,并将每个工作负载关联到其镜像的扫描结果。
本检测工具只回答一个问题。免费扫描可检查 50 多项任何人都能看到的内容——暴露的文件、泄露的密钥、TLS、响应头、DNS——验证域名后还可解锁 200 多项深度检查。
运行完整扫描