
संग्रहीत, codesource/cve-check पर स्थानांतरित। Linux सिस्टम पर CVE-2026-31431 (Copy Fail) जोखिम और शमन का पता लगाने के लिए शेल स्क्रिप्ट: कर्नेल जाँच, मॉड्यूल स्थिति, बूट पैरामीटर, AF_ALG पहुँच-योग्यता, और डिस्ट्रो पैच स्थिति।
[!IMPORTANT] यह रिपॉज़िटरी संग्रहीत (archived) कर दी गई है। Copy Fail जाँच अब cve-check में रहती है, अन्य कमज़ोरियों की जाँचों और एक वैकल्पिक
--fixमोड के साथ जो उपचार लागू करता है। इस जाँच के लिए checks/CVE-2026-31431 देखें।curl -fsSL https://raw.githubusercontent.com/codesource/cve-check/main/cve-check.sh | sudo bash -s -- CVE-2026-31431नीचे दिया गया
check_copyfail.shअभी भी काम करता है लेकिन अब अपडेट नहीं किया जाता।
Linux कर्नेल कमज़ोरियों का पता लगाने, शमन (mitigation) स्थिति की जाँच करने और उपचार का मार्गदर्शन करने के लिए शेल स्क्रिप्ट्स — जिन्हें स्थानीय रूप से या SSH, Ansible, या pssh के माध्यम से फ्लीट्स पर चलाने के लिए डिज़ाइन किया गया है।
Copy Fail Linux कर्नेल के algif_aead क्रिप्टोग्राफ़िक मॉड्यूल में एक उच्च-गंभीरता वाली स्थानीय विशेषाधिकार वृद्धि (LPE) कमज़ोरी है। 2017 में पेश किया गया एक तर्क दोष किसी भी गैर-विशेषाधिकार प्राप्त स्थानीय उपयोगकर्ता को किसी भी पठनीय फ़ाइल के पेज कैश में 4 नियंत्रित बाइट्स लिखने की अनुमति देता है — जो एक setuid बाइनरी को ओवरराइट करने और root प्राप्त करने के लिए पर्याप्त है। एक कार्यशील 732-बाइट Python प्रूफ़-ऑफ़-कॉन्सेप्ट मौजूद है और सार्वजनिक रूप से उपलब्ध है।
| CVE | CVE-2026-31431 |
| CVSS | 7.8 (High) |
| प्रकटीकरण | 29 अप्रैल, 2026 |
| प्रभावित | Linux कर्नेल 4.13 – 6.x (2017–2026) |
| वितरण | Ubuntu, RHEL, SUSE, Debian, Amazon Linux, और अधिकांश अन्य |
| दूरस्थ रूप से शोषणीय | नहीं — स्थानीय पहुँच आवश्यक |
| पैच उपलब्ध | आंशिक — अपने डिस्ट्रो की सलाहकार सूचनाएँ जाँचें |
| जाँच | root आवश्यक? |
|---|---|
| कर्नेल संस्करण — क्या आप प्रभावित सीमा (≥ 4.13) में हैं | नहीं |
algif_aead मॉड्यूल — लोडेड, डिस्क पर मौजूद, या ब्लैकलिस्टेड | नहीं |
बूट पैरामीटर — initcall_blacklist=algif_aead_init की उपस्थिति | नहीं |
| AF_ALG सॉकेट पहुँच — क्या शोषण पथ खुला है | नहीं |
| SELinux स्थिति | नहीं |
| AppArmor स्थिति | हाँ — root के बिना केवल आंशिक आउटपुट |
| डिस्ट्रो पैच स्थिति — कर्नेल चेंजलॉग में CVE सूचीबद्ध | नहीं |
स्क्रिप्ट चलाने के लिए root आवश्यक नहीं है — 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
root के बिना — अधिकांश जाँचें काम करती हैं:
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 # without root
sudo bash check_copyfail.sh # full results
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. अपने kernel को पैच करें (सर्वोत्तम समाधान)
# 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. Kernel बूट पैरामीटर (ब्लैकलिस्ट का विकल्प)
अपने GRUB कॉन्फ़िग में initcall_blacklist=algif_aead_init जोड़ें और रीबूट करें।
MIT — स्वतंत्र रूप से उपयोग करें, कोई वारंटी निहित नहीं। स्क्रिप्ट को root के रूप में चलाने से पहले हमेशा उनकी समीक्षा करें।