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:
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.pk_transaction_set_state() silently discards backward state transitions (e.g. RUNNING → WAITING_FOR_AUTH) but the flag overwrite at step 1 already happened. The transaction continues running with corrupted flags.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.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Packagekit | Packagekit_project | 1.0.2 (including) | 1.3.5 (excluding) |
| Red Hat Enterprise Linux 10 | RedHat | PackageKit-0:1.2.8-8.el10_2 | * |
| Red Hat Enterprise Linux 10.0 Extended Update Support | RedHat | PackageKit-0:1.2.8-8.el10_0.1 | * |
| Red Hat Enterprise Linux 7 Extended Lifecycle Support | RedHat | PackageKit-0:1.1.10-2.el7_9.1 | * |
| Red Hat Enterprise Linux 8 | RedHat | PackageKit-0:1.1.12-8.el8_10 | * |
| Red Hat Enterprise Linux 8.4 Advanced Mission Critical Update Support | RedHat | PackageKit-0:1.1.12-6.el8_4.1 | * |
| Red Hat Enterprise Linux 8.4 Extended Update Support Long-Life Add-On | RedHat | PackageKit-0:1.1.12-6.el8_4.1 | * |
| Red Hat Enterprise Linux 8.6 Advanced Mission Critical Update Support | RedHat | PackageKit-0:1.1.12-6.el8_6.1 | * |
| Red Hat Enterprise Linux 8.6 Telecommunications Update Service | RedHat | PackageKit-0:1.1.12-6.el8_6.1 | * |
| Red Hat Enterprise Linux 8.6 Update Services for SAP Solutions | RedHat | PackageKit-0:1.1.12-6.el8_6.1 | * |
| Red Hat Enterprise Linux 8.8 Telecommunications Update Service | RedHat | PackageKit-0:1.1.12-6.el8_8.1 | * |
| Red Hat Enterprise Linux 8.8 Update Services for SAP Solutions | RedHat | PackageKit-0:1.1.12-6.el8_8.1 | * |
| Red Hat Enterprise Linux 9 | RedHat | PackageKit-0:1.2.6-2.el9_7 | * |
| Red Hat Enterprise Linux 9 | RedHat | PackageKit-0:1.2.6-2.el9_8 | * |
| Red Hat Enterprise Linux 9.0 Update Services for SAP Solutions | RedHat | PackageKit-0:1.2.4-2.el9_0.1 | * |
| Red Hat Enterprise Linux 9.2 Update Services for SAP Solutions | RedHat | PackageKit-0:1.2.4-2.el9_2.1 | * |
| Red Hat Enterprise Linux 9.4 Extended Update Support | RedHat | PackageKit-0:1.2.6-1.el9_4.1 | * |
| Red Hat Enterprise Linux 9.6 Extended Update Support | RedHat | PackageKit-0:1.2.6-1.el9_6.1 | * |
| Packagekit | Ubuntu | esm-infra-legacy/xenial | * |
| Packagekit | Ubuntu | esm-infra/bionic | * |
| Packagekit | Ubuntu | esm-infra/focal | * |
| Packagekit | Ubuntu | esm-infra/xenial | * |
| Packagekit | Ubuntu | jammy | * |
| Packagekit | Ubuntu | noble | * |
| Packagekit | Ubuntu | questing | * |
| Packagekit | Ubuntu | resolute | * |
| Packagekit | Ubuntu | upstream | * |