
udisks2 में CVE-2026-7867 के लिए हथियारबंद स्थानीय विशेषाधिकार वृद्धि शोषण, PolicyKit को बायपास करने और रूट शेल प्राप्त करने के लिए as-user माउंट स्पूफिंग का उपयोग करता है।
as-user स्पूफिंग → प्राधिकरण बायपास → रूट-संदर्भ माउंट → LPECVE-2026-7867 udisks2 में एक स्थानीय विशेषाधिकार वृद्धि भेद्यता है जिसमें Filesystem.Mount D-Bus विधि, as-user विकल्प, fstab-प्रबंधित माउंट प्रवाह, और दोषपूर्ण प्राधिकरण हैंडलिंग शामिल है।
यह निजी भंडार तकनीकी अनुसंधान नोट्स और PoC स्क्रिप्ट्स रखता है जिनका उपयोग नियंत्रित प्रयोगशाला वातावरण में मुद्दे को मान्य करने के लिए किया गया था।
भेद्यता की खोज और रिपोर्ट निम्नलिखित द्वारा की गई:
| Azizcan Daştan | azqzazq1 |
| Özlem Ozan | oz7oz7 |
मुद्दे को निर्दिष्ट किया गया:
CVE-2026-7867
यह भेद्यता वास्तविक D-Bus कॉलर UID और as-user माउंट विकल्प द्वारा उत्पन्न गणित/प्रभावी UID के बीच एक दोषपूर्ण विश्वास संबंध के कारण होती है।
कमजोर प्रवाहों में, एक विशेषाधिकारहीन स्थानीय उपयोगकर्ता माउंट निष्पादन पथ को इस प्रकार प्रभावित कर सकता है कि फाइलसिस्टम माउंट एक विशेषाधिकृत/रूट संदर्भ में अपेक्षित PolicyKit प्राधिकरण व्यवहार के बिना किया जाता है।
मुख्य बग केवल "उपयोगकर्ता-नियंत्रित माउंट विकल्प" नहीं है।
वास्तविक समस्या यह है:
udisks2fstab माउंट प्राधिकरण और निष्पादन के दौरान मूल कॉलर पहचान को गणितas-userपहचान से लगातार अलग करने में विफल रहता है।
कमजोर तर्क udisks2 के अंदर fstab माउंट हैंडलिंग पथ से जुड़ा है, विशेष रूप से जब माउंट अनुरोध में शामिल होता है:
Filesystem.Mount
as-user
x-udisks-auth
user
users
प्रासंगिक सुरक्षा-संवेदनशील क्षेत्र हैं:
D-Bus कॉलर पहचान
↓
as-user विकल्प हैंडलिंग
↓
fstab प्राधिकरण तर्क
↓
PolicyKit निर्णय प्रवाह
↓
रूट-संदर्भ माउंट निष्पादन
┌─────────────────────────────┐
│ विशेषाधिकारहीन स्थानीय उपयोगकर्ता │
└──────────────┬──────────────┘
│
│ Filesystem.Mount
│ with as-user influence
▼
┌─────────────────────────────┐
│ udisks2 / udisksd │
│ विशेषाधिकृत सिस्टम डेमॉन │
└──────────────┬──────────────┘
│
│ fstab तर्क मूल्यांकन करता है
│ user/auth विकल्प
▼
┌─────────────────────────────┐
│ प्राधिकरण अंतराल │
│ mount_other_user │
│ छोड़े गए पथ में लागू नहीं │
└──────────────┬──────────────┘
│
│ रूट-संदर्भ शाखा तक पहुँच
▼
┌─────────────────────────────┐
│ फाइलसिस्टम माउंट किया गया │
│ अपेक्षित प्राधिकरण प्रवाह │
│ के बिना │
└──────────────┬──────────────┘
│
│ प्रभाव माउंट फ्लैग्स पर निर्भर करता है
▼
┌─────────────────────────────┐
│ स्थानीय विशेषाधिकार वृद्धि │
│ नियंत्रित प्रयोगशाला मान्यता │
└─────────────────────────────┘
कमजोर व्यवहार पहचान भ्रम बग के कारण आता है।
सिस्टम में कई पहचान अवधारणाएँ हैं:
वास्तविक D-Bus कॉलर UID
गणित as-user UID
प्रभावी माउंट UID
udisksd डेमॉन विशेषाधिकार संदर्भ
कमजोर प्रवाह इन पहचानों को लगातार लागू करने में विफल रहता है।
विशेष रूप से:
mount_other_user सत्य हो सकता है क्योंकि as-user का उपयोग किया जाता हैx-udisks-auth, user, या users जैसे fstab विकल्प प्राधिकरण पथ को प्रभावित कर सकते हैंmount_other_user जांच विश्वसनीय रूप से लागू नहीं होतीपरिणाम एक स्थानीय विशेषाधिकार सीमा बायपास है।
x-udisks-auth समस्याx-udisks-auth विकल्प को प्रशासनिक PolicyKit प्राधिकरण प्रवाह को बाध्य करना चाहिए।
अपेक्षित व्यवहार:
माउंट अनुरोध
↓
कॉलर के रूप में माउंट का प्रयास
↓
अनुमति/प्राधिकरण विफलता
↓
PolicyKit filesystem-fstab जांच
↓
एडमिन अनुमोदन
↓
अधिकृत विशेषाधिकृत कार्रवाई के रूप में माउंट
कमजोर व्यवहार:
as-user प्रभाव के साथ माउंट अनुरोध
↓
गणित पहचान निष्पादन को प्रभावित करती है
↓
माउंट बहुत जल्दी सफल होता है
↓
PolicyKit प्राधिकरण पथ अपेक्षित रूप से नहीं पहुँचा जाता
↓
विशेषाधिकृत माउंट स्थिति प्राप्त होती है
यह कमजोर पथ में x-udisks-auth के आसपास के सुरक्षा मॉडल को अविश्वसनीय बनाता है।
अपेक्षित मॉडल:
विशेषाधिकारहीन उपयोगकर्ता
↓
D-Bus माउंट अनुरोध
↓
PolicyKit / fstab प्राधिकरण
↓
प्रतिबंधित माउंट व्यवहार
टूटा हुआ मॉडल:
विशेषाधिकारहीन उपयोगकर्ता
↓
as-user स्पूफिंग के साथ D-Bus माउंट अनुरोध
↓
प्राधिकरण तर्क बेमेल
↓
रूट-संदर्भ माउंट निष्पादन
यह बग विशेष रूप से गंभीर है क्योंकि प्रभावित सेवा उच्च विशेषाधिकारों के साथ चलती है।
सफल शोषण एक विशेषाधिकारहीन स्थानीय उपयोगकर्ता को udisks2 के माध्यम से एक फाइलसिस्टम को रूट-संदर्भ निष्पादन पथ में अपेक्षित प्राधिकरण संकेत के बिना माउंट करने दे सकता है।
फाइलसिस्टम और माउंट फ्लैग्स के आधार पर, प्रभाव में शामिल हो सकते हैं:
यह एक स्थानीय भेद्यता है।
प्रासंगिक शर्तें:
.
├── README.md
├── disk2root.sh ← main exploit (self-contained LPE)
└── poc/
├── setup_lpe_env.sh ← lab environment setup
├── f2_mount_as_user_bypass.sh
├── f2_check_nosuid.sh
├── f2_suid_test.sh
├── f2_final.sh
└── cleanup_lpe_env.sh
disk2root.shस्व-निहित हथियारबंद exploit. यह अपना स्वयं का SUID रूट पेलोड बनाता है, एक तैयार डिस्क इमेज बनाता है, इसे as-user=root polkit बायपास के माध्यम से माउंट करता है, और रूट शेल में प्रवेश करता है।
विकल्प 1 — रूट के रूप में चलाएं (हर जगह काम करता है, SSH सहित):
./disk2root.sh
स्क्रिप्ट स्वचालित रूप से:
debugfs के माध्यम से uid=0 mode=4755 के साथ बाइनरी इंजेक्ट करती हैx-udisks-auth के साथ fstab प्रविष्टि जोड़ती हैsu के माध्यम से विशेषाधिकारहीन उपयोगकर्ता पर जाती हैas-user=root (polkit बायपास) के साथ Filesystem.Mount को कॉल करती हैयह निर्दिष्ट करने के लिए कि किस उपयोगकर्ता से वृद्धि करनी है:
./disk2root.sh testuser
यदि कोई उपयोगकर्ता निर्दिष्ट नहीं है, तो स्क्रिप्ट सिस्टम पर पहले नियमित उपयोगकर्ता को चुनती है या एक अस्थायी उपयोगकर्ता बनाती है।
विकल्प 2 — विशेषाधिकारहीन उपयोगकर्ता के रूप में चलाएं (डेस्कटॉप / सक्रिय सत्र):
./disk2root.sh
सक्रिय polkit सत्र (डेस्कटॉप लॉगिन, GNOME/KDE) वाले सिस्टम पर, स्क्रिप्ट पूरी तरह से स्व-निहित है — यह udisksctl या D-Bus LoopSetup के माध्यम से अपना स्वयं का लूप डिवाइस बनाती है, as-user=root के माध्यम से माउंट करती है, और बिना किसी पूर्व सेटअप के वृद्धि करती है।
विकल्प 3 — विशेषाधिकारहीन उपयोगकर्ता के रूप में चलाएं (SSH, सेटअप के बाद):
यदि वातावरण पहले से तैयार किया गया था (जैसे, रूट के रूप में poc/setup_lpe_env.sh चलाकर, या पिछले रूट के रूप में ./disk2root.sh रन द्वारा), कोई भी विशेषाधिकारहीन उपयोगकर्ता पुनः शोषण कर सकता है:
./disk2root.sh
स्क्रिप्ट स्वचालित रूप से कमजोर fstab प्रविष्टियों का पता लगाती है और उनका उपयोग करती है।
./disk2root.sh --cleanup
सभी कलाकृतियाँ हटाता है: fstab प्रविष्टि, लूप डिवाइस, माउंट बिंदु, अस्थायी उपयोगकर्ता।
जब विशेषाधिकारहीन के रूप में चलाया जाता है, तो स्क्रिप्ट क्रम में कई पथ आज़माती है:
[A] स्व-निहित
पेलोड बनाएं → ext4 इमेज बनाएं → debugfs SUID बाइनरी इंजेक्ट करें
→ loop-setup (python3 GIO / udisksctl) → mount as-user=root
✓ डेस्कटॉप सत्रों पर काम करता है
[B] Fstab फॉलबैक
/etc/fstab में x-udisks-auth / user / users प्रविष्टियाँ स्कैन करें
→ mount as-user=root → माउंटेड fs पर SUID बाइनरी ढूँढें
✓ SSH पर काम करता है जब वातावरण तैयार किया गया हो
╔═════════════════════════════════════════════════════╗
║ CVE-2026-7867 — disk2root ║
║ udisks2 as-user polkit bypass → LPE root shell ║
╚═════════════════════════════════════════════════════════╝
[*] uid=1002 (testuser) — exploiting...
fstab: /dev/loop5 → /mnt/disk2root (x-udisks-auth)
mounted: /mnt/disk2root
nosuid: not set
suid: pwn (4755 root:root)
╔═════════════════════════════════════════════════════╗
║ dropping into root shell — type 'exit' to return ║
╚═════════════════════════════════════════════════════════╝
[+] root shell — uid=0 euid=0
root@target:/tmp#
poc/)अनुसंधान के दौरान उपयोग किए गए व्यक्तिगत मान्यता स्क्रिप्ट। ये वे बिल्डिंग ब्लॉक हैं जो disk2root.sh की ओर ले गए।
1. रूट के रूप में poc/setup_lpe_env.sh चलाएं
2. su - testuser
3. poc/f2_mount_as_user_bypass.sh चलाएं
4. पूर्ण मान्यता के लिए poc/f2_final.sh चलाएं
5. रूट के रूप में poc/cleanup_lpe_env.sh चलाएं
या बस disk2root.sh का उपयोग करें जो उपरोक्त सभी को जोड़ता है।
इस अनुसंधान द्वारा प्रदर्शित प्राथमिकता है:
विशेषाधिकृत माउंट ऑर्केस्ट्रेशन के अंदर as-user विकल्प स्पूफिंग
महत्वपूर्ण संक्रमण है:
विशेषाधिकारहीन D-Bus कॉलर
↓
स्पूफ की गई/गणित माउंट पहचान
↓
प्राधिकरण पथ भ्रम
↓
रूट-संदर्भ माउंट निष्पादन
यही कारण है कि यह मुद्दा स्थानीय विशेषाधिकार वृद्धि भेद्यता के रूप में योग्य है।
udisks2 को आमतौर पर एक विशेषाधिकृत भंडारण प्रबंधन डेमॉन के रूप में भरोसा किया जाता है।
इस परत में एक बग उच्च-प्रभाव वाला है क्योंकि यह इनके बीच बैठता है:
डेस्कटॉप/सत्र उपयोगकर्ता
D-Bus विधि कॉल
PolicyKit प्राधिकरण
फाइलसिस्टम माउंट संचालन
रूट डेमॉन विशेषाधिकार
यहां पहचान हैंडलिंग में एक दोष सीधे स्थानीय विशेषाधिकार सीमाओं को प्रभावित कर सकता है।
रक्षक as-user से जुड़ी संदिग्ध udisks2 माउंट गतिविधि की निगरानी कर सकते हैं।
उपयोगी टेलीमेट्री स्रोत:
udisksd लॉग
D-Bus विधि कॉल
PolicyKit लॉग
माउंट तालिका परिवर्तन
/proc/mounts
/etc/fstab
journalctl
उपयोगी कमांड:
findmnt
mount
cat /proc/mounts
journalctl -u udisks2
journalctl | grep -i udisks
journalctl | grep -i polkit
संदिग्ध पैटर्न:
गैर-रूट उपयोगकर्ता द्वारा Filesystem.Mount ट्रिगर करना
as-user=root का उपयोग
PolicyKit संकेत के बिना अप्रत्याशित माउंट
nosuid/noexec/nodev से रहित माउंट
हाल ही में माउंट किए गए फाइलसिस्टम से setuid निष्पादन
अप्रत्याशित लूप डिवाइस माउंट
udisks2 अपडेट करेंउपलब्ध होने पर विक्रेता द्वारा प्रदान किए गए फिक्स को लागू करें।
नियोजित निर्धारित रिलीज़:
udisks 2.11.2
इनका उपयोग करने वाली प्रविष्टियों का ऑडिट करें:
x-udisks-auth
user
users
विशेष रूप से उन फाइलसिस्टम की समीक्षा करें जिनमें निष्पादन योग्य या setuid सामग्री हो सकती है।
चूंकि यह एक स्थानीय भेद्यता है, अविश्वसनीय स्थानीय पहुंच को कम करने से जोखिम कम होता है।
इसके माध्यम से अप्रत्याशित माउंट संचालन की निगरानी करें:
udisksd
विशेष रूप से जब गैर-रूट उपयोगकर्ताओं द्वारा ट्रिगर किया गया हो।
जहां लागू हो, इनका उपयोग करें:
nosuid
noexec
nodev
ये फ्लैग्स माउंट-पश्चात प्रभाव को कम कर सकते हैं।
udisks माउंट क्रियाओं से संबंधित PolicyKit नियमों की समीक्षा करें।
सुनिश्चित करें कि विशेषाधिकारहीन उपयोगकर्ता स्पष्ट प्राधिकरण के बिना संवेदनशील माउंट पथों को ट्रिगर नहीं कर सकते।
एक मजबूत फिक्स को यह सुनिश्चित करना चाहिए कि:
as-user UID प्राधिकरण के लिए कॉलर पहचान को प्रतिस्थापित न करेmount_other_user हमेशा उचित PolicyKit जांचों को ट्रिगर करेx-udisks-auth लगातार प्रमाणीकरण लागू करेएम्बार्गो हटने के बाद, इस भंडार को इनके साथ सार्वजनिक अनुसंधान भंडार में परिवर्तित किया जा सकता है:
docs/
├── technical-analysis.md
├── root-cause.md
├── lab-setup.md
├── exploit-flow.md
├── detection.md
└── mitigation.md
अनुशंसित सार्वजनिक जोड़:
यह भंडार अधिकृत सुरक्षा अनुसंधान, विक्रेता समन्वय और रक्षात्मक मान्यता के लिए है।
PoC स्क्रिप्ट केवल पृथक परीक्षण वातावरण के लिए हैं।
उन सिस्टमों पर इन स्क्रिप्ट्स को न चलाएं जिनके आप मालिक नहीं हैं या जिनके परीक्षण की आपको स्पष्ट अनुमति नहीं है।
लेखक इस अनुसंधान के दुरुपयोग के लिए जिम्मेदार नहीं हैं।
CVE-2026-7867
udisks2 स्थानीय विशेषाधिकार वृद्धि अनुसंधान
| क्षेत्र | मान |
|---|
| CVE | CVE-2026-7867 |
| उत्पाद | udisks2 |
| घटक | Filesystem.Mount |
| आक्रमण प्रकार | स्थानीय विशेषाधिकार वृद्धि |
| प्राथमिकता | as-user स्पूफिंग |
| सुरक्षा सीमा | D-Bus कॉलर पहचान → विशेषाधिकृत माउंट निष्पादन |
| प्राधिकरण परत | PolicyKit / fstab माउंट प्राधिकरण |
| विक्रेता | Red Hat / udisks upstream |
| स्थिति | पैच प्रगति पर / समन्वित प्रकटीकरण |
| नियोजित सुधार रिलीज़ | udisks 2.11.2 |
| शर्त | आवश्यक |
|---|
| स्थानीय उपयोगकर्ता पहुंच | हाँ |
कमजोर udisks2 संस्करण | हाँ |
as-user कार्यक्षमता उपस्थित | हाँ |
| उपयुक्त fstab-प्रबंधित माउंट लक्ष्य | हाँ |
| कमजोर प्राधिकरण पथ | हाँ |
| दूरस्थ पहुंच | नहीं |
| उपकरण | उद्देश्य | आवश्यक |
|---|
busctl | D-Bus माउंट कॉल | हाँ |
gcc | SUID पेलोड संकलित करें | हाँ (bash कॉपी पर फॉलबैक) |
mke2fs | ext4 इमेज बनाएं | हाँ (स्व-निहित मोड) |
debugfs | uid=0 के साथ बाइनरी इंजेक्ट करें | हाँ (स्व-निहित मोड) |
python3-gi | fd पासिंग के साथ D-Bus LoopSetup | वैकल्पिक (डेस्कटॉप मोड) |
udisksctl | लूप डिवाइस सेटअप | वैकल्पिक (डेस्कटॉप मोड) |
| स्क्रिप्ट | उद्देश्य |
|---|
setup_lpe_env.sh | प्रयोगशाला वातावरण तैयार करना (लूप डिवाइस, fstab, परीक्षण उपयोगकर्ता) |
f2_mount_as_user_bypass.sh | as-user=root के साथ Filesystem.Mount बायपास को मान्य करना |
f2_check_nosuid.sh | बायपास माउंट पर nosuid/noexec/nodev फ्लैग्स जांचना |
f2_suid_test.sh | माउंटेड फाइलसिस्टम पर SUID बाइनरी निष्पादन का परीक्षण |
f2_final.sh | एंड-टू-एंड PoC: सेटअप → बायपास → euid=0 सत्यापित करना |
cleanup_lpe_env.sh | परीक्षण वातावरण पुनर्स्थापित करना |
| तिथि | घटना |
|---|
2026-04-21 | रिपोर्ट Red Hat उत्पाद सुरक्षा को प्रस्तुत की गई |
2026-04-21 | Red Hat ने प्राप्ति की पुष्टि की |
2026-04-28 | विक्रेता ने दोषपूर्ण तर्क की पुष्टि की |
2026-04-28 | विक्रेता ने PoC स्क्रिप्ट का अनुरोध किया |
2026-04-30 | विक्रेता ने CVE आवंटन का अनुरोध किया |
2026-04-30 | विक्रेता को PoC स्क्रिप्ट भेजी गईं |
2026-05-03 | प्रारंभिक विक्रेता पैच साझा किया गया |
2026-05-05 | अद्यतन विक्रेता पैच साझा किया गया |
2026-05-05 | CVE-2026-7867 आरक्षित किया गया |
2026-05-05 | टिकट को हल के रूप में चिह्नित किया गया |
2026-05-07 | विक्रेता ने udisks 2.11.2 के लिए फिक्स का संकेत दिया |
| शोधकर्ता | GitHub | भूमिका |
|---|---|---|
| Azizcan Daştan | azqzazq1 | खोज, विश्लेषण, PoC विकास, विक्रेता समन्वय |
| Özlem Ozan | oz7oz7 | अनुसंधान सहयोग और प्रकटीकरण श्रेय |