
CVE-2026-41651 को समर्पित रिपॉज़िटरी, जिसमें इस एकल सुरक्षा मुद्दे के लिए विशिष्ट जानकारी और विश्लेषण शामिल है।
🛡️ AI सुरक्षा टूल मॉड्यूल
CVE-2026-41651: PackageKit TOCTOU स्थानीय विशेषाधिकार वृद्धि (Pack2TheRoot)
AI सुरक्षा टूल पारिस्थितिकी तंत्र के लिए आधिकारिक सुरक्षा ऑडिट और शोषण मॉड्यूल
🌐 वेब डेमो • 📚 प्रोजेक्ट वेबसाइट • 💬 सामुदायिक चैट
वेबसाइट नेविगेशन: होम • अपडेट्स • डाउनलोड्स • मॉड्यूल्स
यह मॉड्यूल CVE-2026-41651 (Pack2TheRoot) के लिए नैदानिक उपकरण और गहन तकनीकी विश्लेषण प्रदान करता है, जो PackageKit के ट्रांज़ैक्शन हैंडलर (packagekitd) में एक गंभीर Time-of-Check to Time-of-Use (TOCTOU) रेस कंडीशन है।
यह भेद्यता किसी भी स्थानीय अपरिविलेज्ड उपयोगकर्ता को प्राधिकरण जाँचों को बायपास करने और बिना किसी प्रमाणीकरण की आवश्यकता के root के रूप में मनमाने पैकेज इंस्टॉल करने की अनुमति देती है।
| विनिर्देश | निर्धारित मान | टिप्पणियाँ |
|---|---|---|
| CVE पहचानकर्ता | CVE-2026-41651 |
PackageKit TOCTOU स्थानीय विशेषाधिकार उन्नयन |
| घटक | PackageKit डेमॉन (packagekitd) |
मुख्य ट्रांज़ैक्शन हैंडलर |
| प्रभावित संस्करण | 1.0.2 – 1.3.4 |
अनपैच्ड डेमॉन रिलीज़ |
| इसमें ठीक किया गया | 1.3.5 |
ट्रांज़ैक्शन हैंडलर में स्टेट गार्ड जोड़ा गया |
| प्रभाव और वेक्टर | स्थानीय विशेषाधिकार उन्नयन → root | किसी प्रमाणीकरण या उपयोगकर्ता इंटरैक्शन की आवश्यकता नहीं |
| परीक्षित प्लेटफ़ॉर्म | Ubuntu 24.04, Debian 12 | मानक सिस्टम कॉन्फ़िगरेशन |

src/pk-transaction.c में तीन अलग-अलग बग मिलकर प्राधिकरण और निष्पादन के बीच एक TOCTOU विंडो बनाते हैं:
InstallFiles() बिना किसी स्टेट जाँच के cached_transaction_flags और cached_full_paths को बिना शर्त ओवरराइट कर देता है।pk_transaction_set_state() पीछे की ओर होने वाले ट्रांज़िशन को चुपचाप छोड़ देता है, जबकि फ़्लैग ओवरराइट ही रहते हैं।pk_transaction_run() डिस्पैच के समय GLib idle से कैश्ड फ़्लैग पढ़ता है, प्राधिकरण के समय से नहीं।PK_TRANSACTION_FLAG_SIMULATE (बिट 2, मान 0x4) सेट करने पर polkit जाँच पूरी तरह छूट जाती है।Attacker packagekitd
│ │
│ CreateTransaction() │
│─────────────────────────────────►│ state = NEW
│◄─────────────────────────────────│
│ │
│ InstallFiles(SIMULATE, dummy) │
│─────────────────────────────────►│ SIMULATE → polkit skipped
│◄─────────────────────────────────│ state = READY
│ │ g_idle_add(run_idle_cb) ← queued
│ │
│ InstallFiles(NONE, payload) │ [BUG 1] flags + paths overwritten
│─────────────────────────────────►│ [BUG 2] set_state(WAITING_FOR_AUTH)
│◄─────────────────────────────────│ → silently rejected
│ │ state stays READY
│ │
│ │ [idle fires]
│ │ pk_transaction_run()
│ │ [BUG 3] reads NONE + payload
│ │ → dpkg installs payload as root
│ │ → postinst: chmod +s /bin/bash
│ │
│ execv("/tmp/.suid_bash -p") │
│─────────────────────────────────►│
│ euid=0(root) │
दोनों InstallFiles कॉल क्लाइंट के मुख्य लूप के इटरेट होने से पहले fire-and-forget async D-Bus कॉल के रूप में भेजे जाते हैं। Polkitd अंततः दूसरी कॉल के लिए NOT_AUTHORIZED लौटाता है, लेकिन तब तक APT इंस्टॉलेशन को डिस्पैच कर चुका होता है।