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:

#BugVị trí
1Unconditional flag overwrite — InstallFiles() ghi flags của caller vào memory state mà không check transaction có đang RUNNING hay chưaline 4036
2Silent state-transition rejection — pk_transaction_set_state() âm thầm bỏ qua backward transition (RUNNING → WAITING_FOR_AUTH) nhưng flags đã bị ghi đè rồilines 873–882
3Late flag read — scheduler idle callback đọc cached_transaction_flags tại dispatch time, không phải authorization timelines 2273–2277

Chuỗi exploit gói gọn trong vài step D-Bus:

  1. Gọi InstallFiles() lần 1 với flag ONLY_TRUSTED=TRUE → Polkit cho pass vì action "lành".
  2. Ngay sau khi được authorized, gọi InstallFiles() lần 2 trên cùng transaction object, lần này ONLY_TRUSTED=FALSE.
  3. Daemon ghi đè flags trong memory. State-machine guard câm lặng bỏ qua warning.
  4. 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:

CVEComponentLoại lỗiYêu cầu
Baron Samedit (2021-3156)sudoHeap buffer overflowLocal user
PwnKit (2021-4034)polkit pkexecargv parsing / env var injectionLocal user
Pack2TheRoot (2026-41651)PackageKitTOCTOU state-machine raceLocal 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_finished

Bất kỳ version >= 1.0.2<= 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:

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.