
CVE-2026-31431 (Copy Fail) के लिए लिनक्स कर्नेल पर डिटेक्शन और मिटिगेशन टूलिंग। इसमें Phalanx-CCS और Silent4Labs स्क्रिप्ट्स साथ ही एक Ansible playbook शामिल है जो सर्वरों पर अस्थायी मिटिगेशन (algif_aead मॉड्यूल या बूट पैरामीटर को ब्लॉक करना) लागू करने के लिए है।
यह पैकेज प्रभावित कर्नेल (संस्करण 4.14 से 6.12.84, 6.13 से 6.18.21, आदि) चलाने वाले Linux सिस्टम पर CVE-2026-31431 भेद्यता (उर्फ कॉपी फेल) का पता लगाने और शमन करने के लिए एक स्वचालित समाधान प्रदान करता है।
टूलिंग में शामिल हैं:
mitigate_copyfail.sh) जो:
CONFIG_CRYPTO_USER_API_AEAD=m|y) का पता लगाती है।=m): install algif_aead /bin/false के साथ /etc/modprobe.d/disable-algif-aead.conf बनाता है और मॉड्यूल को अनलोड करता है (rmmod)।=y): कर्नेल बूट पैरामीटर initcall_blacklist=algif_aead_init जोड़ता है (पुनरारंभ की आवश्यकता है)।mitigation.yml) जो:
महत्वपूर्ण नोट: शमन अस्थायी है। स्थायी समाधान कर्नेल को उस संस्करण में अपग्रेड करना है जिसमें पैच
a664bf3d603d(≥6.18.22, ≥6.19.12 या ≥7.0) शामिल हो।
become: yes के साथ)sudo विशेषाधिकार (शमन लागू करने के लिए)पहचान स्क्रिप्ट (Phalanx-CCS और Silent4Labs) सुरक्षित हैं और भेद्यता का शोषण नहीं करती हैं; वे केवल हमले की सतह को सत्यापित करती हैं।
cve-2026-31431-mitigation/
├── README.md
├── scripts/
│ ├── mitigate_copyfail.sh # Unified script (detection + mitigation)
│ ├── check_copyfail.py # Phalanx-CCS (reachability checker)
│ └── check-copyfail.sh # Silent4Labs (risk assessment)
├── ansible/
│ ├── ansible.cfg # (optional) Ansible configuration
│ ├── inventory.ini # Server inventory
│ └── mitigation.yml # Main playbook
└── resultados_cve/ # Auto‑generated folder for logs
git clone https://github.com/your-username/cve-2026-31431-mitigation.git
cd cve-2026-31431-mitigation/ansible
inventory.ini)दूरस्थ सर्वर के लिए उदाहरण:
[servers]
server1 ansible_host=192.168.1.10 ansible_user=root
[localhost]
localhost ansible_connection=local
[all:vars]
ansible_become=yes
# ansible_become_password=my_password # if using password for sudo
mitigation.yml में, Copy scripts to remote कार्य src: "../scripts/{{ item }}" का उपयोग करता है। सुनिश्चित करें कि सापेक्ष पथ सही है, या इसे अपने लेआउट के अनुसार संशोधित करें।
ansible/ निर्देशिका से:
ansible-playbook -i inventory.ini mitigation.yml -k -K
-k SSH पासवर्ड मांगता है।-K become (sudo) पासवर्ड मांगता है।जब ansible_connection=local के साथ localhost का उपयोग कर रहे हों, तो SSH की आवश्यकता नहीं है।
प्लेबुक एक सादा-पाठ सारांश प्रदर्शित करता है जो इस प्रकार है:
==========================================
MITIGATION RESULTS
==========================================
Host: server1
------------------------------------------
- Status: SYSTEM SECURE
- Code: (not applicable)
------------------------------------------
- Final score: 40 / 100
- Risk level: MEDIUM
==========================================
इसके अतिरिक्त, resultados_cve/<hostname>_mitigation.log में एक लॉग फ़ाइल सहेजी जाती है जिसमें पूर्ण स्क्रिप्ट आउटपुट (दिनांक, कर्नेल संस्करण, पहचान संदेश, आदि) होता है।
यदि निकाले गए मान ? या Not detected दिखाते हैं, तो mitigation.yml में डीबग कार्यों को सक्षम करें:
when: false को when: true में बदलें (या clean_stdout और regex आउटपुट देखने के लिए when: true सेट करें)।Create local results directory और Save full output to local file कार्यों को संपादित करें:
path: /absolute/path/resultados_cve
dest: "/absolute/path/resultados_cve/{{ inventory_hostname }}_mitigation.log"
कॉपी कार्यों को टिप्पणी करें और Run mitigation script कार्य में पथ को मौजूदा स्थान पर इंगित करने के लिए समायोजित करें।
अंतिम कार्य (Clean up remote scripts) में when: false को when: true में बदलें।
initcall_blacklist) के माध्यम से शमन को प्रभावी होने के लिए पुनरारंभ की आवश्यकता होती है। प्लेबुक स्वचालित रूप से पुनरारंभ नहीं करता है; एक रखरखाव विंडो की योजना बनाई जानी चाहिए।CONFIG_CRYPTO_USER_API_AEAD=y (अंतर्निहित कर्नेल) वाले सिस्टम पर, मॉड्यूल को rmmod से अनलोड नहीं किया जा सकता; एकमात्र तरीका बूट पैरामीटर है।/proc/crypto और /boot/config-* पढ़ने के लिए विशेषाधिकारों की आवश्यकता हो सकती है; वे become: yes के साथ चलती हैं।यह प्रोजेक्ट MIT लाइसेंस के तहत वितरित किया गया है। तृतीय-पक्ष स्क्रिप्ट (Phalanx-CCS, Silent4Labs) अपने संबंधित लाइसेंस बनाए रखती हैं।
यदि आपको यह उपकरण उपयोगी लगता है, तो कृपया GitHub पर इसे स्टार देने पर विचार करें!