CVE-2024-43882 json
exec: Fix ToCToU between perm check and set-uid/gid usage
published 2024-08-21 2 y ago modified 2026-10-15 25 d ago also EUVD-2024-40704
- cvss
- 8.4
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 15%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
exec: Fix ToCToU between perm check and set-uid/gid usage
When opening a file for exec via do_filp_open(), permission checking is done against the file's metadata at that moment, and on success, a file pointer is passed back. Much later in the execve() code path, the file metadata (specifically mode, uid, and gid) is used to determine if/how to set the uid and gid. However, those values may have changed since the permissions check, meaning the execution may gain unintended privileges.
For example, if a file could change permissions from executable and not set-id:
---------x 1 root root 16048 Aug 7 13:16 target
to set-id and non-executable:
---S------ 1 root root 16048 Aug 7 13:16 target
it is possible to gain root privileges when execution should have been disallowed.
While this race condition is rare in real-world scenarios, it has been observed (and proven exploitable) when package managers are updating the setuid bits of installed programs. Such files start with being world-executable but then are adjusted to be group-exec with a set-uid bit. For example, "chmod o-x,u+s target" makes "target" executable only by uid "root" and gid "cdrom", while also becoming setuid-root:
-rwxr-xr-x 1 root cdrom 16048 Aug 7 13:16 target
becomes:
-rwsr-xr-- 1 root cdrom 16048 Aug 7 13:16 target
But racing the chmod means users without group "cdrom" membership can get the permission to execute "target" just before the chmod, and when the chmod finishes, the exec reaches brpm_fill_uid(), and performs the setuid to root, violating the expressed authorization of "only cdrom group members can setuid to root".
Re-check that we still have execute permissions in case the metadata has changed. It would be better to keep a copy from the perm-check time, but until we can do that refactoring, the least-bad option is to do a full inode_permission() call (under inode lock). It is understood that this is safe against dead-locks, but hardly optimal.
Patch / fix
- Linux Linux 4.19.320, 5.4.282, 5.10.224, 5.15.165, 6.1.106, 6.6.47, 6.10.6, 6.11
- Siemens RUGGEDCOM RST2428P V3.1
- Siemens SCALANCE XCM-/XRM-/XCH-/XRH-300 family V3.1
- Siemens SIMATIC S7-1500 TM MFP - GNU/Linux subsystem V1.1.1
- linux Debian 12 6.1.106-1
- linux Debian 14, Debian 13 6.10.6-1
debian advisories DEBIAN-CVE-2024-43882
- linux Ubuntu 20.04 LTS 5.4.0-200.220
- linux Ubuntu 22.04 LTS 5.15.0-125.135
- linux Ubuntu 24.04 LTS 6.8.0-49.49
- linux-aws Ubuntu 20.04 LTS 5.4.0-1135.145
- linux-aws Ubuntu 22.04 LTS 5.15.0-1072.78
- linux-aws Ubuntu 24.04 LTS 6.8.0-1019.21
- linux-gcp Ubuntu 20.04 LTS 5.4.0-1139.148
- linux-gcp Ubuntu 22.04 LTS 5.15.0-1071.79
ubuntu advisories UBUNTU-CVE-2024-43882
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel RHEL 9 5.14.0-570.12.1.el9_6
- rv RHEL 9 5.14.0-570.12.1.el9_6
- perf RHEL 9 5.14.0-570.12.1.el9_6
- rtla RHEL 9 5.14.0-570.12.1.el9_6
- libperf RHEL 9 5.14.0-570.12.1.el9_6
- kernel-rt RHEL 9 5.14.0-570.12.1.el9_6
- kernel-64k RHEL 9 5.14.0-570.12.1.el9_6
- kernel-core RHEL 9 5.14.0-570.12.1.el9_6
red hat advisories RHSA-2025:6966
- kernel-rt Linux Micro 6.0 6.4.0-10.1
- kernel-source-rt Linux Micro 6.0 6.4.0-10.1
- kernel-livepatch-MICRO-6-0-RT_Update_2 Linux Micro 6.0 1-1.1
- kernel-source Linux Micro 6.0 6.4.0-19.1
- kernel-default Linux Micro 6.0 6.4.0-19.1
- kernel-kvmsmall Linux Micro 6.0 6.4.0-19.1
- kernel-default-base Linux Micro 6.0 6.4.0-17.1.1.51
- kernel-livepatch-MICRO-6-0_Update_2 Linux Micro 6.0 1-1.1
suse advisories SUSE-SU-2025:01692-1SUSE-SU-2025:01683-1SUSE-SU-2025:01676-1SUSE-SU-2025:01675-1SUSE-SU-2025:01668-1SUSE-SU-2025:01655-1
- git.kernel.org/stable/c/d5c3c7e26275a2d83b894d30f7582a42853a958f commit
- git.kernel.org/stable/c/368f6985d46657b8b466a421dddcacd4051f7ada commit
- git.kernel.org/stable/c/15469d46ba34559bfe7e3de6659115778c624759 commit
- git.kernel.org/stable/c/9b424c5d4130d56312e2a3be17efb0928fec4d64 commit
- git.kernel.org/stable/c/f6cfc6bcfd5e1cf76115b6450516ea4c99897ae1 commit
- git.kernel.org/stable/c/d2a2a4714d80d09b0f8eb6438ab4224690b7121e commit
- git.kernel.org/stable/c/90dfbba89ad4f0d9c9744ecbb1adac4aa2ff4f3e commit
- git.kernel.org/stable/c/f50733b45d865f91db90919f8311e2127ce5a0cb commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2024-43882 updated cvss 7.0
kernel: exec: Fix ToCToU between perm check and set-uid/gid usage
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 moreaffected: workaround, no fix planned “Out of support scope”
-
Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more Red Hat Enterprise Linux 9 kernel-rt, kernel-rt-kvm, kernel-rt-core, kernel-rt-modules, kernel-rt-debug-kvm, kernel-rt-debug-core, +12 moreaffected: workaround, no fix planned “Will not fix”
-
Red Hat Enterprise Linux AppStream (v. 9) rv 5.14.0-570.12.1.el9_6, perf 5.14.0-570.12.1.el9_6, rtla 5.14.0-570.12.1.el9_6, python3-perf 5.14.0-570.12.1.el9_6, kernel-devel-matched 5.14.0-570.12.1.el9_6, kernel-64k-devel-matched 5.14.0-570.12.1.el9_6, +7 more Red Hat Enterprise Linux BaseOS (v. 9) kernel 5.14.0-570.12.1.el9_6, kernel-64k 5.14.0-570.12.1.el9_6, kernel-core 5.14.0-570.12.1.el9_6, kernel-tools 5.14.0-570.12.1.el9_6, kernel-modules 5.14.0-570.12.1.el9_6, kernel-64k-core 5.14.0-570.12.1.el9_6, +27 more Red Hat Enterprise Linux CodeReady Linux Builder (v. 9) libperf 5.14.0-570.12.1.el9_6, kernel-debuginfo-common-s390x 5.14.0-570.12.1.el9_6, kernel-debuginfo-common-x86_64 5.14.0-570.12.1.el9_6, kernel-debuginfo-common-aarch64 5.14.0-570.12.1.el9_6, kernel-debuginfo-common-ppc64le 5.14.0-570.12.1.el9_6 Red Hat Enterprise Linux Real Time (v. 9) kernel-rt 5.14.0-570.12.1.el9_6, kernel-rt-64k 5.14.0-570.12.1.el9_6, kernel-rt-core 5.14.0-570.12.1.el9_6, kernel-rt-modules 5.14.0-570.12.1.el9_6, kernel-rt-64k-core 5.14.0-570.12.1.el9_6, kernel-rt-debug-core 5.14.0-570.12.1.el9_6, +14 more Red Hat Enterprise Linux Real Time for NFV (v. 9) kernel-rt 5.14.0-570.12.1.el9_6, kernel-rt-kvm 5.14.0-570.12.1.el9_6, kernel-rt-core 5.14.0-570.12.1.el9_6, kernel-rt-modules 5.14.0-570.12.1.el9_6, kernel-rt-debug-kvm 5.14.0-570.12.1.el9_6, kernel-rt-debug-core 5.14.0-570.12.1.el9_6, +6 morefixed: vendor fix RHSA-2025:6966
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
cisa ICSA-24-102-01 updated cvss 7.0
Siemens SIMATIC S7-1500 TM MFP
-
Siemens SIMATIC S7-1500 TM MFP - GNU/Linux subsystemaffected: mitigation, no fix available
Facts from CISA's republication of the vendor's own advisory (CSAF); the linked advisory is the authoritative source. CISA notification · csaf
cisa ICSA-25-226-07 updated
Siemens Third-Party Components in SINEC OS
-
Siemens RUGGEDCOM RST2428P (6GK6242-6PA00) Siemens SCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 family Siemens SCALANCE XCM-/XRM-/XCH-/XRH-300 familynot affected
Facts from CISA's republication of the vendor's own advisory (CSAF); the linked advisory is the authoritative source. CISA notification · csaf
cisa ICSA-25-226-15 updated cvss 7.0
Siemens SINEC OS
-
Siemens RUGGEDCOM RST2428P (6GK6242-6PA00) < 3.1 Siemens SCALANCE XCM-/XRM-/XCH-/XRH-300 family < 3.1affected: fixed in V3.1 support.industry.siemens.com
-
Siemens SCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 familynot affected
Facts from CISA's republication of the vendor's own advisory (CSAF); the linked advisory is the authoritative source. CISA notification · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- total
- Assessed
- 22 mo ago
Exploit prediction
0.24% chance of exploitation in the next 30 days, higher than 15% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 7.8 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CISA ADP | 3.1 | 8.4 | CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| NVD | 3.1 | 7.0 | CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CNA | 3.1 | 8.4 | CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
Affected products
- Linux Linux
- Siemens RUGGEDCOM RST2428P
- Siemens SCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 family
- Siemens SCALANCE XCM-/XRM-/XCH-/XRH-300 family
- Siemens SIMATIC S7-1500 TM MFP - GNU/Linux subsystem
Classification
- Weakness
-
- CWE-367 Time-of-check Time-of-use (TOCTOU) Race Condition
- Technology feeds
References
-
git.kernel.org
/stable/c/d5c3c7e26275a2d83b894d30f7582a42853a958f
patch
-
git.kernel.org
/stable/c/368f6985d46657b8b466a421dddcacd4051f7ada
patch
-
git.kernel.org
/stable/c/15469d46ba34559bfe7e3de6659115778c624759
patch
-
git.kernel.org
/stable/c/9b424c5d4130d56312e2a3be17efb0928fec4d64
patch
-
git.kernel.org
/stable/c/f6cfc6bcfd5e1cf76115b6450516ea4c99897ae1
patch
-
git.kernel.org
/stable/c/d2a2a4714d80d09b0f8eb6438ab4224690b7121e
patch
-
git.kernel.org
/stable/c/90dfbba89ad4f0d9c9744ecbb1adac4aa2ff4f3e
patch
-
git.kernel.org
/stable/c/f50733b45d865f91db90919f8311e2127ce5a0cb
patch
- lists.debian.org /debian-lts-announce/2025/01/msg00001.html
- lists.debian.org /debian-lts-announce/2024/10/msg00003.html
- cert-portal.siemens.com /productcert/html/ssa-265688.html
- cert-portal.siemens.com /productcert/html/ssa-613116.html
- cert-portal.siemens.com /productcert/html/ssa-355557.html
Sources
- CVE List CVE-2024-43882
- NVD CVE-2024-43882
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.