Share
## https://sploitus.com/exploit?id=1580FEB9-7646-5B20-B433-09C2CC4D4CF6
# CVE-2026-41651 โ Pack2TheRoot Analysis
> **PackageKit Local Privilege Escalation (TOCTOU Race Condition)**
> CVSS v3.1: **8.8 (HIGH)** | CWE-367 | Published: 2026-04-22
---
## ๐ ๊ฐ์
๋ณธ ๋ ํฌ์งํ ๋ฆฌ๋ 2026๋
4์ ๊ณต๊ฐ๋ PackageKit์ ๋ก์ปฌ ๊ถํ ์์น ์ทจ์ฝ์ **CVE-2026-41651 (Pack2TheRoot)** ์ ๋ํ ๊ฐ์ธ ๋ถ์ ๋ณด๊ณ ์ ๋ฐ ์ฐ๊ตฌ ์๋ฃ๋ฅผ ์ ๋ฆฌํ ๊ฒ์
๋๋ค.
| ํญ๋ชฉ | ๋ด์ฉ |
|------|------|
| CVE ID | CVE-2026-41651 |
| ์ทจ์ฝ์ ์ด๋ฆ | Pack2TheRoot |
| ์ํฅ ์ํํธ์จ์ด | PackageKit 1.0.2 ~ 1.3.4 |
| ํจ์น ๋ฒ์ | PackageKit 1.3.5 |
| ๊ณต๊ฒฉ ์ ํ | ๋ก์ปฌ ๊ถํ ์์น (LPE) |
| ๋ฐ๊ฒฌ์ | Deutsche Telekom Red Team |
---
## ๐ ์ทจ์ฝ์ ์์ฝ
PackageKit์ `pk-transaction.c` ๋ด 3๊ฐ์ ๋ฒ๊ทธ๊ฐ ๋ณตํฉ์ ์ผ๋ก ์์ฉํ์ฌ, **๋ก์ปฌ ๋น๊ถํ ์ฌ์ฉ์๊ฐ root ๊ถํ์ ํ๋**ํ ์ ์๋ ์ทจ์ฝ์ ์
๋๋ค.
### ๋ฒ๊ทธ ์ฒด์ธ
```
Bug 1: InstallFiles() ํธ์ถ ์ cached_transaction_flags ๋ฌด์กฐ๊ฑด ๋ฎ์ด์ฐ๊ธฐ (Line 4036)
โ
Bug 2: ์ํ ์ ์ด ๊ฑฐ๋ถ ์ ์ค์ผ๋ ํ๋๊ทธ ๋กค๋ฐฑ ์์ด ๋ฉ๋ชจ๋ฆฌ ์์กด (Line 876~881)
โ
Bug 3: pk_transaction_run() ์คํ ์์ ์ ์ค์ผ๋ ํ๋๊ทธ ์ฝ๊ธฐ (Line 2273~2277)
โ
๊ฒฐ๊ณผ: polkit ์ธ์ฆ ์ฐํ โ root ๊ถํ์ผ๋ก ์์ ํจํค์ง ์ค์น โ SUID bash ์์ฑ
```
### ๊ณต๊ฒฉ ํ๋ฆ
1. `InstallFiles(SIMULATE=0x4, dummy)` ๋น๋๊ธฐ ์ ์ก โ polkit ์ธ์ฆ ์ฐํ
2. `InstallFiles(NONE=0x0, payload)` ์ฆ์ ์ ์ก โ ํ๋๊ทธ ์ค์ผ (TOCTOU)
3. polkit `NOT_AUTHORIZED` ์์ ์์ ์ ์ด๋ฏธ ํจํค์ง ์ค์น ์๋ฃ
4. `/tmp/.suid_bash` ์์ฑ โ `euid=0(root)` ํ๋
---
## ๐ฅ๏ธ ๋ถ์ ํ๊ฒฝ
| ํญ๋ชฉ | ๋ด์ฉ |
|------|------|
| PoC ์ฌํ | Docker (Ubuntu 24.04.4 LTS) |
| IoC ์์ง | VirtualBox (Ubuntu 22.04.5 LTS, PackageKit 1.2.5) |
| ์ฝ๋ ๋ถ์ | GitHub โ PackageKit commit `2149735` (์ทจ์ฝ) / `76cfb675` (ํจ์น) |
---
## ๐ ํ์ผ ๊ตฌ์ฑ
```
CVE-2026-41651-analysis/
โโโ README.md
โโโ CVE-2026-41651_๋ถ์๋ณด๊ณ ์.docx # ์์ธ ๋ถ์ ๋ณด๊ณ ์
```
---
## ๐ ์นจํด ์งํ (IoC)
๊ณต๊ฒฉ ์๋ ์ ์๋ ๋ก๊ทธ ํจํด์ด ์์คํ
์ ๊ธฐ๋ก๋ฉ๋๋ค.
```bash
# ํ์ง ๋ช
๋ น์ด
journalctl -u packagekit | grep -i "assertion\|emitted\|failed"
```
```
PackageKit[PID]: pk_backend_job_emit: assertion 'PK_IS_BACKEND_JOB(job)' failed
PackageKit[PID]: g_signal_emit_valist: assertion 'G_TYPE_CHECK_INSTANCE(instance)' failed
PackageKit[PID]: GLib-Object:CRITICAL: g_object_unref: assertion 'G_IS_OBJECT(object)' failed
PackageKit[PID]: backend job failed
PackageKit[PID]: emit transaction failed
PackageKit[PID]: daemon stop โ ํฌ๋์
PackageKit[PID]: daemon start โ ์๋ ์ฌ์์
```
```bash
# SUID ํ์ผ ํ์ง
find /tmp -perm -4000 -type f 2>/dev/null
# โ /tmp/.suid_bash ์กด์ฌ ์ ์ฆ๊ฐ ๋์ ํ์
```
---
## ๐ก๏ธ ๋์ ๋ฐฉ์
### ํจ์น ์ ์ฉ (๊ถ์ฅ)
```bash
# Ubuntu / Debian
sudo apt update && sudo apt upgrade packagekit
# RHEL / Fedora
sudo dnf update PackageKit
```
### ์ทจ์ฝ ์ฌ๋ถ ํ์ธ
```bash
# ๋ฒ์ ํ์ธ (1.3.4 ์ดํ๋ฉด ์ทจ์ฝ)
dpkg -l | grep -i packagekit # Debian/Ubuntu
rpm -qa | grep -i PackageKit # RHEL/Fedora
# ๋ฐ๋ชฌ ์ํ ํ์ธ
systemctl status packagekit
```
### ์์ ์ํ (ํจ์น ์ )
```bash
# PackageKit ๋นํ์ฑํ
sudo systemctl disable --now packagekit
```
> โ ๏ธ ๋นํ์ฑํ ์ GNOME Software ๋ฑ GUI ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ ์ฌ์ฉ ๋ถ๊ฐ
---
## ๐
ํ์๋ผ์ธ
| ๋ ์ง | ๋ด์ฉ |
|------|------|
| 2026-04-08 | Deutsche Telekom Red Team โ Red Hat/PackageKit ์ต์ด ๋ณด๊ณ |
| 2026-04-10 | PackageKit ๋ฉ์ธํ
์ด๋ ์ ์ ๋ฐ ์ฌํ ํ์ธ |
| 2026-04-13 | ๋น๊ณต๊ฐ ํจ์น ์ด์ ์์ฑ |
| 2026-04-15 | Canonical์ ์ทจ์ฝ์ ๊ณต์ |
| 2026-04-19 | ๋ฐฐํฌํ ๋ฒค๋ ๋น๊ณต๊ฐ ํต๋ณด |
| 2026-04-22 | PackageKit 1.3.5 ๋ฆด๋ฆฌ์ฆ, CVE ํ ๋น, ๊ณต๊ฐ ๊ณต์ |
---
## ๐ ์ฐธ๊ณ ์๋ฃ
- [CVE ๊ณต์ ํ์ด์ง](https://vulners.com/cve/CVE-2026-41651)
- [GitHub Security Advisory](https://github.com/PackageKit/PackageKit/security/advisories/GHSA-f55j-vvr9-69xv)
- [Deutsche Telekom ์๋ฌธ ์ด๋๋ฐ์ด์ ๋ฆฌ](https://github.security.telekom.com/2026/04/pack2theroot-linux-local-privilege-escalation.html)
- [NVD ์์ธ](https://nvd.nist.gov/vuln/detail/CVE-2026-41651)
- [ํจ์น ์ปค๋ฐ (76cfb675)](https://github.com/PackageKit/PackageKit/commit/76cfb675fb31acc3ad5595d4380bfff56d2a8697)
- [PoC ๋ ํฌ์งํ ๋ฆฌ (Vozec)](https://github.com/Vozec/CVE-2026-41651)
---
## โ ๏ธ ๋ฉด์ฑ
์กฐํญ
๋ณธ ๋ ํฌ์งํ ๋ฆฌ๋ **๋ณด์ ์ฐ๊ตฌ ๋ฐ ํ์ต ๋ชฉ์ **์ผ๋ก ์์ฑ๋์์ต๋๋ค.
์ทจ์ฝ์ ์
์ฉ ๋ฐ ๋ฌด๋จ ์์คํ
์ ๊ทผ์ ๋ฒ์ ์ฒ๋ฒ์ ๋ฐ์ ์ ์์ผ๋ฉฐ, ๋ชจ๋ ํ
์คํธ๋ ๋ณธ์ธ ์์ ์ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ์ํํ์์ต๋๋ค.