
DaemonSet CVE-2026-31431 (Copy Fail) भेद्यता को कम करने के लिए
Linux kernel में CVE-2026-31431, CVE-2026-43284 और CVE-2026-43500 कमजोरियों के लिए Yandex Managed Kubernetes क्लस्टर के सभी worker-नोड्स पर स्वचालित रूप से mitigation लागू करना।
CVE ID: CVE-2026-43284, CVE-2026-43500
CVE लिंक: https://nvd.nist.gov/vuln/detail/CVE-2026-43284
मूल रिपोर्ट:
संक्षिप्त विवरण:
Dirty Frag - Linux कर्नेल में लॉजिकल कमजोरियों का एक वर्ग है, जो एक अनप्रिविलेज्ड लोकल उपयोगकर्ता को सुपरयूज़र (root) अधिकार प्राप्त करने की अनुमति देता है। शोषण xfrm-ESP और RxRPC सबसिस्टम में दो स्वतंत्र page-cache write-प्रिमिटिव्स को जोड़ता है, जिनमें से प्रत्येक विशेषाधिकार वृद्धि के लिए आत्मनिर्भर है।
Copy Fail 2: Electric Boogaloo - एक स्वतंत्र PoC है जो xfrm-ESP-प्रिमिटिव (CVE-2026-43284) का शोषण करता है। कमजोरी के वर्ग के अनुसार यह मूल Copy Fail (CVE-2026-31431) के समान है, इसलिए यह DaemonSet मूल AF_ALG-परिदृश्य और नए Dirty Frag वेरिएंट दोनों के लिए mitigation बनाए रखता है।
हमला:
kernel panic नहीं होताpage cache पूरे नोड के लिए साझा हैदोनों वेरिएंट का मूल कारण एक ही है: splice() / MSG_SPLICE_PAGES का उपयोग करते समय कर्नेल page cache पेजों को सीधे सॉकेट बफर (skb) के फ्रैगमेंट्स में रखता है। xfrm-ESP और RxRPC सबसिस्टम ऐसे फ्रैगमेंट्स पर in-place डिक्रिप्शन करते हैं, बिना यह जाँचे कि वे प्राइवेट हैं या नहीं। परिणामस्वरूप, हमलावर को किसी भी पठनीय फ़ाइल के page cache में नियंत्रित लेखन मिलता है।
प्रभावित तकनीकें:
net/ipv4/esp4.c / net/ipv6/esp6.c (xfrm-ESP)net/rxrpc/rxkad.c (RxRPC / RxKAD)ESP-in-UDP) और AF_RXRPC के साथ splice() / vmsplice() सिस्टम कॉलCopy Fail (CVE-2026-31431) का mitigation AF_ALG (algif_aead) को ब्लॉक करके अलग से बनाए रखा जाता हैकमजोरी सीधे AF_ALG (algif_aead) को Dirty Frag के हिस्से के रूप में प्रभावित नहीं करती - यह एक अलग Copy Fail (CVE-2026-31431) कमजोरी है। साथ ही, dm-crypt / LUKS, kTLS, in-kernel TLS और UDP-इनकैप्सुलेशन के बिना tunnel मोड में IPsec सीधे प्रभावित नहीं होते।
CVSS v.3.1 के अनुसार हमले का वेक्टर और खतरे का स्तर:
आधार स्कोर: प्रकाशन के समय निर्दिष्ट नहीं।
प्रकृति के अनुसार कमजोरी Copy Fail (CVE-2026-31431, 7.8 HIGH, CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) के समान है - यह race condition के बिना लोकल विशेषाधिकार वृद्धि है।
DaemonSet क्लस्टर के प्रत्येक worker नोड पर स्वचालित रूप से:
AF_ALG की उपलब्धता की जाँच करता है - मूल Copy Fail परिदृश्य के लिए त्वरित परीक्षण करता हैalgif_aead, esp4, esp6 और rxrpc के लिए नियमों के साथ /etc/modprobe.d/blacklist-lpe.conf बनाता हैalgif_aead, esp4, esp6 और rxrpc के लिए rmmod निष्पादित करता हैpage cache रीसेट करता है और कॉन्फ़िगरेशन सत्यापित करता है - कैश साफ़ करता है और कॉन्फ़िगरेशन फ़ाइल की उपस्थिति की जाँच करता हैwget https://raw.githubusercontent.com/yandex-cloud-examples/yc-mk8s-copy-fail-mitigation/main/copy-fail-mitigation-daemonset.yaml
या रिपॉजिटरी क्लोन करें:
git clone https://github.com/yandex-cloud-examples/yc-mk8s-copy-fail-mitigation.git
cd yc-mk8s-copy-fail-mitigation
kubectl apply -f copy-fail-mitigation-daemonset.yaml
# DaemonSet की स्थिति जाँचें
kubectl get daemonset -n kube-system cve-2026-31431-fix
# देखें कि फिक्स कितने नोड्स पर लागू किया गया है
kubectl get pods -n kube-system -l app=cve-2026-31431-fix -o wide
# initContainer के लॉग (फिक्स आवेदन)
kubectl logs -n kube-system -l app=cve-2026-31431-fix -c apply-fix
# मुख्य कंटेनर के लॉग (निगरानी)
kubectl logs -n kube-system -l app=cve-2026-31431-fix -c monitor
=========================================
Copy Fail / Dirty Frag mitigation for Yandex Managed K8s
Node: demo-ru-central1-a-1
Date: Thu May 08 14:00:00 UTC 2026
=========================================
Step 1: Checking vulnerability before fix...
❌ System is VULNERABLE - AF_ALG AEAD interface is accessible
Step 2: Creating modprobe configuration...
✓ Created /etc/modprobe.d/blacklist-lpe.conf
Step 3: Unloading vulnerable modules...
✓ algif_aead unloaded
✓ esp4 not loaded
✓ esp6 not loaded
✓ rxrpc not loaded
Step 3.5: Dropping system caches...
✓ System caches cleared
Step 4: Verifying the fix...
✓ Configuration file exists:
install algif_aead /bin/false
install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false
Step 5: Testing if vulnerability is fixed...
✓ AF_ALG AEAD interface is properly blocked
=========================================
✓ Mitigation applied successfully
=========================================
आप नोड पर कमजोरी की उपस्थिति मैन्युअल रूप से जाँच सकते हैं। SSH के माध्यम से नोड से कनेक्ट करें और निष्पादित करें:
# AF_ALG के माध्यम से मूल Copy Fail परिदृश्य की उपलब्धता जाँचें
python3 -c 'import socket; s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0); s.bind(("aead","authencesn(hmac(sha256),cbc(aes))")); print("AF_ALG AEAD available - VULNERABLE")'
# यदि "AF_ALG AEAD available - VULNERABLE" आउटपुट होता है - सिस्टम कमजोर है
# यदि त्रुटि आती है - सिस्टम सुरक्षित है
कॉन्फ़िगरेशन जाँचें:
# ब्लॉकिंग कॉन्फ़िगरेशन की उपस्थिति जाँचें
cat /etc/modprobe.d/blacklist-lpe.conf
# अपेक्षित आउटपुट:
# install algif_aead /bin/false
# install esp4 /bin/false
# install esp6 /bin/false
# install rxrpc /bin/false
जाँचें कि कमजोर मॉड्यूल लोड नहीं हैं:
lsmod | egrep 'algif_aead|esp4|esp6|rxrpc'
यदि DaemonSet को हटाना आवश्यक है:
kubectl delete -f copy-fail-mitigation-daemonset.yaml
महत्वपूर्ण: DaemonSet को हटाने से नोड्स से कॉन्फ़िगरेशन फ़ाइलें नहीं हटेंगी। फ़ाइल /etc/modprobe.d/blacklist-lpe.conf अपनी जगह पर रहेगी और सिस्टम की सुरक्षा जारी रखेगी।
नोड्स से फिक्स को पूरी तरह से हटाने के लिए, प्रत्येक नोड से SSH के माध्यम से कनेक्ट करें और फ़ाइल को मैन्युअल रूप से हटाएं:
rm /etc/modprobe.d/blacklist-lpe.conf
उपयोग की गई अनुमतियाँ:
hostPID: true - nsenter के माध्यम से होस्ट प्रक्रियाओं तक पहुँच के लिएprivileged: true - /etc में लिखने और कर्नेल मॉड्यूल अनलोड करने के लिए/ - होस्ट फ़ाइल सिस्टम तक पहुँच के लिएइमेज: ubuntu:22.04
संसाधन:
Namespace: kube-system
Apache License 2.0
विवरण के लिए LICENSE देखें।
समस्याओं के मामले में रिपॉजिटरी में issue बनाएं।