linux系统中不存在独立的“安全补丁”包,所谓安全更新实为带cve/rhsa/usn元数据的普通软件包升级,需依赖dnf updateinfo或ubuntu-security-status等工具结合官方源元数据识别,而非简单grep包名。

查不到“安全补丁”是因为它根本不是独立包
Linux 系统里没有叫“安全补丁”的包类型——rpm -qa | grep security 或 apt list --installed | grep -i patch 这类命令基本无效。所谓补丁,只是普通软件包的一次版本升级,其“安全属性”完全依赖元数据(比如 CVE-2024-12345、RHSA-2024:6789、USN-6123-1)和仓库配置。没启用对应元数据插件、没配对官方安全源,dnf updateinfo 或 ubuntu-security-status 就只能返回空或“no advisories found”。
RHEL/CentOS/Alma/Rocky:用 dnf updateinfo 而不是 yum history
dnf history 只记录操作时间点和事务 ID,不带 CVE 或风险等级;真正能定位漏洞修复的是 dnf updateinfo。它依赖 updateinfo.xml 元数据,而 RHEL 8+ / AlmaLinux / Rocky 默认已内置支持,无需额外装插件。
-
dnf updateinfo list secnum:列出所有已安装且关联 CVE 的包(含 RHSA 编号) -
dnf updateinfo info RHSA-2024:1234:查某次安全公告详情,包括影响包、CVSS 分数、修复版本 -
dnf updateinfo list bugzillas:查已修复的 Bugzilla 编号,常对应具体漏洞描述
注意:dnf updateinfo 必须在执行过 dnf makecache 后才有效;若输出为空,先确认 baseurl 指向 updates.suse.com 或红帽官方源,而非镜像站阉割版。
Ubuntu/Debian:ubuntu-security-status 比 apt changelog 更可靠
apt changelog 需手动匹配 CVE 字符串,且内核包日志极长易漏;ubuntu-security-status 是 Ubuntu 官方工具,直接对接 USN 和 CVE 数据库,语义明确。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
ubuntu-security-status --unavailable:列出所有已安装但无对应 USN 的包(可能是旧版或非安全更新) -
ubuntu-security-status --esm-infra:检查 ESM(Extended Security Maintenance)支持状态,尤其对 16.04/18.04 关键 -
apt show linux-image-generic | grep -A5 CVE-:仅作交叉验证,不能替代ubuntu-security-status
警告:Ubuntu 20.04+ 默认启用 unattended-upgrades,但若 /etc/apt/apt.conf.d/20auto-upgrades 中未设 Unattended-Upgrade::Allowed-Origins 包含 security.ubuntu.com,实际不会拉取安全更新——ubuntu-security-status 会如实报 “no security updates available”,哪怕系统看起来“最新”。
别信 /var/log/yum.log 或 /var/log/apt/history.log
这些日志只记“谁在什么时候装了什么包”,不记“这个包修了哪个 CVE”。例如日志里出现 Updated: kernel-core-5.15.123-1.el9_4.x86_64,你无法判断它是否包含 CVE-2024-358XX 修复——必须回查该版本对应的 RHSA 或 USN 元数据。
-
grep "Install\|Update" /var/log/yum.log | tail -20只能帮你定位最近一次内核升级时间 -
zcat /var/log/apt/history.log.*.gz | grep "linux-image"同样只给出包名和时间,无漏洞上下文 - 真正要确认某个 CVE 是否已修复,得用
rpm -q --changelog kernel | grep -i cve-2024(RHEL)或apt changelog linux-image-$(uname -r) | grep -i usn(Ubuntu)
最易被忽略的一点:内核热补丁(如 kpatch、livepatch)不改变 uname -r 输出,也不出现在 rpm -qa 列表里,它们单独管理。查 kpatch list 或 canonical-livepatch status 才算完整覆盖。










