CVE-2026-46223

NVD 0.05.5
EchelonGraph scoreLOW confidence

Score 5.5 from GitHub Security Advisory published 2026-05-28.

Triggered by: GitHub Security Advisory CVSS
Sources: epss, ghsa
Trending — 3 sources updated this week
0.0
EchelonGraph verdictMonitorLow exploitation likelihood right now — keep watching.
  • No confirmed exploitation signals yet
CISA-KEV: Not listedEPSS: 0%CVSS: Exploit: NoneExposed: 0

No vendor fix yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for a patch.

In the Linux kernel, the following vulnerability has been resolved:

cgroup: Defer css percpu_ref kill on rmdir until cgroup is depopulated

A chain of commits going back to v7.0 reworked rmdir to satisfy the controller invariant that a subsystem's ->css_offline() must not run while tasks are still doing kernel-side work in the cgroup.

[1] d245698d727a ("cgroup: Defer task cgroup unlink until after the task is done switching out") [2] a72f73c4dd9b ("cgroup: Don't expose dead tasks in cgroup") [3] 1b164b876c36 ("cgroup: Wait for dying tasks to leave on rmdir") [4] 4c56a8ac6869 ("cgroup: Fix cgroup_drain_dying() testing the wrong condition") [5] 13e786b64bd3 ("cgroup: Increment nr_dying_subsys_* from rmdir context")

[1] moved task cset unlink from do_exit() to finish_task_switch() so a task's cset link drops only after the task has fully stopped scheduling. That made tasks past exit_signals() linger on cset->tasks until their final context switch, which led to a series of problems as what userspace expected to see after rmdir diverged from what the kernel needs to wait for. [2]-[5] tried to bridge that divergence: [2] filtered the exiting tasks from cgroup.procs; [3] had rmdir(2) sleep in TASK_UNINTERRUPTIBLE for them; [4] fixed the wait's condition; [5] made nr_dying_subsys_* visible synchronously.

The cgroup_drain_dying() wait in [3] turned out to be a dead end. When the rmdir caller is also the reaper of a zombie that pins a pidns teardown (e.g. host PID 1 systemd reaping orphan pids that were re-parented to it during the same teardown), rmdir blocks in TASK_UNINTERRUPTIBLE waiting for those pids to free, the pids can't free because PID 1 is the reaper and it's stuck in rmdir, and the system A-A deadlocks. No internal lock ordering breaks this; the wait itself is the bug.

The css killing side that drove the original reorder, however, can be made cleanly asynchronous: ->css_offline() is already async, run from css_killed_work_fn() driven by percpu_ref_kill_and_confirm(). The fix is to make that chain start only after all tasks have left the cgroup. rmdir's user-visible side then returns as soon as cgroup.procs and friends are empty, while ->css_offline() still runs only after the cgroup is fully drained.

Verified by the original reproducer (pidns teardown + zombie reaper, runs under vng) which hangs vanilla and succeeds here, and by per-commit deterministic repros for [2], [3], [4], [5] with a boot parameter that widens the post-exit_signals() window so each state is reliably reachable. Some stress tests on top of that.

cgroup_apply_control_disable() has the same shape of pre-existing race: when a controller is disabled via subtree_control, kill_css() ran synchronously while tasks past exit_signals() could still be linked to the cgroup's csets, and ->css_offline() could fire before they drained. This patch preserves the existing synchronous behavior at that call site (kill_css_sync() + kill_css_finish() back-to-back) and a follow-up patch will defer kill_css_finish() there using a per-css trigger.

This seems like the right approach and I don't see problems with it. The changes are somewhat invasive but not excessively so, so backporting to -stable should be okay. If something does turn out to be wrong, the fallback is to revert the entire chain ([1]-[5]) and rework in the development branch instead.

v2: Pin cgrp across the deferred destroy work with explicit cgroup_get()/cgroup_put() around queue_work() and the work_fn. v1 wasn't actually broken (ordered cgroup_offline_wq + queue_work order in cgroup_task_dead() saved it) but the explicit ref removes the dependency on those non-obvious invariants. Also note the pre-existing cgroup_apply_control_disable() race in the description; a follow-up will defer kill_css_finish() there.

