
# CVE-2026-31431 के लिए अनुसंधान और पहचान मार्गदर्शन CVE-2026-31431 के लिए अनुसंधान और पहचान मार्गदर्शन, जो syscall निगरानी का io_uring-आधारित बायपास है। Tetragon, Falco और Wazuh के लिए पहचान नियम, साथ ही सुरक्षा सुदृढ़ीकरण रणनीतियाँ प्रदान करता है।
CVE-2026-31431 ("Copy Fail") के लिए, हमने तीन बायपास रणनीतियों को मिलाकर मुख्यधारा के सुरक्षा उत्पादों में व्यवस्थित कमजोरियों का प्रदर्शन किया: io_uring async I/O पथ, प्रोसेस स्प्लिटिंग (fork + SCM_RIGHTS), और सॉकेट पुन: उपयोग। अनुभवजन्य परीक्षण के माध्यम से, हमने साबित किया कि ये तकनीकें लगभग सभी syscall-आधारित डिटेक्शन टूल्स को बायपास कर सकती हैं।
io_uring साझा मेमोरी रिंग बफर के माध्यम से अनुरोध सबमिट करता है, जो पारंपरिक syscall एंट्री पॉइंट्स को बायपास करता है। इसका मतलब है:
iou-wrk-XXXXX) कर्नेल के अंदर ऑपरेशन निष्पादित करते हैं बिना audit_syscall_entry() को ट्रिगर किएsocket(AF_ALG) को ब्लॉक करती हैं, उन्हें IORING_OP_SOCKET के माध्यम से बायपास किया जा सकता है — seccomp केवल syscall एंट्री पर जांच करता है, और io_uring ऑपरेशन उस एंट्री से नहीं गुजरतेfork + SCM_RIGHTS (यूनिक्स डोमेन सॉकेट fd पासिंग) का उपयोग करके, सॉकेट निर्माण और splice ऑपरेशन को विभिन्न प्रक्रियाओं में रखा जा सकता है:
same_field(audit.pid) सहसंबंध टूट जाता है — सॉकेट PID ≠ splice PID, CRITICAL नियम फायर नहीं होतामूल PoC प्रति पुनरावृत्ति एक नया सॉकेट बनाता है (40+ socket(AF_ALG) कॉल उत्पन्न करता है)। सॉकेट पुन: उपयोग केवल एक लिसनिंग सॉकेट बनाता है; लूप accept() को कॉल करता है जो नए सॉकेट इवेंट उत्पन्न नहीं करता। count >= N पर आधारित नियम पूरी तरह से विफल हो जाते हैं।
io_uring पथ + splice + /etc/passwd + authenc एल्गोरिदम + SCM_RIGHTS स्प्लिटिंग + सॉकेट पुन: उपयोग
इस संयोजन के तहत: syscall-आधारित उपकरण पूरी तरह से अंधे हैं, प्रोसेस-स्तरीय सहसंबंध टूट गया है, काउंट थ्रेशोल्ड विफल हो जाते हैं। केवल kprobe अभिसरण-बिंदु डिटेक्शन इस संयोजन को पकड़ सकता है।
__sock_create(family=38) सभी पथों (syscall और io_uring) के लिए एक अबायपासेबल अभिसरण बिंदु है — AF_ALG लिनक्स कर्नेल में एकमात्र यूजरस्पेस क्रिप्टो API है। हमलावर अपने दृष्टिकोण को कैसे भी बदलें, उन्हें एक AF_ALG सॉकेट बनाना ही होगा। LSM स्तर पर इस फ़ंक्शन की निगरानी 100% रिकॉल प्रदान करती है और किसी भी वेरिएंट से अप्रभावित रहती है।
| उत्पाद | डिटेक्शन परत | पारंपरिक Syscall | io_uring पथ | मल्टी-प्रोसेस स्प्लिट | सॉकेट पुन: उपयोग | मूल्यांकन |
|---|---|---|---|---|---|---|
| Tetragon (kprobe) | कर्नेल फ़ंक्शन | ✅ | ✅ | ✅ | ✅ | केवल पूर्ण-श्रृंखला कवरेज |
| Falco + krsi प्लगइन | fexit/fentry | ✅ | ✅ | ✅ | ✅ | io_uring के लिए krsi आवश्यक; केवल एंट्री |
| Falco (modern_ebpf) | syscall tracepoint | ✅ | ❌ | ✅ | ✅ | io_uring पूरी तरह से अदृश्य |
| auditd / Wazuh | syscall ऑडिट | ✅ | ❌ | ❌ PID टूटा | ⚠️ | io_uring अंधा + PID सहसंबंध टूटा |
| Elastic Security Agent | syscall | ✅ | ❌ | ⚠️ | ⚠️ | Wazuh के समान; syscall-निर्भर = अंधा |
Falco का मूल modern_ebpf ड्राइवर केवल syscall पथ को कैप्चर करता है। krsi प्लगइन आवश्यक है — यह AF_ALG सॉकेट निर्माण के लिए io_uring पथ को कवर करने हेतु io_socket() और __sys_socket() कर्नेल फ़ंक्शन निकास पर fexit ट्रेसिंग का उपयोग करता है। अनुशंसित फॉलबैक नियम:
- rule: AF_ALG Socket Created
condition: >
(evt.type = socket and evt.args contains AF_ALG) or
(evt.type = krsi_socket and krsi.domain = 38)
output: >
AF_ALG socket created (source=%evt.type domain=%evt.arg.domain
krsi_domain=%krsi.domain proc=%proc.name pid=%proc.pid)
priority: WARNING
tags: [cve-2026-31431, crypto, container_escape]
अनुशंसित नियम का डिटेक्शन दृष्टिकोण: एक साथ socket इवेंट (syscall पथ, ENUMFLAGS32 प्रकार सीमा को बायपास करने के लिए evt.args contains AF_ALG स्ट्रिंग मिलान का उपयोग करके) और krsi_socket इवेंट (io_uring पथ, krsi.domain = 38 पूर्णांक तुलना का उपयोग करके) को कवर करता है। कोई काउंट थ्रेशोल्ड नहीं (सॉकेट पुन: उपयोग से विफल), कोई PID सहसंबंध निर्भरता नहीं (मल्टी-प्रोसेस स्प्लिटिंग से विफल)।
नोट: समुदाय का ThreatBear नियम के तीन डिफेंस स्तर सभी बायपासेबल हैं — ENUMFLAGS32 प्रकार बेमेल (evt.arg[0]=38 हमेशा गलत), सॉकेट पुन: उपयोग काउंट थ्रेशोल्ड को विफल करता है (count=1 < 40), मल्टी-प्रोसेस स्प्लिटिंग PID सहसंबंध को तोड़ता है। देखें नियम बायपास विश्लेषण।
Wazuh पूरी तरह से auditd के syscall ऑडिट इवेंट पर निर्भर करता है। io_uring ऑपरेशन syscall एंट्री से नहीं गुजरते, इसलिए auditd शून्य इवेंट उत्पन्न करता है और सभी 7 Wazuh नियम विफल हो जाते हैं। यही बात Elastic Security Agent पर भी लागू होती है — syscall-एंट्री-निर्भर उत्पाद संरचनात्मक रूप से io_uring पथ के प्रति अंधे हैं। देखें Wazuh सीमाएं विश्लेषण।
bypass_demo/ निर्देशिका में डिटेक्शन बायपास दृष्टिकोणों के अवधारणात्मक विवरण शामिल हैं। वास्तविक PoC कोड केवल आंतरिक उपयोग के लिए है और सार्वजनिक रूप से वितरित नहीं किया जाता है।
| दस्तावेज़ | सामग्री |
|---|---|
| VULNERABILITY.md | मूल कारण — तीन कर्नेल परिवर्तनों का ओवरले, 9-चरणीय हमला श्रृंखला, पेज कैश लेखन विशेषताएं |
| EXPLOIT_VARIANTS.md | 6 शोषण वेरिएंट आयाम — I/O पथ × डेटा सबमिशन × लक्ष्य फ़ाइल × AEAD एल्गोरिदम × प्रोसेस स्प्लिटिंग × सॉकेट पुन: उपयोग |
| DETECTION_THEORY.md | डिटेक्शन सिद्धांत — अभिसरण बनाम विचलन बिंदु, 4-परत डिटेक्शन आर्किटेक्चर, मल्टी-सिग्नल अस्थायी सहसंबंध |
| दस्तावेज़ | सामग्री |
|---|---|
| detection/tetragon.md | अनुशंसित — Tetragon kprobe, पारंपरिक + io_uring को कवर करने वाले 5 प्रोब, केवल पूर्ण-श्रृंखला डिटेक्शन |
| detection/falco.md | Falco 0.40.0 + krsi 0.1.0 कॉन्फ़िगरेशन गाइड, krsi आंतरिक, समस्या निवारण |
| detection/wazuh.md | Wazuh + auditd तीन प्रमुख सीमाएं: io_uring अंधापन, PID सहसंबंध टूटना, पेज कैश अदृश्यता |
| detection/rule_bypass.md | ThreatBear नियम बायपास सिद्धांत, अनुशंसित नियम एंटी-बायपास अनुभवजन्य सत्यापन |
| दस्तावेज़ | सामग्री |
|---|---|
| defense/HARDENING.md | 3-परत डिफेंस मॉडल: कर्नेल कॉन्फ़िग → seccomp → यूजर नेमस्पेस; Docker 29.4.2 सुरक्षा विश्लेषण |