CVE-2022-49761
Published: 27 March 2025
Summary
CVE-2022-49761 is a high-severity Use After Free (CWE-416) vulnerability in Linux Linux Kernel. Its CVSS base score is 7.8 (High).
Operationally, exploitation aligns with the MITRE ATT&CK technique Exploitation for Privilege Escalation (T1068); ranked at the 6.1th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog.
The strongest mitigations our analysis identified are NIST 800-53 SI-11 (Error Handling) and SI-2 (Flaw Remediation).
Deeper analysis
CVE-2022-49761 is a Use-After-Free vulnerability (CWE-416) in the Linux kernel's BTRFS filesystem, specifically within the run_one_delayed_ref() function responsible for handling delayed references. The issue stems from inadequate error reporting, where failures were previously logged only via btrfs_debug(), which is typically disabled for end users, providing insufficient debugging information. This affects BTRFS operations involving delayed references during transaction commits, with a CVSS v3.1 base score of 7.8 (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H).
A local attacker with low privileges (PR:L) can exploit this vulnerability by triggering a failure in run_one_delayed_ref(), such as through crafted BTRFS operations that cause delayed reference processing to fail. Successful exploitation could allow the attacker to achieve high impacts on confidentiality, integrity, and availability, potentially leading to kernel memory corruption, privilege escalation, or system denial of service, as the error propagates up the call chain from btrfs_run_delayed_refs_for_head() and aborts the transaction.
Mitigation involves applying the relevant stable kernel patches, available via the following commit references: https://git.kernel.org/stable/c/18bd1c9c02e64a3567f90c83c2c8b855531c8098, https://git.kernel.org/stable/c/39f501d68ec1ed5cd5c66ac6ec2a7131c517bb92, https://git.kernel.org/stable/c/853ffa1511b058c79a4c9bb1407b3b20ce311792, and https://git.kernel.org/stable/c/fdb4a70bb768d2a87890409597529ad81cb3de8a. These patches enhance error reporting by replacing btrfs_debug() with btrfs_err(), adding details like logical bytenr, num_bytes, type, action, and ref_mod, and relocating error handling to prevent use-after-free on the node structure, which is freed by callers. The error triggers at most once per transaction abort.
EU & UK References
- 🇪🇺 ENISA EUVD: EUVD-2022-55162
Vulnerability details
In the Linux kernel, the following vulnerability has been resolved: btrfs: always report error in run_one_delayed_ref() Currently we have a btrfs_debug() for run_one_delayed_ref() failure, but if end users hit such problem, there will be no chance that btrfs_debug() is enabled.…
more
This can lead to very little useful info for debugging. This patch will: - Add extra info for error reporting Including: * logical bytenr * num_bytes * type * action * ref_mod - Replace the btrfs_debug() with btrfs_err() - Move the error reporting into run_one_delayed_ref() This is to avoid use-after-free, the @node can be freed in the caller. This error should only be triggered at most once. As if run_one_delayed_ref() failed, we trigger the error message, then causing the call chain to error out: btrfs_run_delayed_refs() `- btrfs_run_delayed_refs() `- btrfs_run_delayed_refs_for_head() `- run_one_delayed_ref() And we will abort the current transaction in btrfs_run_delayed_refs(). If we have to run delayed refs for the abort transaction, run_one_delayed_ref() will just cleanup the refs and do nothing, thus no new error messages would be output.
- CWE(s)
Related Threats
MITRE ATT&CK Enterprise TechniquesAI
Why these techniques?
Local use-after-free in Linux kernel BTRFS enables low-privileged attacker to trigger kernel memory corruption for privilege escalation.
CVEs Like This One
Affected Assets
Mitigating Controls
Mitigating Controls (NIST 800-53 r5) AI
SI-2 requires timely remediation of flaws, directly mitigating CVE-2022-49761 by applying Linux kernel patches that fix the BTRFS use-after-free vulnerability.
SI-11 mandates secure error handling, addressing the CVE's root cause of inadequate error reporting in run_one_delayed_ref() that led to use-after-free during BTRFS delayed reference processing.
SI-16 provides memory protections that help safeguard against exploitation of the use-after-free vulnerability in the Linux kernel's BTRFS filesystem.