
Linux प्रणालियों पर CVE-2026-31431 (Copy Fail) जोखिम और शमन का पता लगाने के लिए शेल स्क्रिप्ट: कर्नेल जांच, मॉड्यूल स्थिति, बूट पैरामीटर, AF_ALG पहुंच, और डिस्ट्रो पैच स्थिति।
Linux कर्नेल कमजोरियों का पता लगाने, शमन स्थिति की जांच करने और उपचार के लिए मार्गदर्शन करने के लिए शेल स्क्रिप्ट — स्थानीय रूप से या SSH, Ansible, या pssh के माध्यम से फ्लीट में चलाने के लिए डिज़ाइन की गई।
कॉपी फेल Linux कर्नेल के algif_aead क्रिप्टोग्राफिक मॉड्यूल में एक उच्च-गंभीरता वाली स्थानीय विशेषाधिकार वृद्धि (LPE) कमजोरी है। 2017 में पेश किया गया एक लॉजिक दोष किसी भी गैर-विशेषाधिकार प्राप्त स्थानीय उपयोगकर्ता को किसी भी पठनीय फ़ाइल के पेज कैश में 4 नियंत्रित बाइट्स लिखने की अनुमति देता है — जो setuid बाइनरी को ओवरराइट करने और रूट प्राप्त करने के लिए पर्याप्त है। एक कार्यशील 732-बाइट Python प्रूफ-ऑफ-कॉन्सेप्ट मौजूद है और सार्वजनिक रूप से उपलब्ध है।
| CVE | CVE-2026-31431 |
| CVSS | 7.8 (उच्च) |
| खुलासा | 29 अप्रैल, 2026 |
| प्रभावित | Linux कर्नेल 4.13 – 6.x (2017–2026) |
| वितरण | Ubuntu, RHEL, SUSE, Debian, Amazon Linux, और अधिकांश अन्य |
| दूरस्थ रूप से शोषण योग्य | नहीं — स्थानीय पहुंच आवश्यक |
| पैच उपलब्ध | आंशिक — अपने डिस्ट्रो की सलाह जांचें |
| जांच | रूट की आवश्यकता? |
|---|---|
| कर्नेल संस्करण — क्या आप प्रभावित सीमा (≥ 4.13) में हैं | नहीं |
algif_aead मॉड्यूल — लोडेड, डिस्क पर मौजूद, या ब्लैकलिस्टेड | नहीं |
बूट पैरामीटर — initcall_blacklist=algif_aead_init की उपस्थिति | नहीं |
| AF_ALG सॉकेट पहुंच — क्या शोषण पथ खुला है | नहीं |
| SELinux स्थिति | नहीं |
| AppArmor स्थिति | हाँ — रूट के बिना केवल आंशिक आउटपुट |
| डिस्ट्रो पैच स्थिति — कर्नेल चेंजलॉग में CVE सूचीबद्ध | नहीं |
स्क्रिप्ट चलाने के लिए रूट आवश्यक नहीं है — AppArmor स्थिति को छोड़कर सभी जांचें नियमित उपयोगकर्ता के रूप में काम करती हैं। पूर्ण परिणामों के लिए
sudoके साथ चलाने की अनुशंसा की जाती है, औरcurlसे पाइप करते समय यह सुरक्षित विकल्प है।
स्क्रिप्ट सभी प्रमुख Linux वितरणों पर काम करने के लिए डिज़ाइन की गई है:
| वितरण परिवार | पैकेज प्रबंधक जांच | मॉड्यूल पथ |
|---|---|---|
| Debian, Ubuntu | dpkg + कर्नेल चेंजलॉग | /lib/modules/ |
| RHEL, CentOS, Amazon Linux | rpm (kernel, kernel-rt) | /lib/modules/ |
| SUSE, openSUSE | rpm (kernel-default) | /lib/modules/ |
| Arch Linux | pacman + सलाह लिंक | /usr/lib/modules/ |
| Fedora | rpm + /usr/lib/modules/ फ़ॉलबैक | /usr/lib/modules/ |
bashआवश्यक है — स्क्रिप्ट bash-विशिष्ट सिंटैक्स का उपयोग करती है औरsh,ash, याdashके तहत नहीं चलेगी। Alpine Linux पर (जो डिफ़ॉल्ट रूप से busybox ash का उपयोग करता है), पहले bash इंस्टॉल करें:apk add bash
रूट के बिना — अधिकांश जांचें काम करती हैं:
curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh | bash
रूट के साथ — AppArmor स्थिति सहित पूर्ण परिणाम:
curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh | sudo bash
टिप: प्रोडक्शन में एक विशिष्ट कमिट SHA पर पिन करें ताकि स्क्रिप्ट आपके नीचे से न बदल सके:
curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/COMMIT_SHA/check_copyfail.sh | sudo bash
curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh -o check_copyfail.sh
less check_copyfail.sh
bash check_copyfail.sh # रूट के बिना
sudo bash check_copyfail.sh # पूर्ण परिणाम
SSH लूप
for HOST in server1 server2 server3; do
echo "=== $HOST ==="
ssh "$HOST" "curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh | sudo bash"
done
Ansible
- name: Check Copy Fail vulnerability
hosts: all
tasks:
- name: Run check script
script: check_copyfail.sh
become: yes
समानांतर SSH
pssh -h hosts.txt -i \
"curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh | sudo bash"
============================================================
Copy Fail CVE-2026-31431 – Vulnerability Check
============================================================
>>> Kernel Version
[INFO] Running kernel: 5.15.0-107-generic
[WARN] Kernel 5.15.0-107-generic is in the affected range (4.13 – 6.x).
>>> algif_aead Module Status
[WARN] algif_aead module is currently LOADED — system is exploitable.
[WARN] Module file found at: /lib/modules/5.15.0-107-generic/kernel/crypto/algif_aead.ko
[WARN] algif_aead is NOT blacklisted — it can be loaded on demand.
>>> Kernel Boot Parameter Mitigation
[WARN] initcall_blacklist=algif_aead_init is NOT set in boot parameters.
>>> AF_ALG Socket Reachability
[WARN] AF_ALG sockets are reachable by this user — exploit path is open.
>>> Mandatory Access Control (SELinux / AppArmor)
[WARN] Neither SELinux nor AppArmor tools detected — no MAC layer present.
>>> Distribution Patch Status
[WARN] Could not confirm CVE-2026-31431 is listed as fixed in running kernel's changelog.
============================================================
SUMMARY
============================================================
!! LIKELY VULNERABLE — No confirmed mitigation detected.
Recommended actions (in order of preference):
1. Apply your distro's kernel update as soon as available.
2. Add to /etc/modprobe.d/copyfail.conf:
blacklist algif_aead
install algif_aead /bin/true
Then run: sudo depmod -a && sudo update-initramfs -u
3. Add to kernel boot parameters (grub):
initcall_blacklist=algif_aead_init
4. Immediately unload the module if loaded:
sudo rmmod algif_aead
============================================================
इन्हें प्राथमिकता के क्रम में लागू करें:
1. अपने कर्नेल को पैच करें (सर्वोत्तम समाधान)
# Debian / Ubuntu
sudo apt update && sudo apt upgrade linux-image-$(uname -r)
# RHEL / CentOS / Amazon Linux
sudo yum update kernel
# SUSE
sudo zypper update kernel-default
2. मॉड्यूल को ब्लैकलिस्ट करें (तत्काल, स्थायी)
sudo tee /etc/modprobe.d/copyfail.conf << 'EOF'
blacklist algif_aead
install algif_aead /bin/true
EOF
sudo depmod -a
# Debian/Ubuntu
sudo update-initramfs -u
# RHEL/Fedora
sudo dracut -f
3. मॉड्यूल को अभी अनलोड करें (तत्काल, रिबूट के बाद स्थायी नहीं)
sudo rmmod algif_aead
4. कर्नेल बूट पैरामीटर (ब्लैकलिस्ट का विकल्प)
अपने GRUB कॉन्फ़िगरेशन में initcall_blacklist=algif_aead_init जोड़ें और रिबूट करें।
MIT — स्वतंत्र रूप से उपयोग करें, कोई वारंटी निहित नहीं। रूट के रूप में चलाने से पहले हमेशा स्क्रिप्ट की समीक्षा करें।