# CVE-2026-90313: bpf, cgroup: Fix invalid storage access after __cgroup_bpf_attach failed

> A use-after-free vulnerability in the Linux kernel's cgroup BPF attachment logic allows local attackers with high privileges to execute arbitrary code or escalate privileges.

- **Severity:** Not scored
- **Exploited in the wild:** Not known
- **Login needed:** An administrator
- **Attackable:** Local or same network only
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 17 Sep 2026
- **Updated:** 19 Oct 2026
- **Also known as:** AZL-102483, BELL-CVE-2026-90313, DEBIAN-CVE-2026-90313, GHSA-2mrf-g72x-r6vx, UBUNTU-CVE-2026-90313

## What is CVE-2026-90313?

CVE-2026-90313 is an use after free vulnerability in Linux, published on 17 Sep 2026. It can only be exploited from the same machine or local network, with no action from the victim.

### Official description

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

bpf, cgroup: Fix invalid storage access after __cgroup_bpf_attach failed

A potential invalid storage access issue can occur after replacing a
cgroup bpf prog.

This occurs in the following scenario:
1. prog1 with storage is attached to a cgroup in multi-attach mode.
2. prog1 is replaced with prog2 using BPF_F_REPLACE in multi-attach
   mode, but fails midway (e.g. in bpf_trampoline_link_cgroup_shim or
   update_effective_progs).
3. A new prog3 is attached to the cgroup in multi-attach mode.

The reason is that __cgroup_bpf_attach overwrites pl->storage with the
new storage prior to attachment completion. When attachment fails
midway, the cleanup path calls bpf_cgroup_storages_free(new_storage) to
free the newly allocated storage, but fails to restore pl->storage back
to old_storage.

Consequently, the still-active prog1 holds invalid or dangling storage
pointers, leading to an invalid memory access when prog1 executes and
calls bpf_get_local_storage. Additionally, original pl->flags and
cgrp->bpf.flags[atype] are left unrestored.

Fix this by saving old_pl_flags, old_storage, and old_flags prior to the
update, and properly restoring all of them in the cleanup path on error.

## Which versions are affected by CVE-2026-90313?


## How do I fix CVE-2026-90313?

Apply the vendor's patch.

## Is CVE-2026-90313 being exploited?

There is no known exploitation of CVE-2026-90313 in the wild and no public exploit code.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-90313 and fix it if it is affected.

What it is: CVE-2026-90313 is an use after free vulnerability in Linux, published on 17 Sep 2026. It can only be exploited from the same machine or local network, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2026-90313 in the wild and no public exploit code.

Affected product: Linux. No package-level version data is available, so check the vendor advisory linked from the reference page.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-90313/ (Markdown: https://insights.sbomify.com/CVE-2026-90313/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-90313
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-90313
- OSV: https://osv.dev/vulnerability/CVE-2026-90313

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-90313/
Summaries are generated and may contain mistakes; the official description above is the record.
