
कॉपी फेल और डर्टी फ्रैग बग्स (CVE-2026-31431, CVE-2026-43284, CVE-2026-43500) के लिए भेद्यता पहचान और शमन उपकरण
SSH पर एक दूरस्थ Linux होस्ट की Copy Fail और Dirty Frag कर्नेल-मॉड्यूल vulnerabilities के लिए ऑडिट करें और, वैकल्पिक रूप से, शमन उपाय लागू करें:
| CVE | नाम | प्रभावित मॉड्यूल |
|---|---|---|
| CVE-2026-31431 | Copy Fail | algif_aead |
| CVE-2026-43284 | Dirty Frag (IPsec) | esp4, esp6, ipcomp4, ipcomp6, xfrm_user |
| CVE-2026-43500 | Dirty Frag (RxRPC) | rxrpc, kafs |
प्रत्येक प्रभावित मॉड्यूल के लिए, vcheck रिपोर्ट करता है कि क्या वह वर्तमान में लोड है, चालू कर्नेल में बिल्ट-इन है, कर्नेल लॉग में पिछले निशान हैं, लाइव AF_ALG सॉकेट हैं (केवल Copy Fail के लिए), और क्या वह /etc/modprobe.d/ के अंतर्गत पहले से ब्लैकलिस्टेड है।
-fix के साथ, vcheck प्रारंभिक स्थिति की रिपोर्ट करता है, किसी भी मॉड्यूल के लिए जो अभी तक ब्लैकलिस्टेड नहीं है, एक cve-XXXX-XXXXX-disable.conf स्निपेट लिखता है, फिर जाँचों को फिर से चलाता है और अंतिम स्थिति की रिपोर्ट करता है। -fix -unload के साथ, vcheck फिक्स से पहले लोड किए गए प्रभावित मॉड्यूल को अनलोड करने का भी प्रयास करता है, फिर यह सत्यापित करने के लिए अंतिम स्कैन का उपयोग करता है कि वे अभी भी लोड हैं या नहीं। -fix -rebuild-initramfs के साथ, vcheck स्निपेट लिखे जाने के बाद केवल चालू कर्नेल के लिए initramfs को पुनर्निर्मित करता है, ताकि ब्लैकलिस्ट अगले बूट इमेज में बेक हो जाए। पुराने कर्नेल प्रविष्टियाँ फ़ॉलबैक के रूप में अपने मूल initramfs को बनाए रखती हैं।
-fix का उपयोग केवल check-only run के बाद करेंहमेशा पहले -fix के बिना vcheck चलाएँ। रिपोर्ट पढ़ें और -fix के साथ फिर से चलाने से पहले पुष्टि करें कि प्रभावित मॉड्यूल इस होस्ट पर अक्षम करना सुरक्षित है। कर्नेल मॉड्यूल को अक्षम करना जो वैध कार्यभार पर निर्भर हैं, उपयोगकर्ताओं को प्रभावित कर सकता है और एप्लिकेशन को तोड़ सकता है।
विशेष रूप से:
-fix को केवल तब सुरक्षित मानें जब कोई भी प्रभावित मॉड्यूल वर्तमान में लोड न हो — यानी प्रत्येक मॉड्यूल को mitigated या module not blacklisted (कोई VULNERABLE या blacklisted but currently loaded पंक्तियाँ नहीं) के रूप में रिपोर्ट किया गया हो। एक लोडेड मॉड्यूल लगभग हमेशा इसका मतलब है कि होस्ट पर कुछ सक्रिय रूप से इसका उपयोग कर रहा है; ब्लैकलिस्ट करने से पहले इसे सत्यापित करें।esp4, esp6, ipcomp4, ipcomp6, xfrm_user) किसी भी IPsec/strongSwan/WireGuard-over-IPsec/IKE तैनाती के लिए आवश्यक हैं। ipcomp4/ipcomp6 मॉड्यूल IPComp पेलोड कम्प्रेशन को लागू करते हैं और स्पष्ट रूप से कॉन्फ़िगर न होने पर भी IPsec SA के भाग के रूप में ऑटो-नेगोशिएट हो सकते हैं। VPN गेटवे, IPsec एंडपॉइंट, या कहीं भी जहाँ ip xfrm policy नियम लौटाता है, उनमें से किसी को भी ब्लैकलिस्ट न करें। ध्यान दें कि xfrm_algo फ्रेमवर्क मॉड्यूल जानबूझकर इस सूची में नहीं है — विक्रेता मार्गदर्शन (Red Hat, Ubuntu, AWS) के अनुसार, ESP और IPComp प्रोटोकॉल मॉड्यूल और xfrm_user नेटलिंक कॉन्फ़िगरेशन इंटरफ़ेस को ब्लॉक करना पर्याप्त है, और xfrm_algo को ब्लैकलिस्ट करने से बिना किसी अतिरिक्त लाभ के हर दूसरे xfrm ट्रांसफ़ॉर्म को तोड़ देगा।rxrpc, kafs) किसी भी होस्ट के लिए आवश्यक हैं जो AFS फ़ाइल सिस्टम माउंट करता है। उन्हें अक्षम करने से अगले बूट पर वे माउंट टूट जाएंगे।algif_aead AF_ALG सॉकेट फैमिली के माध्यम से कर्नेल क्रिप्टो को उजागर करता है। इसका सीधे एप्लिकेशन कोड द्वारा शायद ही कभी उपयोग किया जाता है, लेकिन ब्लैकलिस्ट करने से पहले लाइव सॉकेट्स (ss -p --af-alg) की सूची बनाकर और यूज़रस्पेस उपभोक्ताओं की जाँच करके सत्यापित करें।vcheck द्वारा लिखे गए ब्लैकलिस्ट स्निपेट केवल मॉड्यूल-लोड समय पर प्रभावी होते हैं (आमतौर पर अगला बूट, या modprobe -r <module> जब सिस्टम निष्क्रिय हो)। एक मॉड्यूल जो पहले से लोड है -fix के बाद भी चलता रहेगा — vcheck इसे blacklisted but currently loaded; run 'modprobe -r' or reboot के रूप में रिपोर्ट करेगा। -unload को -fix के साथ पास करने पर vcheck को ब्लैकलिस्ट स्निपेट लिखने के बाद लोड किए गए प्रभावित मॉड्यूल के लिए modprobe -r चलाने का निर्देश मिलता है। इसका उपयोग केवल तभी करें जब आपने पुष्टि कर ली हो कि मॉड्यूल को चालू कर्नेल से निकालना सुरक्षित है।
-rebuild-initramfs को -fix के साथ पास करने पर केवल चालू कर्नेल के लिए initramfs पुनर्जीवित होता है (update-initramfs -u -k $(uname -r) Debian/Ubuntu पर, dracut -f --kver $(uname -r) RHEL/Fedora पर)। अन्य स्थापित कर्नेल अपने मौजूदा initramfs को अछूता रखते हैं, इसलिए यदि रिबूट के बाद कुछ गलत होता है तो आप बूट मेनू से कोई पुरानी कर्नेल प्रविष्टि चुन सकते हैं और रिकवर कर सकते हैं। भविष्य के कर्नेल इंस्टॉल वर्तमान /etc/modprobe.d/ स्थिति से अपना initramfs पुनर्निर्मित करते हैं, इसलिए बिना vcheck को फिर से चलाए ब्लैकलिस्ट स्वचालित रूप से प्रसारित होती है। यदि न तो update-initramfs और न ही dracut मौजूद है (जैसे Arch, Alpine, अपरिवर्तनीय इमेज), तो vcheck चेतावनी देता है और जारी रखता है — रिबूट करने से पहले डिस्ट्रो के टूल से मैन्युअल रूप से पुनर्निर्माण करें।
पुनर्निर्माण में कई मिनट लग सकते हैं (विशेषकर कई ड्राइवरों वाले होस्ट पर dracut), जो डायग्नोस्टिक -command-timeout को पार कर सकता है। यह अपने स्वयं के -initramfs-timeout (डिफ़ॉल्ट 10m) के अंतर्गत चलता है ताकि तेज़ जाँचों के लिए अपनी सीमित सीमा बनाए रखते हुए पुनर्निर्माण को आवश्यक समय मिल सके। धीमे हार्डवेयर के लिए -initramfs-timeout बढ़ाएँ, या टाइमआउट को पूरी तरह से अक्षम करने के लिए 0 पास करें। लंबे समय तक चलने वाले रिमोट कमांड के दौरान, vcheck डिफ़ॉल्ट रूप से हर 30s में SSH कीपअलाइव अनुरोध भेजता है ताकि NAT/फ़ायरवॉल निष्क्रियता टाइमर कनेक्शन को ड्रॉप न करें। इसे -ssh-keepalive से समायोजित करें, या अक्षम करने के लिए 0 पास करें।
Homebrew (macOS):
brew install --cask krisiasty/tap/vcheck
पूर्व-निर्मित बाइनरीज़ Linux, macOS और Windows के लिए रिलीज़ पेज पर प्रकाशित हैं।
स्रोत से (Go 1.26+ आवश्यक है):
go install github.com/krisiasty/vcheck@latest
vcheck -host HOST [flags]