
CVE-2026-31431 का विश्लेषण करता है, जो Linux कर्नेल AF_ALG AEAD भेद्यता है, जो एक सुरक्षित डिटेक्टर, इन-लैब LPE एक्सप्लॉइट, और सत्यापन के लिए QEMU-आधारित A/B कर्नेल लैब प्रदान करता है।
algif_aead "कॉपी फेल": विश्लेषणCVE-2026-31431 (CVSS 3.1 7.8 उच्च,
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) पर सुरक्षा अनुसंधान: AF_ALG AEAD इंटरफ़ेस श्रृंखला में तीन संयोजनीय डिज़ाइन
दोष एक नियतात्मक, रेस-मुक्त 4-बाइट पेज-कैश राइट में किसी भी पठनीय फ़ाइल के किसी भी ऑफ़सेट पर बदल जाते हैं —
डिस्क कॉपी साफ़ रहती है, इसलिए ऑन-डिस्क चेकसम कुछ नहीं देखते।
सार्वजनिक एक्सप्लॉइट ("कॉपी फेल", Theori/Xint) इसे 732 बाइट्स Python के साथ स्थानीय रूट (LPE) में बदल देता है;
यह बग 2017 से 2026 तक हर कर्नेल में मौजूद था।
72548b093ee3 (2017) ने _aead_recvmsg को इन-प्लेस डिक्रिप्ट करने योग्य बनाया,
अनुरोध के टैग पेजों को लिखने योग्य गंतव्य SGL में जोड़ते हुए।splice(file → pipe → socket) उन टैग स्लॉट्स को किसी भी पठनीय फ़ाइल के पेज-कैश पेज खिलाता है (शून्य कॉपी)।authencesn अपना 4-बाइट ESN स्क्रैच लिखता है — मान sendmsg पेलोड के में सवार होता है — ठीक
पर, यानी पहला टैग बाइट: आपका चुना हुआ फ़ाइल ऑफ़सेट। यह टैग सत्यापन से फायर होता है,
इसलिए अनुरोध भी राइट करता है।AAD[4..8)dst[assoclen + cryptlen]-EBADMSG| दावा | साक्ष्य |
|---|---|
| मूल कारण फिक्स कमिट और कर्नेल स्रोतों से लिया गया, ब्लॉग से नहीं | finding-sheet |
| सार्वजनिक PoC डिकोड सिस्कॉल अनुक्रम के विरुद्ध एंड-टू-एंड सत्यापित | finding-sheet |
| डेल्टा = ठीक फिक्स कमिट वाले लैब A/B कर्नेल, दोनों बूट होते हैं | lab/scripts/build.sh + lab/out/ab-diffstat.txt |
असुरक्षित कर्नेल AF_ALG के माध्यम से authencesn AEAD डिक्रिप्ट निष्पादित करता है (स्मोक) | lab/scripts/run.sh vuln → SMOKE=ok |
साथी-बिना रिवर्ट crypto_authenc_esn_decrypt में पैनिक करता है (मूल खोज) | lab/scripts/run.sh patched → NULL deref, पुनरुत्पादनीय |
| सुरक्षित डिटेक्टर: vuln पर VULNERABLE (राइट EBADMSG के बावजूद फायर होता है, डिस्क CLEAN रहती है), पूर्ण-फिक्स पर NOT-DETECTED | poc/detector.c लैब में → DETECTOR-RESULT पंक्तियाँ |
| लैब-में LPE समापन: uid 1000 एक SUID बाइनरी के 4 पेज-कैश बाइट्स पैच करता है और रूट-केवल फ़्लैग पढ़ता है; डिस्क कॉपी ब्लॉक-स्तरीय debugfs रीड के माध्यम से शुद्ध सिद्ध | poc/lpe.c + lab/rootfs/tools/secretgate.c → LPE-RESULT: ROOT-FLAG-CAPTURED, DISKCLEAN=ok |
| सार्वजनिक पेज-कैश राइट को पिन किए गए लैब में, एट्रिब्यूशन के साथ पुनरुत्पादित करें | उपरोक्त डिटेक्टर आउटपुट + lab README |
| SGL तनाव: दोनों कर्नेल पर 5 आकृतियाँ — कोई क्रैश नहीं, कोई कर्नेल हैंग नहीं (ईमानदार नकारात्मक) + दो प्रलेखित AF_ALG अनुबंध विचित्रताएँ | poc/sgl-stress.c लैब में → SGL-STRESS पंक्तियाँ |
# तीन कर्नेल + उपकरण + प्रोब डिस्क Docker में बनाएं (~15 मिनट पहली बार)
lab/scripts/build.sh
# A/B/C ओरेकल बूट करें (Docker में QEMU, KVM उपलब्ध होने पर)
lab/scripts/run.sh vuln # DETECTOR VULNERABLE + LPE ROOT-FLAG-CAPTURED + DISKCLEAN=ok
lab/scripts/run.sh patchedfull # DETECTOR NOT-DETECTED + LPE NOT-VULNERABLE
lab/scripts/run.sh patched # authencesn NULL deref (साथी-फिक्स अंतराल)
पूर्ण पेज-कैश-राइट श्रृंखला Theori / Xint Code ("कॉपी फेल", मान्यता प्राप्त रिपोर्टर) के प्रकाशित दृष्टिकोण का अनुसरण करती है,
एट्रिब्यूशन के साथ — finding-sheet पूर्व-कार्य अनुभाग देखें। इस रिपॉजिटरी में मौलिक कार्य:
फिक्स-कमिट-एंकरित यांत्रिकी मानचित्र, अपूर्ण-फिक्स-श्रृंखला खोज (साथी-बिना रिवर्ट
authencesn पैनिक और इसकी स्थिर-रिलीज़ विंडो), सुरक्षित
पेज-कैश-बनाम-डिस्क विभेदक डिटेक्टर जो उन फ़ाइलों को कभी नहीं छूता जिनके हम मालिक नहीं हैं,
उद्देश्य-निर्मित SUID लक्ष्य के विरुद्ध लैब-में LPE समापन
(secretgate — किसी वास्तविक-विश्व बाइनरी को कभी लक्षित नहीं किया जाता), SGL किनारा
अन्वेषण (ईमानदार नकारात्मक परिणाम प्लस दो प्रलेखित AF_ALG
अनुबंध विचित्रताएँ), और सभी आठ फिक्स कमिटों का सत्यापित शाखा एट्रिब्यूशन।
| दस्तावेज़ | यह क्या है |
|---|---|
| docs/finding-sheet.md | एक-पृष्ठ डेटाशीट: संस्करण, CVSS, मूल कारण, फिक्स कमिट, हमला सतह |
| docs/report-ptes.md | PTES-संरचित रिपोर्ट (7 चरण) लैब साक्ष्य के साथ |
| docs/research-writeup.md | अनुसंधान वर्णन — पद्धति, मृत अंत, पोर्टेबल पाठ, पूर्व-कार्य तुलना |
docs/ फाइंडिंग शीट · PTES रिपोर्ट · अनुसंधान राइटअप
poc/ detector.c (सुरक्षित ओरेकल) · lpe.c (लैब-में LPE) · sgl-stress.c (SGL अन्वेषण)
lab/ QEMU कर्नेल लैब: 5.15.203 ± फिक्स (A/B) + पोस्ट-साथी 5.15.y (C)
lab/rootfs/ secretgate.c — उद्देश्य-निर्मित SUID लक्ष्य (केवल चीज़ जिस पर कभी हमला किया गया)
72548b093ee3 "crypto: algif_aead - copy AAD from src to dst" (2017)a664bf3d603d "crypto: algif_aead - Revert to operating out-of-place"
(+ 8 स्थिर बैकपोर्ट — finding-sheet देखें)शैक्षिक अनुसंधान कलाकृति। केवल उन प्रणालियों पर चलाएं जिनके आप मालिक हैं या जिनके परीक्षण के लिए स्पष्ट रूप से अधिकृत हैं। कमजोरी पैच की गई है — 2026 स्थिर शाखाओं या बाद के अद्यतित कर्नेल चलाएं।