
cve-2026-46331-ऑडिट स्क्रिप्ट
CVE-2026-46331 (उर्फ pedit COW) के लिए केवल-पढ़ने योग्य ऑडिट स्क्रिप्ट — लिनक्स कर्नेल के net/sched act_pedit एक्शन में एक आंशिक कॉपी-ऑन-राइट बग, जो एक स्थानीय अन-प्रिविलेज्ड उपयोगकर्ता को पेज कैश मेमोरी को दूषित करने और रूट तक एस्केलेट करने देता है।
____ _____ ____ ___ _____ ____ _____ __
| _ \| ____| _ \_ _|_ _| / ___/ _ \ \ / /
| |_) | _| | | | | | | | | | | | | \ \ /\ / /
| __/| |___| |_| | | | | | |__| |_| |\ V V /
|_| |_____|____/___| |_| \____\___/ \_/\_/
CVE-2026-46331 net/sched act_pedit partial COW
tcf_pedit_act() एक बार की-लूप से पहले tcfp_off_max_hint का उपयोग करके skb_ensure_writable() के लिए COW रेंज की गणना करता है। टाइप की गई कुंजियाँ एक रनटाइम हेडर ऑफ़सेट जोड़ती हैं जिसे हिंट कवर नहीं करता, इसलिए अंतिम लेखन का कुछ हिस्सा COW'd क्षेत्र के बाहर होता है। परिणाम: साझा पेज-कैश पेजों पर लिखावट हो जाती है, और एक कैश्ड setuid बाइनरी (क्लासिक लक्ष्य: /bin/su) को मेमोरी में जहर दिया जा सकता है। ऑन-डिस्क हैश साफ रहते हैं। फ़ाइल-इंटीग्रिटी मॉनिटर इसे नहीं देख पाएंगे।
यह Dirty COW (CVE-2016-5195), Dirty Pipe (CVE-2022-0847), Copy Fail (CVE-2026-31431), और Dirty Frag (CVE-2026-46300) के समान बग परिवार है। प्रवेश बिंदु अलग है, पृष्ठ-स्वामित्व विफलता वही है।
सख्ती से केवल-पढ़ने के लिए ट्राइएज। कभी कोई मॉड्यूल लोड नहीं करता, कभी sysctl को नहीं छूता, कभी PoC निष्पादित नहीं करता। उत्पादन पर चलाने के लिए सुरक्षित डिज़ाइन किया गया।
act_pedit की पहुँच की जाँच करता है:
lsmod)modinfo)/boot/config-$(uname -r), /proc/config.gz, modules.builtin)blacklist या install ... /bin/true ओवरराइड द्वारा अवरुद्ध modprobe.d मेंtc action pedit नियमों को सूचीबद्ध करता है (सूचनात्मक; कोई बदलाव नहीं)।user.max_user_namespaces, kernel.unprivileged_userns_clone, और Ubuntu AppArmor userns प्रतिबंध।sudo ./cve-2026-46331-audit.sh # पूर्ण टेक्स्ट रिपोर्ट
sudo ./cve-2026-46331-audit.sh --json # मशीन-पठनीय JSON, कोई बैनर नहीं
sudo ./cve-2026-46331-audit.sh --quiet --no-hunt # बड़े पैमाने पर स्कैन के लिए एक-पंक्ति फैसला
sudo ./cve-2026-46331-audit.sh --since 2026-06-01 # IoC शिकार विंडो को चौड़ा करें
sudo ./cve-2026-46331-audit.sh --no-banner # ASCII बैनर के बिना टेक्स्ट रिपोर्ट
पूर्ण रन के लिए examples/sample-output.txt देखें, और JSON रूप के लिए examples/sample-output.json देखें।
स्कोर निम्नलिखित का भारित संयोजन है:
100 पर सीमित। 70 से ऊपर की कोई भी चीज़ मल्टी-टेनेंट / CI / Kubernetes नोड्स पर तत्काल मानी जानी चाहिए; 20 से नीचे आमतौर पर इस बात की पुष्टि है कि होस्ट ठीक है।
ansible -i inventory all -m script \
-a "cve-2026-46331-audit.sh --json --quiet --no-hunt" \
--become \
| tee /tmp/audit.jsonl
फिर jq के साथ एकत्रित करें:
grep -v '^[a-z]' /tmp/audit.jsonl | jq -s 'group_by(.verdict) | map({verdict: .[0].verdict, hosts: length})'
- name: audit CVE-2026-46331
ansible.builtin.script: cve-2026-46331-audit.sh --quiet --no-hunt
register: audit
failed_when: audit.rc == 2
changed_when: false
पसंद के क्रम में। स्क्रिप्ट जो पाया उसके आधार पर सही की सिफारिश करेगा।
# विकल्प 1: यदि आप act_pedit का उपयोग नहीं करते हैं तो इसे ब्लॉक करें।
tc actions list action pedit # ऐसा करने से पहले खाली होना चाहिए
echo 'install act_pedit /bin/true' | sudo tee /etc/modprobe.d/disable-act_pedit.conf
lsmod | grep -q act_pedit && sudo rmmod act_pedit
# विकल्प 2: अन-प्रिविलेज्ड यूज़र नेमस्पेस को प्रतिबंधित करें।
# रूटलेस Podman/Docker, ब्राउज़र सैंडबॉक्स, Flatpak, अन-प्रिविलेज्ड unshare, कुछ CI सैंडबॉक्स को तोड़ देगा।
sudo sysctl -w user.max_user_namespaces=0 # EL-परिवार
sudo sysctl -w kernel.unprivileged_userns_clone=0 # Debian/Ubuntu
असली फिक्स विक्रेता कर्नेल अपडेट और रीबूट है। रीबूट के बाद uname -r ही इसे साबित करने वाली एकमात्र चीज़ है।
यह उसी आर्किटेक्चरल विफलता का पाँचवाँ पुनरावृत्ति है। प्रत्येक ने तात्कालिक कारण को ठीक किया, किसी ने भी मूल कारण को ठीक नहीं किया: सीमाओं के पार पृष्ठों को साझा करने वाले जीरो-कॉपी फास्ट पथ, जहाँ प्रत्येक लेखक को बाइट्स को बदलने से पहले गोपनीयता साबित करनी होती है, सैकड़ों कॉल साइटों में।
कर्नेल में रस्ट स्वामित्व प्रकारों के माध्यम से इसी वर्ग को संबोधित करता है। यह कल net/sched में दिखाई नहीं देगा।
MIT। LICENSE देखें।
उन सिस्टमों पर अधिकृत रक्षात्मक उपयोग के लिए जो आपके स्वामित्व में हैं या जिन्हें आपको ऑडिट करने की स्पष्ट अनुमति है। स्क्रिप्ट कभी सार्वजनिक PoC निष्पादित नहीं करती, कभी सिस्टम स्थिति को संशोधित नहीं करती, और कभी मॉड्यूल लोड नहीं करती। फैसले को ट्राइएज के रूप में लें, समझौता या सुरक्षा के प्रमाण के रूप में नहीं।
| CVE | CVE-2026-46331 |
| घटक | Linux kernel net/sched / act_pedit |
| वर्ग | आंशिक COW → पेज कैश भ्रष्टाचार → LPE |
| हमला वेक्टर | स्थानीय (CAP_NET_ADMIN, आमतौर पर अन-प्रिविलेज्ड userns के माध्यम से प्राप्त) |
| अपस्ट्रीम प्रभावित | 5.18 .. 7.1-rc6 |
| अपस्ट्रीम फिक्स | 7.1-rc7 |
| सार्वजनिक PoC | packet_edit_meme (सत्यापित RHEL 10, Debian 13, Ubuntu 24.04.4) |
| Red Hat गंभीरता | महत्वपूर्ण |
| SUSE CVSS 3.1 | 7.8 (AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H) |
/etc/os-releaseauditd और journalctl के माध्यम से वैकल्पिक व्यवहारिक IoC शिकार (--since के माध्यम से कॉन्फ़िगर करने योग्य विंडो)।PATCHED / NOT_APPLICABLE / MITIGATED / VULNERABLE / UNKNOWN।| कोड | अर्थ |
|---|
| 0 | PATCHED या NOT_APPLICABLE (कर्नेल बग से पहले का है) |
| 1 | MITIGATED (शमन सक्रिय, कर्नेल अभी भी कमजोर, फिर भी पैच करें) |
| 2 | VULNERABLE (एक या अधिक आवश्यक पूर्वशर्तें पूरी, कोई निश्चित कर्नेल नहीं) |
| 3 | UNKNOWN (साझा / CI / Kubernetes संदर्भों में संदिग्ध मानें) |
| 4 | ERROR (स्क्रिप्ट नहीं चल सकी; उपकरण गायब या खराब वातावरण) |
| संकेत | भार |
|---|
विक्रेता फैसला VULNERABLE | +50 |
विक्रेता फैसला UNKNOWN | +30 |
act_pedit कर्नेल में निर्मित | +25 |
act_pedit लोड करने योग्य, कोई ओवरराइड नहीं | +20 |
act_pedit लोड करने योग्य, ओवरराइड सक्रिय | +5 |
act_pedit वर्तमान में लोडेड | +5 |
| अन-प्रिविलेज्ड userns सुलभ, कोई AppArmor गेट नहीं | +15 |
| अन-प्रिविलेज्ड userns सुलभ, AppArmor गेट सक्रिय | +8 |
| शिकार विंडो में IoCs मिले | +10 |
| CVE | वर्ष | उपतंत्र | आदिम |
|---|
| CVE-2016-5195 | 2016 | mm | केवल-पढ़ने के लिए मैपिंग पर COW रेस |
| CVE-2022-0847 | 2022 | pipe / splice | pipe_buffer फ्लैग पेज कैश में लीक |
| CVE-2026-31431 | 2026 | crypto AF_ALG/AEAD | केवल-पढ़ने के लिए फ़ाइल कैश पर इन-प्लेस क्रिप्टो |
| CVE-2026-46300 | 2026 | XFRM ESP-in-TCP | skbuff साझा-फ़्रैग मार्कर हानि |
| CVE-2026-46331 | 2026 | net/sched act_pedit | देर से हल किए गए टाइप-की ऑफ़सेट से आंशिक COW |