Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-41651 — Escalation locale dei privilegi tramite condizione di gara TOCTOU in PackageKit. | Kitploit
Strumenti/GitHubGitHub/gbuyssens/cve-2026-41651
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitCTFPenetration Testing
GitHubgbuyssens/cve-2026-41651

CVE-2026-41651

Escalation locale dei privilegi tramite condizione di gara TOCTOU in PackageKit.

Vedi Repository
18 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-41651

root@kitploit:~
CVSS 3.x : 7.8 HIGH
CWE      : CWE-367 (Time-of-Check Time-of-Use)
Fix      : PackageKit 1.3.5+
Affects  : PackageKit 1.0.2 – 1.3.4

Escalata locale dei privilegi tramite condizione di gara TOCTOU nel gestore delle transazioni D-Bus di PackageKit.
Qualsiasi utente locale senza privilegi può installare pacchetti arbitrari come root — nessuna autenticazione oltre ad avere una sessione locale.

Solo test di laboratorio / autorizzati (HTB, CTF, engagement con scope scritto).


Utilizzo

root@kitploit:~
python3 exploit.py

Tutto qui. Rilascia /tmp/.suid_bash, poi esegue exec in una shell root.

Percorso SUID personalizzato o timeout:

root@kitploit:~
SUID_BIN=/dev/shm/.sh TIMEOUT=90 python3 exploit.py

Requisiti

root@kitploit:~
apt install python3-gi dpkg-dev

L'exploit costruisce due pacchetti .deb a runtime — nessun compilatore necessario.


Causa principale

Tre bug in src/pk-transaction.c si concatenano:

Bug 1 — Sovrascrittura incondizionata del flag

InstallFiles() sovrascrive cached_transaction_flags e cached_full_paths senza controllo di stato. Una seconda chiamata D-Bus sulla stessa transazione li sostituisce alla cieca — anche mentre la transazione è già in esecuzione.

Bug 2 — Guardia silenziosa della macchina a stati

pk_transaction_set_state() rifiuta transizioni all'indietro illegali (RUNNING→READY, ecc.) senza ripristinare i flag sovrascritti del Bug 1. I flag corrotti persistono.

Bug 3 — Lettura tardiva del flag

pk_transaction_run() legge cached_transaction_flags al momento della spedizione (idle di GLib), non al momento dell'autorizzazione. Il backend vede i flag dell'attaccante.

Bonus — SIMULATE aggira polkit

Impostare PK_TRANSACTION_FLAG_SIMULATE (0x4) salta completamente il controllo di autorizzazione di polkit. La chiamata 1 viene autorizzata senza interazione da parte dell'utente.


Catena di attacco

root@kitploit:~
Attacker                         packagekitd
   │                                  │
   │  CreateTransaction()             │  state = NEW
   │─────────────────────────────────►│
   │                                  │
   │  InstallFiles(SIMULATE, dummy)   │  polkit skipped (SIMULATE)
   │─────────────────────────────────►│  state = READY, idle queued
   │                                  │
   │  InstallFiles(NONE, payload)     │  flags+paths overwritten
   │─────────────────────────────────►│  set_state(WAITING_FOR_AUTH) rejected
   │                                  │  state stays READY (BUG 2)
   │                                  │
   │                      [idle fires]│
   │                                  │  pk_transaction_run() reads NONE (BUG 3)
   │                                  │  → dpkg installs payload as root
   │                                  │  → postinst: chmod +s /tmp/.suid_bash
   │                                  │
   │  execv("/tmp/.suid_bash -p")     │
   │─────────────────────────────────►│  euid=0(root)

Entrambe le chiamate arrivano prima che scatti l'idle di GLib — nessuna gara da vincere, è deterministico.


Sistemi interessati

Ubuntu Desktop 18.04–26.04, Debian Trixie, Fedora 43, RockyLinux 10.1 e qualsiasi distribuzione che include PackageKit 1.0.2–1.3.4 con il demone attivo.


Rimedi

  1. Aggiorna a PackageKit 1.3.5+
  2. Disattiva il servizio se l'aggiornamento non è possibile: systemctl mask packagekit
  3. La correzione aggiunge una guardia di stato: transaction->state != PK_TRANSACTION_STATE_NEW → rifiuta

Riferimenti

  • NVD — CVE-2026-41651
  • GitHub Advisory — GHSA-f55j-vvr9-69xv
  • Commit di correzione
Scarica lo strumento