
CVE-2026-31431 के लिए स्वचालित स्कैनर और पैच सहायक, जो SSH के माध्यम से कमजोर Linux होस्टों का पता लगाता है, कर्नेल संस्करणों की पुष्टि करता है, और कई वितरणों में कर्नेल अपग्रेड या अस्थायी शमन लागू करता है।
Copy Fail आपके Linux इंफ्रास्ट्रक्चर में CVE-2026-31431 (Linux Kernel algif_aead Local Privilege Escalation) कमजोरी का पता लगाने और उसे ठीक करने के लिए एक स्वचालित सुरक्षा स्कैनर और पैच हेल्पर है।
CVE-2026-31431 Linux कर्नेल मॉड्यूल algif_aead (Asynchronous Cipher Interface for AEAD) में एक Local Privilege Escalation (LPE) कमजोरी है। यह कमजोरी स्थानीय उपयोगकर्ताओं को root स्तर तक privilege escalation प्राप्त करने की अनुमति देती है।
यह टूल निम्नलिखित में मदद करता है:
नोट: यह टूल केवल sysadmin द्वारा आंतरिक ऑडिट और पैचिंग उद्देश्यों के लिए है। इसका उपयोग केवल उन सिस्टम पर करें जिनके आप मालिक हैं या जिनके लिए आपके पास अधिकार है।

