
CVE-2026-46331 act_pedit पेज-कैश भ्रष्टाचार शोषण, Alpine PIE फिक्स के साथ
net/sched act_pedit आंशिक-COW पेज-कैश भ्रष्टाचार (दोषी 899ee91156e5, v5.18 से मौजूद .. v7.1-rc7 में ठीक हुआ)। packet_edit_meme.c इसे अनविशेषाधिकृत स्थानीय रूट में बदल देता है: एक userns CAP_NET_ADMIN चाइल्ड, setuid-root बाइनरी के कैश्ड ELF मेटाडेटा को setgid(0)+setuid(0)+execve("/bin/sh") शेलकोड से अधिलेखित कर देता है।
make
./packet_edit_meme
./packet_edit_meme --ubuntu # AppArmor-gated Ubuntu: aa-exec bypass first
| डिस्ट्रो | कर्नेल | फ़्लैग | परिणाम |
|---|---|---|---|
| RHEL 10.0 | 6.12.0 | (none) | ROOT |
| Debian 13 trixie | 6.12.90+deb13.1 | (none) | ROOT |
| Ubuntu 24.04.4 | 6.17.0-22 | --ubuntu | ROOT |
| Alpine edge | 7.0.10-0-stable | (none) | ROOT |
Alpine Linux (musl) PIE निष्पादनयोग्य को संकलित करता है जहाँ निष्पादनयोग्य PT_LOAD सेगमेंट फ़ाइल ऑफ़सेट ≥ 0x1000 पर शुरू होता है — जो pedit TCP हेडर ऑफ़सेट की 511-बाइट सीमा से परे है। ELF हेडर और प्रोग्राम हेडर पहले रीड-ओनली PT_LOAD (फ़ाइल ऑफ़सेट 0) में स्थित होते हैं। यह अनुकूलित एक्सप्लॉइट:
पेज 0 को निष्पादनयोग्य बनाता है PF_X को पहले PT_LOAD के p_flags फ़ील्ड में फ़ाइल ऑफ़सेट 0xB4 (phdr[2] + 4) पर जोड़कर।
शेलकोड को विभाजित करता है ताकि महत्वपूर्ण LOAD प्रोग्राम हेडर भ्रष्ट न हों:
e_entry → 0x28 (एक e_shoff फ़ील्ड, जिसे कर्नेल exec के समय जाँचता नहीं है)।0x28 पर: एक 5-बाइट jmp 0x1C8।0x1C8 पर, जो PT_NOTE प्रोग्राम हेडर को अधिलेखित करता है, जिन्हें कर्नेल exec के दौरान अनदेखा कर देता है।लक्ष्य को स्वतः खोजता है रनटाइम पर find / -xdev -type f -perm -4000 -user root के माध्यम से, हार्डकोडेड पथों के बजाय। मिलने वाली पहली विश्व-पठनीय setuid-root ELF बाइनरी उपयोग की जाती है — Alpine का /bin/su (-> /bin/bbsuid, ) स्वचालित रूप से छोड़ दिया जाता है क्योंकि इसे खोला नहीं जा सकता।
Ubuntu दो sysctls के माध्यम से अनकन्फाइंड अनविशेषाधिकृत userns को अस्वीकार करता है:
kernel.apparmor_restrict_unprivileged_userns # denies unconfined userns creation
kernel.apparmor_restrict_unprivileged_unconfined # forces unconfined change_profile to STACK,
# so an aa-exec permissive profile cannot
# shed the userns restriction
--ubuntu aa-exec -p {trinity,chrome,flatpak} के माध्यम से पुनः निष्पादित होता है (प्रोफाइल जिनमें userns, नियम होता है)।
| Ubuntu | userns | अनकन्फाइंड | aa-exec बायपास |
|---|---|---|---|
| 24.04.4 | 1 | 0 | काम करता है |
| 26.04 | 1 | 1 | बंद |
एक स्थिर x86_64-linux-gnu क्रॉस-कंपाइलर:
# Debian / Ubuntu
apt install gcc-x86-64-linux-gnu
# Alpine
apk add gcc musl-dev
---s--x--x