
Tiefgehende Analyse von CVE-2026-41651 (Pack2TheRoot), einer lokalen Rechteausweitung in PackageKit. Enthält Aufschlüsselung der Schwachstelle, Angriffskette, IoCs und Anleitungen zur Schadensbegrenzung.
PackageKit Lokale Rechteausweitung (TOCTOU-Race-Condition)
CVSS v3.1: 8.8 (HOCH) | CWE-367 | Veröffentlicht: 2026-04-22
Dieses Repository enthält einen persönlichen Analysebericht und Forschungsmaterial zu der im April 2026 veröffentlichten lokalen Rechteausweitungs-Schwachstelle CVE-2026-41651 (Pack2TheRoot) in PackageKit.
| Element | Inhalt |
|---|---|
| CVE-ID | CVE-2026-41651 |
| Schwachstellenname | Pack2TheRoot |
| Betroffene Software | PackageKit 1.0.2 ~ 1.3.4 |
| Patch-Version | PackageKit 1.3.5 |
| Angriffstyp | Lokale Rechteausweitung (LPE) |
| Entdecker | Deutsche Telekom Red Team |
Drei Fehler in pk-transaction.c von PackageKit wirken zusammen und ermöglichen es einem lokalen Benutzer ohne Privilegien, root-Rechte zu erlangen.
Bug 1: InstallFiles()-Aufruf überschreibt cached_transaction_flags bedingungslos (Zeile 4036)
↓
Bug 2: Bei Ablehnung des Zustandsübergangs bleiben verunreinigte Flags ohne Rollback im Speicher (Zeile 876~881)
↓
Bug 3: pk_transaction_run() liest zum Ausführungszeitpunkt die verunreinigten Flags (Zeile 2273~2277)
↓
Ergebnis: polkit-Authentifizierung umgangen → Installation beliebiger Pakete mit root-Rechten → SUID-bash erzeugt
InstallFiles(SIMULATE=0x4, dummy) asynchron senden → polkit-Authentifizierung umgangenInstallFiles(NONE=0x0, payload) sofort senden → Flag-Verunreinigung (TOCTOU)NOT_AUTHORIZED ist die Paketinstallation bereits abgeschlossen/tmp/.suid_bash erzeugen → euid=0(root) erlangen| Element | Inhalt |
|---|---|
| PoC-Reproduktion | Docker (Ubuntu 24.04.4 LTS) |
| IoC-Erfassung | VirtualBox (Ubuntu 22.04.5 LTS, PackageKit 1.2.5) |
| Code-Analyse | GitHub — PackageKit-Commit 2149735 (verwundbar) / 76cfb675 (Patch) |
CVE-2026-41651-analysis/
├── README.md
└── CVE-2026-41651_분석보고서.docx # Detaillierter Analysebericht
Bei einem Angriffsversuch werden die folgenden Logmuster im System aufgezeichnet.
# Erkennungsbefehle
journalctl -u packagekit | grep -i "assertion\|emitted\|failed"
PackageKit[PID]: pk_backend_job_emit: assertion 'PK_IS_BACKEND_JOB(job)' failed
PackageKit[PID]: g_signal_emit_valist: assertion 'G_TYPE_CHECK_INSTANCE(instance)' failed
PackageKit[PID]: GLib-Object:CRITICAL: g_object_unref: assertion 'G_IS_OBJECT(object)' failed
PackageKit[PID]: backend job failed
PackageKit[PID]: emit transaction failed
PackageKit[PID]: daemon stop ← Absturz
PackageKit[PID]: daemon start ← Automatischer Neustart
# SUID-Dateierkennung
find /tmp -perm -4000 -type f 2>/dev/null
# → Bei Vorhandensein von /tmp/.suid_bash ist sofortiges Handeln erforderlich
# Ubuntu / Debian
sudo apt update && sudo apt upgrade packagekit
# RHEL / Fedora
sudo dnf update PackageKit
# Versionsprüfung (1.3.4 oder älter ist verwundbar)
dpkg -l | grep -i packagekit # Debian/Ubuntu
rpm -qa | grep -i PackageKit # RHEL/Fedora
# Daemon-Status prüfen
systemctl status packagekit
# PackageKit deaktivieren
sudo systemctl disable --now packagekit
⚠️ Bei Deaktivierung sind GUI-Paketverwaltungstools wie GNOME Software nicht mehr nutzbar
Dieses Repository wurde für Sicherheitsforschung und Lernzwecke erstellt.
Die Ausnutzung von Schwachstellen und der unbefugte Zugriff auf Systeme können strafrechtliche Konsequenzen haben; alle Tests wurden in eigenen, isolierten Umgebungen durchgeführt.
| Datum | Inhalt |
|---|
| 2026-04-08 | Deutsche Telekom Red Team → Erste Meldung an Red Hat/PackageKit |
| 2026-04-10 | PackageKit-Maintainer nimmt Meldung an und bestätigt Reproduktion |
| 2026-04-13 | Entwurf des nicht-öffentlichen Patches |
| 2026-04-15 | Schwachstelle an Canonical weitergegeben |
| 2026-04-19 | Nicht-öffentliche Benachrichtigung der Distributionsanbieter |
| 2026-04-22 | PackageKit 1.3.5 veröffentlicht, CVE zugewiesen, öffentliche Offenlegung |