
निष्क्रिय Linux होस्ट स्कैनर जो कर्नेल संस्करण, डिस्ट्रो चेंजलॉग, मॉड्यूल स्थिति, और AF_ALG पहुंच के माध्यम से CVE-2026-31431 के संपर्क को वर्गीकृत करता है, SIEM एकीकरण के लिए JSON आउटपुट के साथ।
लेखक/योगदानकर्ता: पैट्रिक डॉयल (लेखक/अनुरक्षक), एफी रेनार्ड (सह-लेखक), किम्बर्ली-ली बैंक्स (सह-लेखक), क्रिस एफ. (सहायता/कोड समीक्षा)
AI घोषणा: परीक्षण फ़ाइलें लिखने, परीक्षण डेटा लिखने और कोड सुरक्षा समीक्षा के लिए Claude Code का उपयोग किया गया। सभी संपादनों की मैन्युअल रूप से एक योगदानकर्ता द्वारा जाँच की गई।
एकल स्टैटिकली-लिंक्ड Go बाइनरी जो Linux होस्ट के CVE-2026-31431 के प्रति जोखिम को वर्गीकृत करती है।
यह टूल निष्क्रिय है। यह बग का शोषण नहीं करता। तंत्र जांच (नीचे सुरक्षा कथन देखें) केवल दो syscalls जारी करता है और कभी भी कमजोर कोड पथ को स्पर्श नहीं करता।
| सिग्नल | स्रोत | फ़्लैग |
|---|
| कर्नेल संस्करण बनाम अपस्ट्रीम फिक्स | uname(2) | --kernel-version |
| डिस्ट्रो चेंजलॉग में CVE का उल्लेख | apt/rpm/apk या डिस्क पर changelog.Debian.gz | --changelog |
algif_aead मॉड्यूल स्थिति | /proc/modules, modprobe.d, /lib/modules | --module |
| कमजोर सतह सुलभ | socket(AF_ALG) + bind(authencesn(...)) | --mechanism |
| vmlinux में संकलित | /boot/config-$(uname -r) या /proc/config.gz | (--module का हिस्सा) |
यदि कोई जांच फ़्लैग नहीं दिया गया है, तो सभी चार चलते हैं।
| मोड | ट्रिगर | उपयोग का मामला |
|---|---|---|
| सुंदर स्टाइल (डिफ़ॉल्ट) | TTY stdout, कोई --format ओवरराइड नहीं, कोई NO_COLOR env नहीं | इंटरैक्टिव शेल रन |
| सादा पाठ | गैर-TTY stdout, या --format=text, या NO_COLOR=1, या --no-color | शेल स्क्रिप्ट, पाइप |
| JSON | --format=json | Syslog/SIEM इन्जेस्ट, शेल स्क्रिप्ट |
| शांत | --quiet | केवल निकास कोड (स्वचालन/स्क्रिप्ट) |
पाइप होने पर सुंदर बल करें: cvecheck --pretty | tee report.txt।
TTY में सादा बल करें: cvecheck --no-color या NO_COLOR=1 cvecheck।
जांच केवल दो syscalls जारी करती है socket(AF_ALG, SOCK_SEQPACKET, 0), और bind(fd, &SockaddrALG{Type:"aead", Name:"authencesn(hmac(sha256), cbc(aes))"})। इसके बाद close(fd) किया जाता है। यह कोई setsockopt कुंजी के लिए, कोई accept, कोई sendmsg, कोई splice, और कोई पाइप निर्माण नहीं करता। कमजोर कोड पथ के लिए क्रिप्टो डेटा के sendmsg को पेज-कैश-समर्थित फ़ाइल डिस्क्रिप्टर से splice के साथ संयुक्त करना आवश्यक है; इनमें से कोई भी ऑपरेशन नहीं होता, इसलिए बग ट्रिगर नहीं हो सकता।
सफल जांच का मतलब है कि सतह सुलभ है। कर्नेल में अभी भी बग है या नहीं, यह कर्नेल-संस्करण + चेंजलॉग सिग्नल द्वारा तय किया जाता है।
दुष्प्रभाव: एक सफल bind कर्नेल मॉड्यूल ऑटोलोडर के माध्यम से algif_aead को ऑटोलोड करता है। मॉड्यूल जांच तंत्र जांच से पहले चलती है ताकि लोडेड-स्थिति रिपोर्ट प्री-प्रोब हो। ऑटोलोड को पूरी तरह से दबाने के लिए, पहले algif_aead को ब्लैकलिस्ट करें।
| कोड | अर्थ |
|---|---|
0 | PATCHED / NOT_VULNERABLE / MITIGATED / LIKELY_NOT_EXPLOITABLE |
2 | VULNERABLE या MECHANISM_REACHABLE (आंशिक स्कैन, कर्नेल-संस्करण जांचा नहीं गया) |
3 | INCONCLUSIVE (अपर्याप्त सिग्नल) |
| डिस्ट्रो | पता लगाना | कर्नेल pkg | नोट्स |
|---|---|---|---|
| Ubuntu / Debian / Mint / Pop!_OS | apt | linux-image-$(uname -r) | डिस्क-पहले चेंजलॉग पढ़ना हस्ताक्षरित कर्नेल पर apt changelog नेटवर्क नाजुकता से बचाता है |
| RHEL / CentOS / Rocky / Alma / Fedora / Amazon Linux | rpm | kernel | algif_aead बिल्ट-इन भेजता है (CONFIG_..._AEAD=y); ब्लैकलिस्ट शमन प्रभावी नहीं |
| Oracle Linux | rpm | kernel या kernel-uek | UEK uname -r में uek सबस्ट्रिंग के माध्यम से पता लगाया जाता है |
| openSUSE / SLES | rpm | kernel-default | |
| Alpine | apk | linux-lts / linux-virt / आदि। | फ्लेवर रिलीज़ सफ़िक्स से चुना जाता है |
| Arch / CachyOS / Manjaro / Endeavour / Gentoo | कोई नहीं | n/a | रोलिंग/स्रोत: कर्नेल-संस्करण जांच पर निर्भर करता है |
आपके आर्क का स्वतः पता लगाता है, सही बाइनरी को $(pwd) में डाउनलोड करता है, और प्रकाशित SHA256SUMS के विरुद्ध इसकी SHA-256 सत्यापित करता है:
curl -fsSL https://copyfail.pcdoyle.dev/install.sh | sh
स्क्रिप्ट चेकसम बेमेल पर गैर-शून्य निकास करती है और खराब फ़ाइल को हटा देती है।
अपने होस्ट आर्किटेक्चर के लिए बाइनरी चुनें:
| आर्किटेक्चर | बाइनरी |
|---|---|
Intel/AMD 64-बिट (x86_64) | cvecheck-linux-x86_64 |
ARM 64-बिट (aarch64) | cvecheck-linux-arm64 |
Intel/AMD 32-बिट (i?86) | cvecheck-linux-x86 |
चलाने से पहले सत्यापित करें:
curl -LO https://github.com/pcdoyle/copy-fail-cve-2026-31431/releases/latest/download/cvecheck-linux-x86_64
curl -LO https://github.com/pcdoyle/copy-fail-cve-2026-31431/releases/latest/download/SHA256SUMS
sha256sum --ignore-missing -c SHA256SUMS
chmod +x cvecheck-linux-x86_64
make build # bin/cvecheck-linux-{x86_64,arm64,x86}
# सर्वर पर SCP(SFTP):
scp ./bin/cvecheck-linux-x86_64 host:/tmp/ # 4 MB से कम, स्थिर, कोई glibc निर्भरता नहीं
# SSH:
ssh <host>
# बाइनरी चलाएँ:
/tmp/cvecheck-linux-x86_64 # मानव-अनुकूल सुंदर आउटपुट।
/tmp/cvecheck-linux-x86_64 --format=json # स्क्रिप्ट, Syslog, और SIEM अनुकूल
/tmp/cvecheck-linux-x86_64 --format=text # स्क्रिप्ट, और पाइप अनुकूल
ssh <host> /tmp/cvecheck-linux-x86_64 # यदि सीधे चलाया जाए तो डिफ़ॉल्ट रूप से --format=text
ssh <host> /tmp/cvecheck-linux-x86_64 --format=json # Syslog/SIEM-अनुकूल
होस्ट रूट को कहीं पठनीय माउंट करें और --root पास करें:
docker run --rm -v /:/host:ro alpine /tmp/cvecheck --root /<host-path>
--root सभी डिस्क-आधारित लुकअप को नियंत्रित करता है (/etc/os-release, modprobe.d, /lib/modules, /boot/config-*, चेंजलॉग फ़ाइलें)। कर्नेल-संस्करण और तंत्र जांच अभी भी uname(2) और socket(AF_ALG, ...) के माध्यम से चल रहे कर्नेल को स्पर्श करती हैं।
इस क्रम में हल किया गया (पहला मिलान जीतता है):
PATCHED: डिस्ट्रो चेंजलॉग CVE ID का संदर्भ देता है।NOT_VULNERABLE: चल रहा कर्नेल >= अपस्ट्रीम फिक्स्ड संस्करण।MITIGATED: algif_aead ब्लैकलिस्टेड और लोडेड नहीं और vmlinux में बिल्ट-इन नहीं।LIKELY_NOT_EXPLOITABLE: AF_ALG अनुपलब्ध और मॉड्यूल डिस्क पर नहीं।MECHANISM_REACHABLE: सतह सुलभ लेकिन कर्नेल संस्करण जांचा नहीं गया।VULNERABLE: कर्नेल कमजोर सीमा में और तंत्र सुलभ।INCONCLUSIVE: उपरोक्त में से कोई भी मेल नहीं खाता।यदि --mechanism --kernel-version के साथ चलता है और दोनों समस्या का संकेत देते हैं, तो परिणाम उपचार संकेत के साथ VULNERABLE होता है।
algif_aead को ब्लैकलिस्ट करें।
echo 'blacklist algif_aead' | sudo tee /etc/modprobe.d/cve-2026-31431.conf
sudo rmmod algif_aead 2>/dev/null
CONFIG_CRYPTO_USER_API_AEAD=y प्रतीक को vmlinux के अंदर रखता है। केवल कर्नेल अपग्रेड (या kpatch-शैली लाइव पैच) जोखिम का समाधान करता है। टूल यह पता लगाता है।| लक्षण | कारण | समाधान |
|---|---|---|
changelog: error="apt: exit status 100 ... Changelog unavailable for linux-signed-amd64" | Debian/Ubuntu हस्ताक्षरित कर्नेल; apt मिरर स्रोत-pkg चेंजलॉग नहीं परोसता | त्रुटि केवल तब दिखाई देती है जब डिस्क पर फ़ाइल मिरर के दुर्गम होने के अतिरिक्त अनुपलब्ध हो, apt-doc स्थापित करें या मिरर की प्रतीक्षा करें। |
module: ... config_src="" | कोई कर्नेल कॉन्फ़िग पठनीय नहीं (कोई /boot/config-* नहीं, कोई /proc/config.gz नहीं, /boot केवल-रूट है) | रूट के रूप में चलाएँ, या स्वीकार करें कि BuiltIn निर्धारित नहीं किया जा सकता। फैसला अभी भी अन्य सिग्नलों के माध्यम से हल हो सकता है। |
mechanism: error="EAFNOSUPPORT" | कर्नेल CONFIG_CRYPTO_USER_API के बिना बनाया गया, इसलिए होस्ट AF_ALG के माध्यम से कमजोर नहीं है | फैसला LIKELY_NOT_EXPLOITABLE होगा। |