
Ansible प्लेबुक्स CVE-2026-31431 ("Copy Fail") का ऑडिट और शमन करने के लिए, जो Linux कर्नेल के `algif_aead` मॉड्यूल में एक स्थानीय विशेषाधिकार वृद्धि भेद्यता है, जो 2017 से सभी प्रमुख वितरणों को प्रभावित करती है।
Linux कर्नेल
algif_aeadविशेषाधिकार वृद्धि / मेमोरी भ्रष्टाचार
Ansible-आधारित ऑडिट और शमन प्लेबुक — प्रोडक्शन में चलाने के लिए तैयार
कॉपी फेल (CVE-2026-31431) Linux कर्नेल के
algif_aead मॉड्यूल में एक भेद्यता है — AF_ALG
क्रिप्टो सॉकेट परिवार का उपयोगकर्ता-सामना करने वाला AEAD इंटरफ़ेस।
AEAD अनुरोध हैंडलर के अंदर कर्नेल के copy_*user पथ में एक दोष
एक स्थानीय अन-विशेषाधिकार प्राप्त उपयोगकर्ता को एक दोषपूर्ण सॉकेट अनुरोध बनाकर
कर्नेल मेमोरी को भ्रष्ट करने या विशेषाधिकार बढ़ाने की अनुमति देता है।
| फ़ील्ड | विवरण |
|---|
| CVE ID | CVE-2026-31431 |
| उपनाम | कॉपी फेल |
| घटक | Linux कर्नेल — algif_aead (net/socket.c, crypto/algif_aead.c) |
| हमला वेक्टर | स्थानीय |
| आवश्यक विशेषाधिकार | निम्न (अन-विशेषाधिकार प्राप्त उपयोगकर्ता) |
| प्रभाव | कर्नेल मेमोरी भ्रष्टाचार / स्थानीय विशेषाधिकार वृद्धि |
| पैच किया गया | अपस्ट्रीम कर्नेल पैच प्रगति पर — अपने डिस्ट्रो विक्रेता से जाँचें |
| वितरण | प्रभावित संस्करण | स्थिति |
|---|---|---|
| Ubuntu 22.04 / 24.04 | पैच किए गए रिलीज़ से कम कर्नेल | पैच लंबित — Ubuntu USN देखें |
| Debian 12 (Bookworm) | पैच किए गए रिलीज़ से कम कर्नेल | पैच लंबित |
| RHEL / AlmaLinux / Rocky 8 & 9 | पैच किए गए रिलीज़ से कम कर्नेल | पैच लंबित |
| Amazon Linux 2 / 2023 | पैच किए गए रिलीज़ से कम कर्नेल | पैच लंबित |
| सामान्य अपस्ट्रीम | algif_aead संकलित या स्वतः-लोडेड | मॉड्यूल मौजूद होने पर असुरक्षित |
एक सिस्टम तत्काल जोखिम में नहीं है यदि
algif_aeadलोड नहीं है और कोई उपयोगकर्ता-स्थान टूलिंग इसे मांग पर लोड नहीं करती (ऑडिट चरण 1 देखें)।
| सबसिस्टम | इस CVE से प्रभावित? | शमन से प्रभावित? |
|---|---|---|
| dm-crypt / LUKS | नहीं | नहीं |
| kTLS | नहीं | नहीं |
| IPsec / StrongSwan | नहीं | नहीं |
| OpenSSL (डिफ़ॉल्ट बिल्ड) | नहीं | नहीं |
| GnuTLS / NSS | नहीं | नहीं |
| OpenSSH | नहीं | नहीं |
| OpenSSL afalg इंजन | संभावित रूप से हाँ | हाँ — लागू करने से पहले समीक्षा करें |
kcapi-enc / kcapi-dgst टूल | हाँ | हाँ |
.
├── audit_algif_aead.yml # चरण 1 — ऑडिट: प्रति होस्ट जोखिम का पता लगाएं
├── mitigate_copyfail.yml # चरण 2 — शमन: मॉड्यूल अनलोड + ब्लैकलिस्ट करें
└── README.md # यह दस्तावेज़
community.general संग्रह (ansible-galaxy collection install community.general)become: true (sudo)lsof स्थापित (आमतौर पर डिफ़ॉल्ट रूप से मौजूद)inventory.ini gitignored है — यह स्थानीय रहता है और कभी रिपॉजिटरी तक नहीं पहुँचता।
inventory.ini.example प्रतिबद्ध टेम्पलेट है जिससे हर कोई शुरू करता है।
# क्लोन और तैयारी
git clone https://github.com/your-org/copy-fail-CVE-2026-31431.git
cd copy-fail-CVE-2026-31431
cp inventory.ini.example inventory.ini
# inventory.ini को अपने वास्तविक होस्ट के साथ संपादित करें, फिर चलाएं:
ansible-playbook -i inventory.ini audit_algif_aead.yml
इन्फ्रास्ट्रक्चर डेटा लीक होने से रोकने के लिए निम्नलिखित पथ gitignored हैं:
| Gitignored पथ | क्यों |
|---|---|
inventory.ini | वास्तविक होस्टनाम / IP |
inventories/ | कोई भी स्थानीय इन्वेंटरी निर्देशिका |
copyfail_reports/ | ऑडिट आउटपुट में कर्नेल संस्करण, प्रक्रिया सूचियाँ शामिल हैं |
.vault_pass | Ansible Vault पासवर्ड फ़ाइल |
*.retry | Ansible रीट्राई आर्टिफैक्ट |
कुछ भी छूने से पहले ऑडिट प्लेबुक चलाएं। यह प्रति-होस्ट साक्ष्य एकत्र करता है और स्थानीय रूप से और प्रत्येक लक्ष्य पर एक रिपोर्ट लिखता है।
ansible-playbook -i inventory.ini audit_algif_aead.yml
रिपोर्ट ./copyfail_reports/<hostname>_audit.txt में लाई जाती हैं।
| जाँच | कमांड | निर्णय |
|---|---|---|
| कर्नेल संस्करण | uname -r | सूचनात्मक |
| मॉड्यूल लोडेड? | lsmod | grep algif_aead | लोडेड = जोखिम |
| सक्रिय AF_ALG सॉकेट | lsof | grep AF_ALG | उपयोगकर्ता मिले = समीक्षा आवश्यक |
| OpenSSL afalg इंजन | openssl engine | grep afalg | सक्रिय = प्रभाव की समीक्षा करें |
| kcapi टूल मौजूद | which kcapi-* | मौजूद = संभावित उपयोगकर्ता |
| शमन पहले से लागू | stat /etc/modprobe.d/disable-algif.conf | मौजूद = पहले से शमित |
| स्थिति | अनुशंसित कार्रवाई |
|---|---|
| मॉड्यूल लोडेड नहीं | कम तत्काल जोखिम — कर्नेल पैच के लिए निगरानी करें |
| मॉड्यूल लोडेड, कोई AF_ALG सॉकेट उपयोगकर्ता नहीं | शमन लागू करना सुरक्षित |
| मॉड्यूल लोडेड और AF_ALG उपयोगकर्ता सक्रिय | शमन लागू करने से पहले प्रक्रियाओं की समीक्षा करें |
| शमन फ़ाइल पहले से मौजूद | शमन पहले लागू किया गया था — सत्यापित करें |
पहले ऑडिट चलाएं। शमन प्लेबुक सुरक्षित रूप से इडेम्पोटेंट रूप से चलाने योग्य है लेकिन ऑडिट आपको साक्ष्य ट्रेल देता है।
ansible-playbook -i inventory.ini mitigate_copyfail.yml
ansible-playbook -i inventory.ini mitigate_copyfail.yml \
-e '{"skip_hosts": ["db-prod-01", "hsm-node-02"]}'
install algif_aead /bin/false के साथ /etc/modprobe.d/disable-algif.conf बनाता हैalgif_aead मॉड्यूल अनलोड करता है (प्रारंभिक सुरक्षा के लिए रीबूट की आवश्यकता नहीं)update-initramfs, RHEL पर dracut --force)/var/backup/copyfail_mitigation/mitigation.log में टाइमस्टैम्प्ड लॉग लिखता हैमेमोरी से मॉड्यूल हटाने के लिए रीबूट आवश्यक नहीं है।
ब्लैकलिस्ट प्रभावी होने की पुष्टि करने और शमन के बाद की स्वच्छ स्थिति स्थापित करने के लिए रीबूट अभी भी अनुशंसित है।
प्लेबुक पूरा होने के बाद, किसी भी लक्ष्य होस्ट पर सत्यापित करें:
# मॉड्यूल दिखाई नहीं देना चाहिए
lsmod | grep algif_aead
# ब्लैकलिस्ट फ़ाइल मौजूद होनी चाहिए और install लाइन शामिल होनी चाहिए
cat /etc/modprobe.d/disable-algif.conf
# मैनुअल लोड अस्वीकार किया जाना चाहिए
sudo modprobe algif_aead # अपेक्षित: FATAL: Module algif_aead not found or refused
एक बार आपका विक्रेता पैच किया गया कर्नेल जारी करता है और आपने इसे लागू कर लिया है:
# प्रत्येक होस्ट पर — ब्लैकलिस्ट हटाएं
sudo rm /etc/modprobe.d/disable-algif.conf
# initramfs पुनर्निर्माण करें
sudo update-initramfs -u # Debian / Ubuntu
sudo dracut --force # RHEL / CentOS / Amazon Linux
# पैच किए गए कर्नेल में रीबूट करें
sudo reboot
MIT License के तहत जारी।
अपने जोखिम पर उपयोग करें। प्रोडक्शन सिस्टम पर लागू करने से पहले हमेशा स्टेजिंग वातावरण में सत्यापित करें।
समुदाय द्वारा अनुरक्षित। PR और मुद्दा रिपोर्ट का स्वागत है।