
Pardus Software Local Privilege Escalation PoC - afetado nas versões <= 1.0.4
Código de prova de conceito e pronto para exploração para duas questões de escalada de privilégio local no pacote pardus-software (Pardus Software Center) versão 1.0.4, ambas corrigidas na 1.0.5.
| CVE | Classe | Resumo | CVSS 3.1 (CERT-TR) |
|---|---|---|---|
| CVE-2026-14459 | CWE-88 — Injeção de Argumentos | Um membro do grupo pardus-software (sem sudo, sem senha) injeta opções do APT (-o Dir::Bin::dpkg=…) no auxiliar privilegiado e executa código arbitrário como root. | 8.8 ALTO |
| CVE-2026-14460 | CWE-862 — Autorização Ausente | A ação PolicyKit autoaptupdateaction vem com allow_any=yes, permitindo que qualquer usuário local execute o auxiliar de atualização como root, não autenticado (DoS local). | 8.8 ALTO |
Afetado: pardus-software 1.0.4 · Corrigido: pardus-software 1.0.5
Fornecedor: Pardus / TÜBİTAK BİLGEM · Divulgação coordenada através do fornecedor e do USOM (CERT-TR).
Este código é publicado para pesquisa defensiva, educação e verificação de uma vulnerabilidade corrigida e divulgada publicamente. Ambas as questões estão corrigidas no pardus-software 1.0.5.
Execute-o apenas em máquinas virtuais isoladas e descartáveis que você possua ou tenha autorização explícita para testar. Não execute contra sistemas que você não controla. Você é responsável por cumprir todas as leis aplicáveis. O autor não aceita responsabilidade por uso indevido.
pardus-software-lpe/
├── README.md
├── poc/
│ └── poc.sh # PoC benigno original (apenas prova; ambos CVEs)
└── exploit/
├── exploit-14459.sh # CVE-2026-14459 → shell root interativo
└── exploit-14460.sh # CVE-2026-14460 → apt update como root não autenticado (DoS)
Um único poc.sh cobre ambas as descobertas através de subcomandos:
A versão poc/ é benigna: ela apenas registra a saída de id em /tmp/pardus_lpe_proof e cria um /tmp/rootbash setuid-root como prova. As versões exploit/ são as equivalentes armadas, 'me dê um shell root', para demonstração em alvos autorizados.
poc.sh SHA256: 1d3f4c19affdb377ac5eee4c695619e9f6a4590350c3936678eb1db2cf601255
O PoC benigno inclui um auxiliar para criar uma conta victim não privilegiada no grupo pardus-software (sem sudo), em uma VM descartável do 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 — injeção de opção (principal)
sudo su - victim -c 'cd ~ && ./poc.sh B'
# se 'hello' já está instalado/indisponível: ./poc.sh B sl
# CVE-2026-14459 — .deb local não assinado (secundário)
sudo su - victim -c 'cd ~ && ./poc.sh A'
# CVE-2026-14460 — apt update como root não autenticado (qualquer usuário, sem grupo especial)
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: nenhum prompt de senha; a saída mostra uid=0(root), /tmp/pardus_lpe_proof pertencente a root, e /tmp/rootbash como -rwsr-xr-x root root (setuid root). Para B, o APT também imprime seu próprio indício de que o script injetado foi executado no lugar do dpkg:
Warning: APT had planned for dpkg to do more than it reported back (0 vs 5).
Affected packages: hello:amd64
Execute estes como o usuário não privilegiado alvo (para 14459, um membro de pardus-software).
# CVE-2026-14459 → shell root interativo
./exploit/exploit-14459.sh
# executar um único comando como root em vez de um shell:
./exploit/exploit-14459.sh -c "id > /root/pwned"
# se 'hello' está instalado/indisponível, escolha um pacote não instalado:
PKG=sl ./exploit/exploit-14459.sh
# CVE-2026-14460 → apt update como root não autenticado (DoS local)
./exploit/exploit-14460.sh
# demonstrar a superfície DoS com invocações repetidas:
./exploit/exploit-14460.sh -n 20
Em um host corrigido (>= 1.0.5) ambos os scripts falham limpidamente e dizem isso.
CVE-2026-14459. O método install() do Actions.py divide o argumento packages por espaços e anexa os tokens diretamente ao vetor de argumentos do apt — sem validação de nome, sem terminador de opção --. Qualquer token que se pareça com uma opção do APT é respeitado, incluindo -o Dir::Bin::dpkg=<path>, que troca o backend do gerenciador de pacotes por um script atacante que então é executado como root. O mesmo padrão existia em remove/upgrade/reinstall/downgrade.
CVE-2026-14460. A ação PolicyKit autoaptupdateaction foi declarada com allow_any=yes, autorizando qualquer sujeito sem autenticação. Qualquer usuário local poderia invocar AutoAptUpdate.py como root — uma superfície de DoS local.
Artigos 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)
Corrigido no pardus-software 1.0.5:
a6ff277 — validação de nome de pacote (regex parse_packages() + separador --) para as ações apt (CVE-2026-14459).70210af — allow_any: yes → auth_admin para autoaptupdateaction (CVE-2026-14460).Se você usa Pardus, atualize para pardus-software 1.0.5 ou posterior.
a6ff277 · 70210afPesquisa e divulgação coordenada por Kerem Kaan Daşmaz.
| Subcomando | Prova | Notas |
|---|
poc.sh B | CVE-2026-14459 | Injeção de opção APT (-o Dir::Bin::dpkg) — a descoberta principal |
poc.sh A | CVE-2026-14459 | .deb local não assinado através do mesmo caminho de confiança (demonstração secundária) |
poc.sh autoupdate | CVE-2026-14460 | apt update como root não autenticado |