本 playbook 修复 OCI 上 Linux 实例中的 CVE-2026-31431(也称为 Copy Fail)。
CVE-2026-31431 是 Linux 内核中由 AF_ALG 用户空间加密 API 使用的 algif_aead 实现的一个本地权限提升问题。本 playbook 采用主要修复路径:安装更新后的厂商内核包并重启实例,使其运行已修复的内核。
参考:
第一个 play 在 OCI Cloud Shell 或另一台已配置 OCI CLI 的机器上本地运行。它通过读取每个实例、查找其主 VNIC,并根据 prefer_public_ip 选择私有或公共 IP 地址,将硬编码的 OCI 实例 OCID 解析为可访问的 Ansible 主机。
第二个 play 在 Ansible 配置的 forks 限制内并行修补已解析的 Linux 主机:
uname -r 捕获当前运行的内核。kernel* 和 kernel-uek* 执行 dnf 或 yum 更新。apt-get --only-upgrade。zypper patch --category security。重启后,playbook 使用目标发行版的包和仓库工具来验证修复:
rpm 映射正在运行的内核,使用 dnf check-update 或 yum check-update 检查待处理的内核更新,使用 updateinfo 检查 CVE 公告元数据,并搜索已安装的内核包变更日志。dpkg-query 映射正在运行的内核,通过 apt-get 模拟检查待处理的内核更新,并搜索已安装的内核包变更日志。rpm 映射正在运行的内核,使用 zypper list-updates 检查待处理的内核更新,使用 zypper list-patches --cve 检查 CVE 补丁元数据,并搜索已安装的内核包变更日志。严格的通过/失败检查是:主机在重启后运行的是由包管理的内核,并且配置的仓库中没有仍然待处理的内核包更新。当发行版发布 CVE 特定公告和变更日志元数据时,会收集相关输出。
运行结束时,localhost 摘要 play 报告:
默认输出是紧凑的逐主机摘要。若要同时打印完整的原始验证数据,请添加:
-e show_detailed_cve_evidence=true
ansible-playbook -i localhost, patch_cve_2026_31431.yml \
-e oci_region=us-ashburn-1 \
-e ansible_user=opc \
-e ansible_ssh_private_key_file=/path/to/private_key \
-e prefer_public_ip=false
当 Cloud Shell 或您的 Ansible 控制主机必须通过公共 IP 地址访问实例时,使用 prefer_public_ip=true。当控制主机具备私有网络可达性时,使用 prefer_public_ip=false。
该 playbook 会对动态发现的目标禁用严格 SSH 主机密钥检查,以便能针对新解析的实例 IP 以非交互方式运行。
成功运行应以 CVE-2026-31431 verification passed for all targets. 结束。总摘要按字段每行打印一条,分组在 Host: ... 下,包括之前的内核、重启后安装的内核、正在运行的内核包(如 kernel-uek-core-...)以及 CVE check: PASS。如果因内核更新仍可用而导致验证失败,请确认主机可以访问正确的厂商安全仓库,然后重新运行该 playbook。