CVE-2025-21999: proc: fix UAF in proc_get_inode()

Published Apr 3, 2025
·
Updated

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

proc: fix UAF in procgetinode()

Fix race between rmmod and /proc/XXX's inode instantiation.

The bug is that pde->procops don't belong to /proc, it belongs to a module, therefore dereferencing it after /proc entry has been registered is a bug unless usepde/unusepde() pair has been used.

usepde/unusepde can be avoided (2 atomic ops!) because pde->procops never changes so information necessary for inode instantiation can be saved before procregister() in PDE itself and used later, avoiding pde->procops->... dereference.

rmmod lookup sysdeletemodule proclookupde pdeget(de); procgetinode(dir->isb, de); mod->exit() procremove removeprocsubtree procentryrundown(de); freemodule(mod);

if (SISREG(inode->imode)) if (de->procops->procreaditer) --> As module is already freed, will trigger UAF

BUG: unable to handle page fault for address: fffffbfff80a702b PGD 817fc4067 P4D 817fc4067 PUD 817fc0067 PMD 102ef4067 PTE 0 Oops: Oops: 0000 [#1] PREEMPT SMP KASAN PTI CPU: 26 UID: 0 PID: 2667 Comm: ls Tainted: G Hardware name: QEMU Standard PC (i440FX + PIIX, 1996) RIP: 0010:procgetinode+0x302/0x6e0 RSP: 0018:ffff88811c837998 EFLAGS: 00010a06 RAX: dffffc0000000000 RBX: ffffffffc0538140 RCX: 0000000000000007 RDX: 1ffffffff80a702b RSI: 0000000000000001 RDI: ffffffffc0538158 RBP: ffff8881299a6000 R08: 0000000067bbe1e5 R09: 1ffff11023906f20 R10: ffffffffb560ca07 R11: ffffffffb2b43a58 R12: ffff888105bb78f0 R13: ffff888100518048 R14: ffff8881299a6004 R15: 0000000000000001 FS: 00007f95b9686840(0000) GS:ffff8883af100000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: fffffbfff80a702b CR3: 0000000117dd2000 CR4: 00000000000006f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: <TASK> proclookupde+0x11f/0x2e0 lookupslow+0x188/0x350 walkcomponent+0x2ab/0x4f0 pathlookupat+0x120/0x660 filenamelookup+0x1ce/0x560 vfsstatx+0xac/0x150 dosysnewstat+0x96/0x110 dosyscall64+0x5f/0x170 entrySYSCALL64afterhwframe+0x76/0x7e

[adobriyan: don't do 2 atomic ops on the common path]

Other sources

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

proc: fix UAF in procgetinode()

Fix race between rmmod and /proc/XXX's inode instantiation.

The bug is that pde->procops don't belong to /proc, it belongs to a module, therefore dereferencing it after /proc entry has been registered is a bug unless usepde/unusepde() pair has been used.

usepde/unusepde can be avoided (2 atomic ops!) because pde->procops never changes so information necessary for inode instantiation can be saved before procregister() in PDE itself and used later, avoiding pde->procops->... dereference.

rmmod lookup sysdeletemodule proclookupde pdeget(de); procgetinode(dir->isb, de); mod->exit() procremove removeprocsubtree procentryrundown(de); freemodule(mod);

if (SISREG(inode->imode)) if (de->procops->procreaditer) --> As module is already freed, will trigger UAF

BUG: unable to handle page fault for address: fffffbfff80a702b PGD 817fc4067 P4D 817fc4067 PUD 817fc0067 PMD 102ef4067 PTE 0 Oops: Oops: 0000 [#1] PREEMPT SMP KASAN PTI CPU: 26 UID: 0 PID: 2667 Comm: ls Tainted: G Hardware name: QEMU Standard PC (i440FX + PIIX, 1996) RIP: 0010:procgetinode+0x302/0x6e0 RSP: 0018:ffff88811c837998 EFLAGS: 00010a06 RAX: dffffc0000000000 RBX: ffffffffc0538140 RCX: 0000000000000007 RDX: 1ffffffff80a702b RSI: 0000000000000001 RDI: ffffffffc0538158 RBP: ffff8881299a6000 R08: 0000000067bbe1e5 R09: 1ffff11023906f20 R10: ffffffffb560ca07 R11: ffffffffb2b43a58 R12: ffff888105bb78f0 R13: ffff888100518048 R14: ffff8881299a6004 R15: 0000000000000001 FS: 00007f95b9686840(0000) GS:ffff8883af100000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: fffffbfff80a702b CR3: 0000000117dd2000 CR4: 00000000000006f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: <TASK> proclookupde+0x11f/0x2e0 lookupslow+0x188/0x350 walkcomponent+0x2ab/0x4f0 pathlookupat+0x120/0x660 filenamelookup+0x1ce/0x560 vfsstatx+0xac/0x150 dosysnewstat+0x96/0x110 dosyscall64+0x5f/0x170 entrySYSCALL64afterhwframe+0x76/0x7e

[adobriyan@gmail.com: don't do 2 atomic ops on the common path]

— MITRE

Affected Software

15 affected componentsFixes available
Linux Linux kernel
Microsoft cbl2 kernel 5.15.182.1-1
Microsoft azl3 kernel 6.6.82.1-1<6.6.85.1-2
6.6.85.1-2
Microsoft cbl2 kernel 5.15.180.1-1<5.15.180.1-1
5.15.180.1-1
Microsoft cbl2 kernel 5.15.182.1-1<5.15.180.1-1
5.15.180.1-1
Microsoft azl3 kernel 6.6.85.1-2<6.6.85.1-2
6.6.85.1-2
Linux Linux kernel>=2.6.23<6.1.132
Linux Linux kernel>=6.2<6.6.85
Linux Linux kernel>=6.7<6.12.21
Linux Linux kernel>=6.13<6.13.9
Linux Linux kernel=6.14-rc1
Linux Linux kernel=6.14-rc2
Linux Linux kernel=6.14-rc3
Linux Linux kernel=6.14-rc4
debian/linux
6.1.176-16.1.190-16.12.107-16.12.115-27.2.12-17.2.15-1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 6.6.85.1-2
  2. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 5.15.180.1-1

Event History

Apr 3, 2025
CVE Published
via MITRE·07:19 AM
Data Sourced
via MITRE·07:19 AM
DescriptionSeverity
Data Sourced
via Red Hat·08:01 AM
DescriptionSeverityAffected Software
Data Sourced
via NVD·08:15 AM
RemedyDescriptionSeverityWeaknessAffected Software
May 5, 2025
Data Sourced
via Microsoft·07:00 AM
DescriptionSeverityWeaknessAffected Software

Parent advisories

This vulnerability appears in the following advisories.

Peer vulnerabilities

Found alongside the following vulnerabilities.

Frequently Asked Questions

1

What is the severity of CVE-2025-21999?

CVE-2025-21999 has a moderate severity rating due to the potential for privilege escalation via a use-after-free condition in the Linux kernel.

2

How do I fix CVE-2025-21999?

To fix CVE-2025-21999, update your Linux kernel to the latest stable version that includes the patch for this vulnerability.

3

What systems are affected by CVE-2025-21999?

CVE-2025-21999 affects various versions of the Linux kernel that utilize the /proc file system.

4

What are the risks associated with CVE-2025-21999?

The risks of CVE-2025-21999 include potential unauthorized access and execution of arbitrary code by attackers.

5

Is there a workaround for CVE-2025-21999 if a patch is not available?

There is no reliable workaround for CVE-2025-21999, so applying the patch is strongly recommended.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203