Skip to content

Track upstream CVE-2026-31431 'Copy Fail' fixes for RHEL 8 / kernel-rt / RHCOS #19

@rdwj

Description

@rdwj

Context

Red Hat Security Bulletin RHSB-2026-02 / CVE-2026-31431 (CVSS 7.8 Important, CWE-1288) is a Linux kernel algif_aead in-place operation flaw allowing local privilege escalation via an unprivileged AF_ALG socket + splice() chain ("Copy Fail"). In containerized environments the shared host page cache enables pod-to-node escape.

Workload-side defense-in-depth and host-side documentation landed in:

  • c085dc0 — seccomp: block splice and socket() (which denies AF_ALG) at both subprocess BPF and container SeccompProfile layers
  • 6c8a60achart/README.md host requirements + Red Hat product status table
  • 1151cf4chart/policies/copy-fail-mitigation-policy.yaml from Red Hat solution 7142032

What this issue tracks

Items we deliberately deferred because they depend on Red Hat shipping errata:

Red Hat product status as of 2026-05-04

Product Component State Errata
RHEL 9 kernel Fixed RHSA-2026:13565
RHEL 9 kernel-rt Affected none
RHEL 8 kernel Affected none
RHEL 8 kernel-rt Affected none
RHEL 10 kernel Affected none
OpenShift Container Platform 4 rhcos Affected none

Follow-ups once errata ship

  • RHEL 8 kernel errata published → update chart/README.md table.
  • RHEL 9 kernel-rt errata published → update table.
  • RHEL 10 kernel errata published → update table.
  • RHCOS errata published → update table; reassess whether the boot-arg mitigation in chart/policies/copy-fail-mitigation-policy.yaml is still recommended for fleets that have rolled the new RHCOS, or whether the file should be retained only as historical reference.
  • Once all RHCOS streams we support are patched, consider whether the splice block in the workload-level SeccompProfile is still load-bearing or can be loosened. The subprocess BPF block stays regardless.

Optional, separate follow-up

  • Preflight initContainer that reads /proc/cmdline and refuses to start when the host kernel is unpatched and initcall_blacklist=algif_aead_init is absent. Deferred because it can race node config drift; tracked here so the conversation is not lost.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions