漏洞自查始于版本清点
漏洞自查始于版本清点:把「组件、版本、来源(系统包、自编译、容器镜像)」整理成表格,再对照官方公告与发行版勘误。这里最容易踩的坑是拿上游版本号直接判漏洞:发行版会在旧版本号上反向移植修复(backport),版本号低不代表一定有漏洞,版本号高也不代表一定安全。
基本信息
| 适用平台 | 全部平台 |
|---|---|
| 风险等级 | 中 |
| 基线要求 | 组件清点覆盖全部对外服务 |
| 清点字段 | 组件、版本、来源、部署位置 |
| 对照依据 | 上游公告与发行版勘误 |
| 难点 | 自编译组件与容器镜像 |
典型使用场景
- 周期性漏洞自查的起点
- 收到组件漏洞通告后评估影响范围
- 在资产台账中补充组件维度信息
- 排查自编译组件的版本追踪缺口
- 容器镜像基础组件的版本清点
- 为补丁排期提供准确的版本依据
常见组件版本清点
常见组件版本清点
for c in 'nginx -v' 'httpd -v' 'mysqld --version' 'redis-server --version' 'openssl version' 'ssh -V' 'bash --version'; do echo "== $c"; sh -c "$c" 2>&1 | head -1; done # 逐个输出组件版本
rpm -qa --qf '%{NAME}\t%{VERSION}\t%{RELEASE}\n' 2>/dev/null | sort | head -20 # RHEL 系完整包清单
dpkg-query -W -f='${Package}\t${Version}\n' 2>/dev/null | sort | head -20 # Debian 系完整包清单
docker images --format '{{.Repository}}:{{.Tag}} {{.ID}}' 2>/dev/null | head # 容器镜像清单清点字段读法
| 字段 | 含义 | 注意点 |
|---|---|---|
| 组件 | 软件名称 | 要覆盖全部对外服务 |
| 版本 | 实际运行的版本 | 以运行进程为准,而非仅看包 |
| 来源 | 系统包、自编译或容器镜像 | 决定跟进哪个公告 |
| 部署位置 | 所在主机与服务 | 便于评估影响范围 |
| 对照依据 | 上游公告与发行版勘误 | 两者都要看 |
清点时要分辨发行版的补丁版本:例如 RHEL 的 openssl 包版本与上游版本号并不对应,版本号偏低时可能已经包含修复。
自编译组件的版本最难追踪:编译时就把版本与来源记录下来并纳入发布流程,而不是等出事之后再回忆。
清点结果要标明部署位置与业务归属,否则收到漏洞通告之后无法快速判断哪些资产受影响。