
Pardus Software Local Privilege Escalation PoC - уязвимые версии <= 1.0.4
Код доказательства концепции (PoC) и готовые эксплойты для двух уязвимостей локального повышения привилегий в пакете pardus-software (Pardus Software Center) версии 1.0.4, обе исправлены в версии 1.0.5.
| CVE | Класс | Описание | CVSS 3.1 (CERT-TR) |
|---|---|---|---|
| CVE-2026-14459 | CWE-88 — Внедрение аргументов | Участник группы pardus-software (без sudo, без пароля) внедряет опции APT (-o Dir::Bin::dpkg=…) в привилегированный помощник и выполняет произвольный код от имени root. | 8.8 HIGH |
| CVE-2026-14460 | CWE-862 — Отсутствие авторизации | Действие PolicyKit autoaptupdateaction имеет allow_any=yes, позволяя любому локальному пользователю запускать помощник обновления от root без аутентификации (локальный DoS). | 8.8 HIGH |
Затронуто: pardus-software 1.0.4 · Исправлено: pardus-software 1.0.5
Разработчик: Pardus / TÜBİTAK BİLGEM · Координированное раскрытие через разработчика и USOM (CERT-TR).
Этот код опубликован для оборонительных исследований, обучения и проверки исправленной, публично раскрытой уязвимости. Обе проблемы исправлены в pardus-software 1.0.5.
Запускайте его только на изолированных, одноразовых виртуальных машинах, которые вам принадлежат или на тестирование которых у вас есть явное разрешение. Не запускайте его на системах, которые вы не контролируете. Вы несете ответственность за соблюдение всех применимых законов. Автор не несет ответственности за неправильное использование.
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)
A single poc.sh covers both findings via subcommands:
Версия poc/ безвредна: она только записывает вывод id в /tmp/pardus_lpe_proof и помещает setuid-root /tmp/rootbash в качестве доказательства. Версии exploit/ — это вооруженные эквиваленты, "дайте мне оболочку root", для демонстрации на авторизованных целях.
poc.sh SHA256: 1d3f4c19affdb377ac5eee4c695619e9f6a4590350c3936678eb1db2cf601255
Безвредный PoC включает помощника для создания непривилегированной учетной записи victim в группе pardus-software (без sudo) на одноразовой виртуальной машине 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'
Ожидаемый результат: без запроса пароля; вывод показывает uid=0(root), /tmp/pardus_lpe_proof принадлежит root, и /tmp/rootbash как -rwsr-xr-x root root (setuid root). Для B APT также выводит собственное сообщение, что внедренный скрипт запустился вместо dpkg:
Warning: APT had planned for dpkg to do more than it reported back (0 vs 5).
Affected packages: hello:amd64
Запускайте их от имени целевого непривилегированного пользователя (для 14459 — члена группы 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
На исправленном хосте (>= 1.0.5) оба скрипта чисто завершаются ошибкой и сообщают об этом.
CVE-2026-14459. Метод install() в Actions.py разделяет аргумент packages по пробелам и добавляет токены прямо в вектор аргументов apt — без проверки имен, без разделителя опций --. Любой токен, похожий на опцию APT, обрабатывается, включая -o Dir::Bin::dpkg=<path>, который заменяет бэкенд менеджера пакетов на скрипт злоумышленника, который затем выполняется от root. Та же модель существовала в remove/upgrade/reinstall/downgrade.
CVE-2026-14460. Действие PolicyKit autoaptupdateaction было объявлено с allow_any=yes, авторизуя любого субъекта без аутентификации. Любой локальный пользователь мог вызывать AutoAptUpdate.py от root — поверхность локального DoS.
Полные технические описания (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))
Исправлено в pardus-software 1.0.5:
a6ff277 — проверка имени пакета (регулярное выражение parse_packages() + разделитель --) для действий apt (CVE-2026-14459).70210af — allow_any: yes → auth_admin для autoaptupdateaction (CVE-2026-14460).Если вы используете Pardus, обновитесь до pardus-software 1.0.5 или новее.
a6ff277 · 70210afтолько для авторизованного тестирования
Исследование и координированное раскрытие: Kerem Kaan Daşmaz.
| Подкоманда | Доказывает | Примечания |
|---|
poc.sh B | CVE-2026-14459 | Внедрение опции APT (-o Dir::Bin::dpkg) — основная находка |
poc.sh A | CVE-2026-14459 | Локальный неподписанный .deb через тот же доверенный путь (вторичная демонстрация) |
poc.sh autoupdate | CVE-2026-14460 | Неаутентифицированный apt update от root |