- Một TOCTOU race condition trong PackageKit daemon — chạy mặc định trên Ubuntu, Debian, Fedora và RHEL qua Cockpit — cho phép user local không đặc quyền cài đặt bất kỳ package nào với quyền root, không cần password.
- Ảnh hưởng 12 năm phiên bản.
- Patch đã có trong PackageKit 1.3.5.
TL;DR
Pack2TheRoot (CVE-2026-41651, CVSS 3.1: 8.8 HIGH) là một lỗ hổng leo thang đặc quyền local trong packagekitd — daemon quản lý gói cross-distro chạy mặc định trên Ubuntu, Debian, Fedora và các hệ thống dùng Cockpit trên RHEL. Bản chất là một TOCTOU race condition giữa pha Polkit authorization và pha execution: bất kỳ user local nào cũng có thể cài hoặc gỡ package tùy ý với quyền root, không cần password. Phát hiện bởi Deutsche Telekom Red Team, công bố ngày 22/04/2026. Fix ở PackageKit 1.3.5 — patch ngay.
Chuyện gì vừa xảy ra
Ngày 22/04/2026, Telekom Security công bố Pack2TheRoot cùng lúc với GitHub Security Advisory GHSA-f55j-vvr9-69xv và bản vá chính thức PackageKit 1.3.5. Lỗ hổng được phát hiện trong quá trình Telekom Red Team nghiên cứu các hướng LPE trên Linux hiện đại, có hỗ trợ của AI (Claude Opus của Anthropic) — khiến Pack2TheRoot trở thành một trong những CVE nghiêm trọng đầu tiên được tìm ra với sự tham gia trực tiếp của AI trong vòng nghiên cứu.
Động lực ban đầu rất đời thường: một researcher của Telekom quan sát thấy trên Fedora Workstation mặc định, lệnh pkcon install có thể cài package mà không hỏi mật khẩu. Kéo sợi chỉ đó ra, họ tìm thấy toàn bộ state machine của packagekitd có một khe hở nghiêm trọng.
Tại sao đáng lo
Ba lý do khiến Pack2TheRoot không phải "just another LPE":
- Phạm vi cực rộng. PackageKit 1.0.2 ra mắt cách đây hơn 12 năm — mọi phiên bản từ 1.0.2 đến 1.3.4 đều dính. Ubuntu Desktop 18.04 cho tới 26.04 LTS beta, Debian Trixie, Fedora 43, Rocky Linux 10.1 đều đã test confirm exploitable trong default install.
- Server enterprise cũng dính. PackageKit là optional dependency của Cockpit — nghĩa là mọi RHEL server có Cockpit, kể cả internet-facing, đều là target.
- Exploit chạy trong vài giây. PoC đã được Telekom verify chạy reliable. Không cần user interaction, không cần mật khẩu, không cần điều kiện môi trường đặc biệt — chỉ cần có local shell.
Bên trong lỗ hổng
Pack2TheRoot là một TOCTOU (Time-of-Check Time-of-Use) race condition trên biến transaction->cached_transaction_flags, kết hợp ba lỗi kiến trúc trong src/pk-transaction.c:
| # | Bug | Vị trí |
|---|---|---|
| 1 | Unconditional flag overwrite — InstallFiles() ghi flags của caller vào memory state mà không check transaction có đang RUNNING hay chưa | line 4036 |
| 2 | Silent state-transition rejection — pk_transaction_set_state() âm thầm bỏ qua backward transition (RUNNING → WAITING_FOR_AUTH) nhưng flags đã bị ghi đè rồi | lines 873–882 |
| 3 | Late flag read — scheduler idle callback đọc cached_transaction_flags tại dispatch time, không phải authorization time | lines 2273–2277 |
Chuỗi exploit gói gọn trong vài step D-Bus:
- Gọi
InstallFiles()lần 1 với flagONLY_TRUSTED=TRUE→ Polkit cho pass vì action "lành". - Ngay sau khi được authorized, gọi
InstallFiles()lần 2 trên cùng transaction object, lần nàyONLY_TRUSTED=FALSE. - Daemon ghi đè flags trong memory. State-machine guard câm lặng bỏ qua warning.
- Scheduler idle callback fire, đọc flags "mới" (malicious), pass xuống backend — backend execute RPM scriptlets do attacker cung cấp, với quyền root.
CVSS vector đầy đủ: AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H. Scope Changed (S:C) cộng với confidentiality/integrity/availability đều High → toàn hệ thống bị kiểm soát. Ánh xạ MITRE ATT&CK: T1068 — Exploitation for Privilege Escalation.
So với các LPE Linux đình đám trước
Baron Samedit (CVE-2021-3156) và PwnKit (CVE-2021-4034) là các CVE sudo/pkexec từng gây chấn động. Pack2TheRoot khác biệt ở vài điểm:
| CVE | Component | Loại lỗi | Yêu cầu |
|---|---|---|---|
| Baron Samedit (2021-3156) | sudo | Heap buffer overflow | Local user |
| PwnKit (2021-4034) | polkit pkexec | argv parsing / env var injection | Local user |
| Pack2TheRoot (2026-41651) | PackageKit | TOCTOU state-machine race | Local user |
Pack2TheRoot là một logic bug chứ không phải memory corruption — và có phạm vi cross-distro không thua PwnKit. Điểm khác biệt quan trọng nhất: đây là CVE đầu tiên của thể loại này được phát hiện với AI-assisted research.
Ai nên lo nhất
- Shared Linux workstations (phòng lab, startup, dev shared server): bất kỳ account nào có shell đều trở thành root tiềm năng.
- Enterprise servers chạy Cockpit (bao gồm RHEL, CentOS Stream, Rocky): Cockpit kéo theo PackageKit, ngay cả khi sysadmin không biết.
- CI/CD runners Linux: nếu pipeline chạy code không tin cậy trong Ubuntu/Debian default image, LPE này biến "sandboxed job" thành "full host compromise".
- Container hosts: PackageKit không chạy trong container bình thường nhưng có trên host — attacker breakout container xong gặp Pack2TheRoot sẽ leo thẳng lên root host.
Mitigations & cách kiểm tra
Cách kiểm tra hệ thống có dính hay không (nhớ: packagekitd kích hoạt theo D-Bus, ps không đủ):
# Debian/Ubuntu
dpkg -l | grep -i packagekit
# RPM-based (Fedora, RHEL, Rocky)
rpm -qa | grep -i packagekit
# Daemon status
systemctl status packagekit
pkmon
# Detect exploit attempts (log signature)
journalctl --no-pager -u packagekit | grep -i emitted_finishedBất kỳ version >= 1.0.2 và <= 1.3.4 đều vulnerable. Chuỗi PackageKit:ERROR:../src/pk-transaction.c:514:pk_transaction_finished_emit: assertion failed trong log là indicator mạnh của exploit đang diễn ra — SIEM nên monitor ngay.
Fix chính thức: upgrade PackageKit lên 1.3.5+ và restart packagekitd (hoặc reboot host). Distribution backports:
- Debian — security-tracker.debian.org
- Ubuntu — Launchpad CVE bug tracker
- Fedora 42–44 — PackageKit-1.3.4-3 qua Koji
Workaround tạm nếu chưa patch được: chỉnh Polkit rule yêu cầu root authentication cho mọi PackageKit action. Không giải quyết root cause nhưng chặn attacker initiate được D-Bus transaction ban đầu.
Điều gì sắp tới
Telekom tuyên bố sẽ công bố technical root-cause details đầy đủ sau một thời gian để các distro có time patch — nhưng advisory đã đủ chi tiết để reverse-engineer exploit từ diff của PackageKit 1.3.5, nên cửa sổ exploit "trong the wild" có thể tính bằng ngày chứ không phải tuần. PoC của Telekom sẽ không public ngắn hạn, nhưng lịch sử PwnKit cho thấy cộng đồng sẽ tự viết lại PoC rất nhanh.
Với admin Linux, priority là rõ: patch hôm nay, không phải tuần sau. Ưu tiên theo thứ tự: (1) máy multi-user có shell cho người ngoài, (2) server internet-facing chạy Cockpit, (3) CI runners, (4) desktop cá nhân.
Nguồn: Telekom Security advisory, PackageKit GHSA, CVEReports deep dive, CybersecurityNews.