CVSS v3
EG Score
5.5(low)
EPSS
0.3%
KEV
Not listed

Published

May 28, 2026

Last Modified

June 14, 2026

Vendor Advisories for CVE-2026-46223(1)

These vendors published their own advisory mentioning this CVE — often with vendor-specific remediation steps + affected product lists not in NVD.

Weakness Classification(1)

MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.

Data Freshness Timeline

(refreshed 10× in last 7d / 45× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

  1. 2026-07-16 10:18 UTCEG score recompute
  2. 2026-07-16 10:18 UTCGHSA enrichment
  3. 2026-07-15 16:57 UTCEPSS rescore
  4. 2026-07-13 22:30 UTCEPSS rescore
  5. 2026-07-13 06:13 UTCEPSS rescore
  6. 2026-07-12 05:46 UTCEPSS rescore
  7. 2026-07-11 20:46 UTCEG score recompute
  8. 2026-07-11 20:46 UTCGHSA enrichment
  9. 2026-07-11 08:27 UTCEPSS rescore
  10. 2026-07-09 19:10 UTCEPSS rescore
  11. 2026-07-08 18:17 UTCEG score recompute
  12. 2026-07-08 18:17 UTCGHSA enrichment
  13. 2026-07-08 15:16 UTCEPSS rescore
  14. 2026-07-07 13:46 UTCEPSS rescore
  15. 2026-07-04 06:31 UTCEPSS rescore
  16. 2026-07-02 14:12 UTCEG score recompute
  17. 2026-07-02 14:12 UTCGHSA enrichment
  18. 2026-07-01 15:07 UTCEPSS rescore
  19. 2026-07-01 03:05 UTCEG score recompute
  20. 2026-07-01 03:05 UTCGHSA enrichment
  21. 2026-06-30 23:22 UTCEPSS rescore
  22. 2026-06-29 13:43 UTCEG score recompute
  23. 2026-06-29 13:43 UTCGHSA enrichment
  24. 2026-06-28 14:07 UTCEPSS rescore
  25. 2026-06-28 12:29 UTCEG score recompute
Show 68 more
  1. 2026-06-28 12:29 UTCGHSA enrichment
  2. 2026-06-28 04:56 UTCEPSS rescore
  3. 2026-06-28 04:56 UTCEPSS rescore
  4. 2026-06-27 14:40 UTCEG score recompute
  5. 2026-06-27 14:40 UTCGHSA enrichment
  6. 2026-06-26 16:50 UTCEG score recompute
  7. 2026-06-26 16:50 UTCGHSA enrichment
  8. 2026-06-25 15:00 UTCEG score recompute
  9. 2026-06-25 15:00 UTCGHSA enrichment
  10. 2026-06-24 16:53 UTCEG score recompute
  11. 2026-06-24 16:53 UTCGHSA enrichment
  12. 2026-06-23 21:33 UTCEPSS rescore
  13. 2026-06-23 21:33 UTCEPSS rescore
  14. 2026-06-19 19:26 UTCEPSS rescore
  15. 2026-06-19 19:26 UTCEPSS rescore
  16. 2026-06-18 17:52 UTCEPSS rescore
  17. 2026-06-18 17:52 UTCEPSS rescore
  18. 2026-06-17 17:53 UTCEPSS rescore
  19. 2026-06-17 13:28 UTCEG score recompute
  20. 2026-06-17 13:28 UTCGHSA enrichment
  21. 2026-06-16 15:41 UTCEG score recompute
  22. 2026-06-16 15:41 UTCGHSA enrichment
  23. 2026-06-15 17:49 UTCEPSS rescore
  24. 2026-06-15 16:54 UTCEG score recompute
  25. 2026-06-15 16:54 UTCGHSA enrichment
  26. 2026-06-14 23:33 UTCMITRE cvelistV5
  27. 2026-06-14 19:05 UTCEG score recompute
  28. 2026-06-14 19:05 UTCGHSA enrichment
  29. 2026-06-13 23:00 UTCEPSS rescore
  30. 2026-06-13 21:19 UTCEG score recompute
  31. 2026-06-13 21:19 UTCGHSA enrichment
  32. 2026-06-12 23:33 UTCEG score recompute 5.50
  33. 2026-06-12 23:33 UTCGHSA enrichment
  34. 2026-06-12 23:12 UTCEPSS rescore
  35. 2026-06-12 23:12 UTCEPSS rescore
  36. 2026-06-11 19:56 UTCNVD updateCVSS v3 → 5.5 · severity → MEDIUM
  37. 2026-06-11 14:00 UTCEPSS rescore
  38. 2026-06-10 22:18 UTCEPSS rescore
  39. 2026-06-10 13:22 UTCEPSS rescore
  40. 2026-06-10 13:22 UTCEPSS rescore
  41. 2026-06-09 23:56 UTCGHSA enrichment
  42. 2026-06-08 14:17 UTCEPSS rescore
  43. 2026-06-08 14:17 UTCEPSS rescore
  44. 2026-06-07 15:25 UTCEPSS rescore
  45. 2026-06-07 15:25 UTCEPSS rescore
  46. 2026-06-07 00:21 UTCGHSA enrichment
  47. 2026-06-06 13:47 UTCEPSS rescore
  48. 2026-06-06 13:47 UTCEPSS rescore
  49. 2026-06-05 22:47 UTCEPSS rescore
  50. 2026-06-05 06:10 UTCEPSS rescore
  51. 2026-06-05 06:10 UTCEPSS rescore
  52. 2026-06-04 13:12 UTCEPSS rescore
  53. 2026-06-04 13:12 UTCEPSS rescore
  54. 2026-06-04 00:45 UTCGHSA enrichment
  55. 2026-06-02 20:13 UTCEPSS rescore
  56. 2026-06-01 13:52 UTCEPSS rescore
  57. 2026-06-01 13:52 UTCEPSS rescore
  58. 2026-06-01 01:09 UTCEG score recompute
  59. 2026-06-01 01:09 UTCGHSA enrichment
  60. 2026-05-31 22:30 UTCEPSS rescore
  61. 2026-05-31 22:30 UTCEPSS rescore
  62. 2026-05-31 00:16 UTCEPSS rescore
  63. 2026-05-31 00:16 UTCEPSS rescore
  64. 2026-05-29 13:44 UTCEPSS rescore
  65. 2026-05-29 13:44 UTCEPSS rescore
  66. 2026-05-28 13:44 UTCEPSS rescore
  67. 2026-05-28 13:44 UTCEPSS rescore
  68. 2026-05-28 10:09 UTCEG score recompute

Frequently asked(4)

What is CVE-2026-46223?
CVE-2026-46223 is a publicly disclosed vulnerability published on May 28, 2026. In the Linux kernel, the following vulnerability has been resolved: cgroup: Defer css percpu_ref kill on rmdir until cgroup is depopulated A chain of commits going back to v7.0 reworked rmdir to satisfy the controller invariant that a subsystem's ->css_offline() must not run while tasks are still…
When was CVE-2026-46223 disclosed?
CVE-2026-46223 was first published in the National Vulnerability Database on May 28, 2026, with the most recent update on June 14, 2026. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2026-46223 actively exploited?
CVE-2026-46223 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 0.3% percentile likelihood of exploitation in the next 30 days — higher percentiles indicate greater predicted risk.
How do I remediate CVE-2026-46223?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2026-46223, EchelonGraph cross-links them in the Vendor Advisories panel below — those typically contain the canonical remediation steps, fixed version numbers, and any vendor-specific mitigations.

Dependency Blast Radius

Explore the affected products and dependency analysis for CVE-2026-46223

Explore →

Is Your Infrastructure Affected by CVE-2026-46223?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.