
cve-2026-46331-ऑडिट स्क्रिप्ट
CVE-2026-46331 (जिसे pedit COW भी कहा जाता है) के लिए रीड-ओनली ऑडिट स्क्रिप्ट — यह Linux kernel के net/sched act_pedit action में एक आंशिक copy-on-write बग है, जो किसी स्थानीय अनप्रिविलेज्ड उपयोगकर्ता को page cache मेमोरी को भ्रष्ट करने और root तक एस्केलेट करने की अनुमति देता है।
____ _____ ____ ___ _____ ____ _____ __
| _ \| ____| _ \_ _|_ _| / ___/ _ \ \ / /
| |_) | _| | | | | | | | | | | | | \ \ /\ / /
| __/| |___| |_| | | | | | |__| |_| |\ V V /
|_| |_____|____/___| |_| \____\___/ \_/\_/
CVE-2026-46331 net/sched act_pedit partial COW
tcf_pedit_act() की लूप से पहले एक बार tcfp_off_max_hint का उपयोग करके skb_ensure_writable() के लिए COW रेंज की गणना करता है। Typed keys एक रनटाइम हेडर ऑफ़सेट जोड़ते हैं जिसे hint कवर नहीं करता, इसलिए अंतिम लेखन का एक हिस्सा COW किए गए क्षेत्र के बाहर पड़ता है। परिणाम: साझा page-cache पेजों पर लिखा जाता है, और एक कैश्ड setuid बाइनरी (क्लासिक लक्ष्य: /bin/su) को मेमोरी में ज़हरीला बनाया जा सकता है। डिस्क पर हैश साफ़ रहते हैं। फ़ाइल-इंटीग्रिटी मॉनिटर इसे नहीं देख पाएंगे।
Dirty COW (CVE-2016-5195), Dirty Pipe (CVE-2022-0847), Copy Fail (CVE-2026-31431), और Dirty Frag (CVE-2026-46300) के समान बग परिवार। प्रवेश बिंदु अलग है, पेज-स्वामित्व विफलता वही है।
| CVE | CVE-2026-46331 |
| घटक | Linux kernel net/sched / act_pedit |
| वर्ग | आंशिक COW → page cache भ्रष्टाचार → 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 गंभीरता | Important |
| SUSE CVSS 3.1 | 7.8 (AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H) |
पूर्णतः रीड-ओनली ट्रायाज। कभी मॉड्यूल लोड नहीं करती, कभी sysctl को नहीं छूती, कभी PoC निष्पादित नहीं करती। प्रोडक्शन पर चलाने के लिए सुरक्षित बनाई गई है।
act_pedit की पहुँच-क्षमता की जाँच करती है:
lsmod)modinfo)/boot/config-$(uname -r), /proc/config.gz, modules.builtin)modprobe.d में install ... /bin/true ओवरराइड द्वारा अवरुद्ध, या उन कर्नेल पर blacklist द्वारा जो अपने net-act-pedit उपनाम के माध्यम से act_pedit को ऑटोलोड करते हैं (6.9+; पुराने कर्नेल इसे नाम से अनुरोध करते हैं, जिसे blacklist नहीं रोकता)tc action pedit नियमों की सूची बनाती है (सूचनात्मक; कोई परिवर्तन नहीं)।user.max_user_namespaces, kernel.unprivileged_userns_clone, user.max_net_namespaces, और Ubuntu AppArmor userns प्रतिबंध।/etc/os-release के अनुसार अनुमानित विक्रेता पैच मैट्रिक्स (RHEL 8/9/10, Debian 11/12/13/14, Ubuntu 18.04→26.04, SUSE, Amazon Linux, Arch-परिवार रोलिंग)।auditd और journalctl के माध्यम से वैकल्पिक व्यवहारिक IoC खोज (--since और --until के माध्यम से कॉन्फ़िगर करने योग्य विंडो)।PATCHED / NOT_APPLICABLE / MITIGATED / VULNERABLE / UNKNOWN।sudo ./cve-2026-46331-audit.sh # full text report
sudo ./cve-2026-46331-audit.sh --json # machine-readable JSON, no banner
sudo ./cve-2026-46331-audit.sh --quiet --no-hunt # one-line verdict for mass scans
sudo ./cve-2026-46331-audit.sh --since 2026-06-01 # widen IoC hunt window
sudo ./cve-2026-46331-audit.sh --since 2026-06-01 --until 2026-09-01 # bounded IoC window
sudo ./cve-2026-46331-audit.sh --no-banner # text report without the ASCII banner
./cve-2026-46331-audit.sh --version # print script version and exit
| कोड | अर्थ |
|---|---|
| 0 | PATCHED या NOT_APPLICABLE (कर्नेल बग से पहले का है) |
| 1 | MITIGATED (मिटिगेशन सक्रिय, कर्नेल अभी भी भेद्य है, फिर भी पैच करें) |
| 2 | VULNERABLE (एक या अधिक आवश्यक पूर्व-शर्तें पूरी हुईं, कोई फ़िक्स्ड कर्नेल नहीं) |
| 3 | UNKNOWN (साझा / CI / Kubernetes संदर्भों में संदिग्ध मानें) |
| 4 | ERROR (स्क्रिप्ट नहीं चल सकी; अनुपलब्ध टूल या खराब वातावरण) |
पूर्ण रन के लिए examples/sample-output.txt देखें, और JSON रूप के लिए examples/sample-output.json देखें।
स्कोर निम्नलिखित का भारित संयोजन है:
| संकेत | भार |
|---|---|
विक्रेता का निर्णय VULNERABLE | +50 |
विक्रेता का निर्णय UNKNOWN | +30 |
act_pedit कर्नेल में बिल्ट-इन | +25 |
act_pedit लोड करने योग्य, कोई ओवरराइड नहीं | +20 |
act_pedit लोड करने योग्य, ओवरराइड या ब्लैकलिस्ट सक्रिय | +5 |
act_pedit वर्तमान में लोडेड | +5 |
| अनप्रिविलेज्ड userns+netns पहुँच योग्य, कोई AppArmor गेट नहीं | +15 |
| अनप्रिविलेज्ड userns+netns पहुँच योग्य, AppArmor गेट सक्रिय | +8 |
| हंट विंडो में IoCs मिले | +10 |
अधिकतम 100 तक सीमित। मल्टी-टेनेंट / CI / Kubernetes नोड्स पर ~70 से अधिक कुछ भी तत्काल माना जाना चाहिए; ~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
वरीयता के क्रम में। स्क्रिप्ट जो पाया है उसके आधार पर सही उपाय की सिफारिश करेगी।
# Option 1: block act_pedit if you don't use it.
tc actions list action pedit # MUST be empty before doing this
# 1a) Hard block via modprobe install override (strongest).
echo 'install act_pedit /bin/true' | sudo tee /etc/modprobe.d/disable-act_pedit.conf
# 1b) `blacklist act_pedit` only stops the autoload on kernels 6.9+, which
# request the "net-act-pedit" alias. Older kernels load it by name and
# ignore the blacklist, so prefer 1a. Check your kernel:
modinfo -F alias act_pedit | grep -qx net-act-pedit && echo "blacklist works here"
lsmod | grep -q act_pedit && sudo rmmod act_pedit
# Option 2: restrict unprivileged user namespaces.
# Will break rootless Podman/Docker, browser sandboxes, Flatpak, unprivileged unshare, some CI sandboxes.
sudo sysctl -w user.max_user_namespaces=0 # EL-family
sudo sysctl -w kernel.unprivileged_userns_clone=0 # Debian/Ubuntu
# Option 2b: restrict network namespaces (breaks the CAP_NET_ADMIN acquisition path).
# Less disruptive than disabling all user namespaces, but still breaks some container tooling.
sudo sysctl -w user.max_net_namespaces=0