algif_aead मॉड्यूल की स्थिति का पता लगाएं (loaded/not loaded)पैकेज मैनेजर के माध्यम से कमजोर होस्ट पर स्वचालित कर्नेल अपग्रेड:
विकल्प: पैच पूरा होने के बाद स्वचालित रीबूट
algif_aead मॉड्यूल को अक्षम करेंपैच किए गए कर्नेल संस्करणों का डेटाबेस:
paramiko>=3.0.0 # SSH library
rich>=13.0.0 # Beautiful terminal UI
git clone https://github.com/gagaltotal/cve-2026-31431-copy-fail.git
cd cve-2026-31431-copy-fail
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
या मैन्युअल रूप से स्थापित करें:
pip install paramiko>=3.0.0 rich>=13.0.0
python3 copyfail_scanner.py --help
# SSH key के साथ सबनेट स्कैन करें
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH_TO_KEY>
# कई विशिष्ट होस्ट स्कैन करें
python3 copyfail_scanner.py --hosts <IP1>,<IP2>,<IP3> --user <USERNAME> [--password <PASSWORD>]
# स्कैन + स्वचालित पैच
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH> --patch
# स्कैन + अस्थायी शमन
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH> --mitigate
| विकल्प | विवरण | उदाहरण |
|---|---|---|
--subnet | लक्ष्य सबनेट CIDR (--hosts के साथ परस्पर अनन्य) | --subnet 192.168.1.0/24 |
--hosts | अल्पविराम से अलग किए गए IP की सूची (--subnet के साथ परस्पर अनन्य) | --hosts 192.168.1.10,192.168.1.20 |
--user | SSH उपयोगकर्ता नाम (आवश्यक) | --user root |
--password | SSH पासवर्ड (वैकल्पिक, key न होने पर उपयोग करें) | --password secret123 |
--key | SSH निजी key का पथ | --key ~/.ssh/id_rsa |
--port | SSH पोर्ट (डिफ़ॉल्ट: 22) | --port 2222 |
--threads | समानांतर थ्रेड की संख्या (डिफ़ॉल्ट: 30) | --threads 50 |
--patch | कमजोर होस्ट पर स्वचालित कर्नेल अपग्रेड | --patch |
--reboot | पैच के बाद स्वचालित रीबूट (--patch के साथ उपयोग करें) | --patch --reboot |
--mitigate | अस्थायी शमन लागू करें (algif_aead अक्षम करें) | --mitigate |
--output | स्कैन परिणाम JSON फ़ाइल में निर्यात करें | --output hasil.json |
--yes | पैच/शमन से पहले पुष्टिकरण प्रॉम्प्ट छोड़ें | --yes |
python3 copyfail_scanner.py \
--subnet 192.168.1.0/24 \
--user ubuntu \
--key ~/.ssh/id_rsa
आउटपुट: स्कैन परिणाम तालिका और सारांश प्रदर्शित करता है
python3 copyfail_scanner.py \
--hosts 10.0.1.5,10.0.1.6,10.0.1.7 \
--user admin \
--password my_password123
python3 copyfail_scanner.py \
--subnet 172.16.0.0/16 \
--user root \
--key ~/.ssh/id_rsa \
--mitigate
कार्रवाई: सभी होस्ट स्कैन करें, फिर कमजोर होस्ट पर algif_aead मॉड्यूल अक्षम करें (पुष्टिकरण मांगता है)
python3 copyfail_scanner.py \
--subnet 192.168.0.0/24 \
--user ubuntu \
--key ~/.ssh/id_rsa \
--patch
कार्रवाई: कर्नेल अपग्रेड करें, लेकिन स्वचालित रीबूट न करें (मैन्युअल रीबूट आवश्यक है)
python3 copyfail_scanner.py \
--subnet 10.10.0.0/24 \
--user root \
--key ~/.ssh/id_rsa \
--patch \
--reboot \
--yes
कार्रवाई: स्कैन करें, कर्नेल पैच करें, स्वचालित रीबूट करें, पुष्टिकरण छोड़ें
python3 copyfail_scanner.py \
--subnet 192.168.1.0/24 \
--user sysadmin \
--key ~/.ssh/id_rsa \
--output scan_results_$(date +%Y%m%d_%H%M%S).json
आउटपुट: टर्मिनल में तालिका + फ़ाइल में JSON परिणाम
python3 copyfail_scanner.py \
--subnet 10.0.0.0/25 \
--user ubuntu \
--key ~/.ssh/id_rsa \
--port 2222 \
--threads 50
स्कैन से आउटपुट का उदाहरण:
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━┓
┃ IP ┃ Hostname ┃ Distro ┃ Kernel ┃ algif ┃ Status ┃ Action ┃ Notes ┃
┣━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━━╋━━━━━━━━━╋━━━━━━━━━╋━━━━━━━━━┫
┃ 192.168.1.10 ┃ web-01 ┃ Ubuntu 22.04 ┃ 6.8.0-60 ┃ LOADED ┃ ✓ AMAN ┃ - ┃ Patched ┃
┃ 192.168.1.11 ┃ web-02 ┃ Ubuntu 20.04 ┃ 5.4.0-200 ┃ NOT_LDD ┃ ✗ RENTA ┃ Patched ┃ - ┃
┃ 192.168.1.12 ┃ db-01 ┃ RHEL 8.9 ┃ 5.14.0-560 ┃ LOADED ┃ ? TIDAK ┃ - ┃ Distro ┃
┗━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━┻━━━━━━━━━┻━━━━━━━━━┻━━━━━━━━━┛
सारांश:
कुल स्कैन किए गए होस्ट: 12
पहुंच योग्य (SSH): 11
ऑफ़लाइन: 1
कमजोर: 2
पहले से पैच किए गए: 8
अज्ञात स्थिति: 1
hostname -f से प्राप्त होस्टनामuname -r से){
"cve": "CVE-2026-31431",
"scan_time": "2026-05-08T15:30:45.123456",
"results": [
{
"ip": "192.168.1.10",
"ssh_reachable": true,
"auth_ok": true,
"hostname": "web-01",
"distro": "Ubuntu 22.04 LTS",
"os_id": "ubuntu",
"kernel_version": "6.8.0-60-generic",
"algif_loaded": true,
"modprobe_blocked": false,
"patched": true,
"patch_applied": false,
"mitigation_applied": false,
"retry_count": 0,
"error": ""
}
]
}
स्कैनर निम्नलिखित डिस्ट्रो के लिए स्वचालित पहचान का समर्थन करता है:
| डिस्ट्रो | पैकेज मैनेजर | पैच किए गए कर्नेल संस्करण | नोट |
|---|---|---|---|
| Ubuntu | apt | 6.8.0-60, 5.15.0-130, 5.4.0-216 | LTS और वर्तमान |
| Debian | apt | 6.1.137, 5.10.235 | स्थिर रिलीज़ |
| RHEL | dnf/yum | 5.14.0-570 | CentOS Stream शामिल है |
| AlmaLinux | dnf | 5.14.0-570 | RHEL का ड्रॉप-इन प्रतिस्थापन |
| Rocky | dnf | 5.14.0-570 | एंटरप्राइज़-केंद्रित |
| Fedora | dnf | 6.14.4, 6.13.12, 6.12.25 | अत्याधुनिक |
| Amazon Linux | dnf | 6.1.134, 5.10.235, 4.14.353 | AWS संगतता |
| SUSE / openSUSE | zypper | 6.4.0-18, 5.14.21-150600.24 | एंटरप्राइज़ और समुदाय |
| Arch Linux | pacman | 6.14.4 | ब्लीडिंग एज |
पहचाने नहीं गए डिस्ट्रो के लिए: कर्नेल संस्करण को मैन्युअल रूप से सत्यापित करें। कर्नेल >= 6.14.4 आम तौर पर सुरक्षित है।
यदि आप मैन्युअल पैच पसंद करते हैं या स्वचालित पैच विफल हो जाता है, तो प्रति-डिस्ट्रो गाइड का पालन करें:
sudo apt update
sudo apt upgrade linux-image-generic kmod
sudo reboot
sudo dnf clean metadata
sudo dnf upgrade kernel
sudo reboot
sudo dnf upgrade kernel
sudo reboot
sudo dnf upgrade kernel
sudo reboot
sudo zypper update kernel-default
sudo reboot
sudo pacman -Syu linux linux-headers
sudo reboot
यदि आप कर्नेल अपग्रेड के लिए तुरंत रीबूट नहीं कर सकते हैं, तो शमन लागू करें:
# modprobe.d के माध्यम से algif_aead मॉड्यूल अक्षम करें
echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif_aead.conf
# यदि मॉड्यूल पहले से loaded है तो उसे अनलोड करें
sudo rmmod algif_aead 2>/dev/null || echo "Module not loaded"
महत्वपूर्ण:
CONFIG_CRYPTO_USER_API_AEAD=y वाले RHEL-परिवार पर, मॉड्यूल कर्नेल में built-in है, इसलिए modprobe.d प्रभावी नहीं है → कर्नेल अपग्रेड ही एकमात्र समाधान हैError: Port SSH tidak terbuka
समाधान:
nc -zv <IP> 22--port का उपयोग करेंError: Autentikasi SSH gagal
समाधान:
chmod 600 ~/.ssh/id_rsassh -i ~/.ssh/id_rsa user@host--password का उपयोग करेंExit code 1: dpkg: error processing...
समाधान:
sudo visudoapt/dnf/yum चलाने में सक्षम होना चाहिएRetry: 3x | Host temporary unavailable
समाधान:
--threads 10Status: ? TIDAK DIKETAHUI
समाधान:
uname -r और advisory से तुलना करेंExit code 1: Failed to lock apt database
समाधान:
sudo tail -f /var/log/apt/term.logकेवल आंतरिक उपयोग — यह टूल केवल अधिकृत sysadmin द्वारा ऑडिट और पैच प्रबंधन उद्देश्यों के लिए है।
DISCLAIMER:
- Use only on systems you own or have explicit authorization to access
- Automatic patching dan reboot dapat menyebabkan downtime
- Test di staging environment sebelum production deployment
- Pastikan backup tersedia sebelum patch
- Developer tidak bertanggung jawab atas data loss atau service disruption
लेखक: GagalTotal
रिपॉजिटरी: https://github.com/gagaltotal/cve-2026-31431-copy-fail
संपर्क: ghostgtr666
बग रिपोर्ट, फीचर अनुरोध, या प्रश्नों के लिए:
अंतिम अद्यतन: 8 मई, 2026
स्कैनर संस्करण: 1.0