Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify PID of polkit-authorized target process
-
DeliveryTrigger or await process termination
-
ExploitRapidly spawn processes to acquire freed PID
-
ExecutionApplication submits polkit authorization request via vulnerable zbus_polkit Subject
-
PersistPolkit discards mistyped UID, resolves /proc entry to attacker's process
-
ImpactAttacker granted authorization intended for terminated process
Vulnerability Assessment
| Weakness |
CWE
|
| Exploitation Conditions | The attacker must hold a local user account capable of spawning processes on the affected Linux system (PR:L per CVSS 4.0). The target application must be built with zbus_polkit prior to 5.1.0 and must invoke Subject::new_for_owner() to construct polkit subjects - only Rust applications using this specific crate in this manner are in scope. The attacker must additionally be able to cause a polkit-authorized process to terminate (through natural exit, an induced error condition, or any signal the attacker can deliver) and then win the Linux kernel's PID reassignment race by rapidly forking processes. This timing dependency (AT:P in CVSS 4.0) is the primary limiting factor: the race window may vary with system load but does not require any non-default kernel configuration - standard Linux PID recycling behavior is sufficient. Exploitation is strictly local; no network-accessible path exists (AV:L). |
| Impact | The CVSS 4.0 vector (AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H) accurately represents the threat profile: local access and low privileges are required, with a specific timing condition (AT:P - winning a PID reuse race) being the primary barrier to exploitation. The race is probabilistic but well-understood from prior polkit TOCTOU disclosures, and the fix being a one-line cast underscores that the vulnerability is structurally simple even if exploitation timing is constrained. EPSS data is absent from the input and this CVE does not appear in CISA KEV, so widespread or automated exploitation is not confirmed - the SSVC exploitation status would be rated 'none' at time of analysis. The high VC/VI/VA impact ratings reflect that a successful race grants full authorization as the targeted process, potentially including root-equivalent actions depending on what that process was authorized to perform. The trivial fix and the fact that the attack requires only a local foothold and ordinary timing skill argue strongly for treating this as an urgent patch priority. |
| Exploit ScenarioDerived | A local unprivileged attacker monitors the PID of a polkit-authorized process and, after it exits, rapidly spawns processes to acquire the same PID from the kernel's recycling pool. Because zbus_polkit encodes the UID with the wrong D-Bus type, polkit discards it and resolves identity from /proc - seeing the attacker's process now occupying the formerly privileged PID slot and granting the authorization originally intended for the terminated process. No public exploit code has been identified at time of analysis, but the TOCTOU technique is well-documented from prior Linux polkit research. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 31, 2026
Privilege escalation in zbus_polkit before 5.1.0 stems from Subject::new_for_owner() encoding the UID as D-Bus type u (unsigned 32-bit) rather than the type i (signed 32-bit) mandated by org.freedesktop.PolicyKit1.Authority, silently nullifying any caller-supplied UID and causing polkit to fall back to a TOCTOU-vulnerable /proc PID lookup. Applications that pass SO_PEERCRED-derived UIDs specifically to defend against PID reuse receive no benefit, as the value is discarded before polkit processes the authorization subject. A local low-privileged attacker who causes an authorized process to exit and wins the PID reassignment race is granted that process's polkit authorization; no public exploit code has been identified at time of analysis.
RemediationAI
Upgrade zbus_polkit to version 5.1.0 or later, which corrects the UID type encoding from D-Bus type u to the required type i; the one-line fix is visible in GitHub PR #101 at https://github.com/z-galaxy/zbus_polkit/pull/101. Note that the fix version (5.1.0) is stated in the CVE description but the PR merge status and tagged release on crates.io were not independently confirmed from the provided references - verify the release before pinning the version. If an immediate upgrade is not possible, applications should avoid relying on the UID value in polkit subjects built with this crate and accept that polkit will resolve caller identity only from /proc; mitigate the resulting TOCTOU exposure by tightening process supervision to reduce the window for PID reuse. Distribution-specific patches or backports may be available through SUSE channels at https://bugzilla.suse.com/show_bug.cgi?id=1277659.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in cargo
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerability resides in the zbus_polkit Rust crate (CPE: cpe:2.3:a:z-galaxy:zbus_polkit), which wraps D-Bus communication with the Linux polkit authorization framework. CWE-686 (Wrong Argument Type for Function) is the precise root cause: Subject::new_for_owner() serializes the unix-process subject's uid field using D-Bus type u (uint32) rather than the mandated type i (int32) from the org.freedesktop.PolicyKit1.Authority interface specification. When polkit receives a subject with a mistyped UID field, it silently discards the value and falls back to resolving the process owner directly from /proc using the supplied PID - a resolution that is inherently asynchronous with the authorization decision, creating a TOCTOU window. The upstream fix confirmed by the GitHub PR diff is a single cast - (uid as i32) - correcting the encoding to match the D-Bus interface contract and restoring the integrity of caller-supplied UIDs.
Know when Zbus Polkit gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Local-only attack (AV:L), race condition raises complexity (AC:H), low-privileged local account required (PR:L), impact confined to the vulnerable process context with no scope change.
Primary rating from Vendor (suse).
CVSS VectorVendor: suse
DescriptionCVE.org
Subject::new_for_owner() in the zbus_polkit crate encodes the uid entry of a unix-process polkit subject as an unsigned 32-bit integer (D-Bus type u), whereas the org.freedesktop.PolicyKit1.Authority interface specifies a signed 32-bit integer (D-Bus type i). Because of this type mismatch, polkit silently discards the caller-supplied UID and instead determines the subject's owner itself by looking up the PID in /proc, a lookup that is inherently subject to a time-of-check/time-of-use race.
Consequently, an application that passes a UID obtained from a trustworthy source - for example SO_PEERCRED Unix socket peer credentials - in order to defend against PID reuse receives no protection, and the supplied UID has no effect on the authorization decision. A local unprivileged attacker who can cause an authorized process to terminate and then win the race to have their own process assigned the same PID can be authorized under the identity of the terminated process, bypassing the polkit authorization check and performing actions the attacker is not entitled to.
This issue affects zbus_polkit before 5.1.0.
Executive ViewAI
zbus_polkit versions before 5.1.0 contain a privilege escalation vulnerability enabling local users to bypass authorization controls through a process ID race condition. An attacker can inherit elevated permissions intended for authorized processes by exploiting timing gaps in how PolicyKit validates caller credentials. Organizations managing Linux systems with PolicyKit-protected administrative functions face material risk of unauthorized access to sensitive operations.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
EUVD-2026-68593
GHSA-j48v-cvqq-xcv6
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB