CVE Vulnerabilities

CVE-2026-41651

Time-of-check Time-of-use (TOCTOU) Race Condition

Published: Apr 22, 2026 | Modified: May 05, 2026
CVSS 3.x
N/A
Source:
NVD
CVSS 2.x
RedHat/V2
RedHat/V3
8.8 IMPORTANT
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Ubuntu
HIGH
root.io logo minimus.io logo echo.ai logo

PackageKit is a a D-Bus abstraction layer that allows the user to manage packages in a secure way using a cross-distro, cross-architecture API. PackageKit between and including versions 1.0.2 and 1.3.4 is vulnerable to a time-of-check time-of-use (TOCTOU) race condition on transaction flags that allows unprivileged users to install packages as root and thus leads to a local privilege escalation. This is patched in version 1.3.5.

A local unprivileged user can install arbitrary RPM packages as root, including executing RPM scriptlets, without authentication. The vulnerability is a TOCTOU race condition on transaction->cached_transaction_flags combined with a silent state-machine guard that discards illegal backward transitions while leaving corrupted flags in place. Three bugs exist in src/pk-transaction.c:

  1. Unconditional flag overwrite (line 4036): InstallFiles() writes caller-supplied flags to transaction->cached_transaction_flags without checking whether the transaction has already been authorized/started. A second call blindly overwrites the flags even while the transaction is RUNNING.
  2. Silent state-transition rejection (lines 873–882): pk_transaction_set_state() silently discards backward state transitions (e.g. RUNNINGWAITING_FOR_AUTH) but the flag overwrite at step 1 already happened. The transaction continues running with corrupted flags.
  3. Late flag read at execution time (lines 2273–2277): The schedulers idle callback reads cached_transaction_flags at dispatch time, not at authorization time. If flags were overwritten between authorization and execution, the backend sees the attackers flags.

Weakness

The product checks the state of a resource before using that resource, but the resource’s state can change between the check and the use in a way that invalidates the results of the check.

Affected Software

NameVendorStart VersionEnd Version
PackagekitPackagekit_project1.0.2 (including)1.3.5 (excluding)
Red Hat Enterprise Linux 10RedHatPackageKit-0:1.2.8-8.el10_2*
Red Hat Enterprise Linux 10.0 Extended Update SupportRedHatPackageKit-0:1.2.8-8.el10_0.1*
Red Hat Enterprise Linux 7 Extended Lifecycle SupportRedHatPackageKit-0:1.1.10-2.el7_9.1*
Red Hat Enterprise Linux 8RedHatPackageKit-0:1.1.12-8.el8_10*
Red Hat Enterprise Linux 8.4 Advanced Mission Critical Update SupportRedHatPackageKit-0:1.1.12-6.el8_4.1*
Red Hat Enterprise Linux 8.4 Extended Update Support Long-Life Add-OnRedHatPackageKit-0:1.1.12-6.el8_4.1*
Red Hat Enterprise Linux 8.6 Advanced Mission Critical Update SupportRedHatPackageKit-0:1.1.12-6.el8_6.1*
Red Hat Enterprise Linux 8.6 Telecommunications Update ServiceRedHatPackageKit-0:1.1.12-6.el8_6.1*
Red Hat Enterprise Linux 8.6 Update Services for SAP SolutionsRedHatPackageKit-0:1.1.12-6.el8_6.1*
Red Hat Enterprise Linux 8.8 Telecommunications Update ServiceRedHatPackageKit-0:1.1.12-6.el8_8.1*
Red Hat Enterprise Linux 8.8 Update Services for SAP SolutionsRedHatPackageKit-0:1.1.12-6.el8_8.1*
Red Hat Enterprise Linux 9RedHatPackageKit-0:1.2.6-2.el9_7*
Red Hat Enterprise Linux 9RedHatPackageKit-0:1.2.6-2.el9_8*
Red Hat Enterprise Linux 9.0 Update Services for SAP SolutionsRedHatPackageKit-0:1.2.4-2.el9_0.1*
Red Hat Enterprise Linux 9.2 Update Services for SAP SolutionsRedHatPackageKit-0:1.2.4-2.el9_2.1*
Red Hat Enterprise Linux 9.4 Extended Update SupportRedHatPackageKit-0:1.2.6-1.el9_4.1*
Red Hat Enterprise Linux 9.6 Extended Update SupportRedHatPackageKit-0:1.2.6-1.el9_6.1*
PackagekitUbuntuesm-infra-legacy/xenial*
PackagekitUbuntuesm-infra/bionic*
PackagekitUbuntuesm-infra/focal*
PackagekitUbuntuesm-infra/xenial*
PackagekitUbuntujammy*
PackagekitUbuntunoble*
PackagekitUbuntuquesting*
PackagekitUbunturesolute*
PackagekitUbuntuupstream*

Potential Mitigations

References