
Cisco ASA के lina बाइनरी का व्यवस्थित रिवर्स इंजीनियरिंग, मेमोरी कॉरप्शन कमजोरियों की खोज और विश्लेषण करने के लिए, जिसमें CVE-2025-20333 और CVE-2025-20362 शामिल हैं, जिसका मुख्य ध्यान रिमोट कोड एक्ज़ीक्यूशन प्रिमिटिव्स खोजने पर है।
lina की पूर्ण-कवरेज रिवर्स इंजीनियरिंगनिर्मित: 2026-08-12
लक्ष्य: lab_asav9-12-4-67/lina (ASAv 9.12(4)67, ELF x86-64, PIE; Ghidra इमेज बेस 0x100000; 112,687 फ़ंक्शन, ~167 MB मैप्ड, 642,707 सिंबल)
ट्रैक लक्ष्य: lina बाइनरी का व्यवस्थित, पूर्ण RE कवरेज — अब तक किए गए हाइपोथीसिस-संचालित लक्षित RE का पूरक — उस प्रिमिटिव की खोज के लिए जो लैब को अभी तक नहीं मिला है (20362+20333 पर बिना-प्रमाणीकरण वाइल्ड रूट RCE सिद्ध है, इसलिए यह मौजूद है)।
पिछला सारा RE लक्षित था (फॉल्ट-PC डीकंपाइल, स्ट्रिंग-एंकर xref वॉक, बाइंडिंग-रेंज स्वीप)। इसने हर ऑडिट किए गए दायरे को बंद किया (H4-1/2/3/4, tostring(userdata) रिफ्लेक्शन, SSH/SNMP/IKE %p, वैकल्पिक ओवरफ्लो परिवार, सर्वाइवल ओरेकल) — देखें ../RCE_BLOCKERS.md, ../NEW_ROADS_TO_CODE_EXECUTION.md। ये क्लोज़र per-scope हैं; 112k-फ़ंक्शन बाइनरी का बिना-ऑडिट किया गया शेष ठीक वही जगह है जहाँ APT का गायब प्रिमिटिव रहना चाहिए। यह ट्रैक "अगली सतह का अनुमान लगाना" को कवरेज से बदल देता है।
क्रिटिकल पथ के सापेक्ष स्थिति: ज्ञात चेन का कठिन गेट P0 (लाइव रिमोट इन्फोलीक) बना हुआ है; CIFS readdir ओवर-रीड (चरण 19i, 4-बाइट विंडो) ही एकमात्र अनुभवजन्य रूप से पुष्टि किया गया लीक है और यह अग्रभूमि अनुभवजन्य ट्रैक बना रहता है। LINA_FULL_RE व्यवस्थित हेज है: बिना-ऑडिट किए कोड में एक बेहतर लीक/प्रिमिटिव खोजें, या सिद्ध करें कि कोई मौजूद नहीं है।
0x55.. (lina) या 0x7f.. (libc/heap) qword उत्सर्जित कर सकता है: फॉर्मेट-स्ट्रिंग एमिटर (पॉइंटर्स पर %p/%lx/%x), ओवर-रीड (लंबाई जो इनिशियलाइज़्ड डेटा द्वारा बाउंड नहीं है), हीप रेसिड्यू का रिफ्लेक्शन, अनइनिशियलाइज़्ड-बफ़र इको।memcpy/memmove/strcpy/strcat/sprintf/vsprintf/gets-क्लास + कस्टम कॉपी लूप), सभी प्रोटोकॉल सतहों पर (केवल उन WebVPN Lua बाइंडिंग्स को छोड़कर जो पहले ही समाप्त हो चुकी हैं — देखें ../LINA_ALT_OVERFLOW_FAMILIES_RE.md)।csco_config) ताकि ट्राइएज हिट्स को वास्तव में वायर से पहुंच योग्य के आधार पर रैंक किया जा सके।(उपयोगकर्ता द्वारा स्थगित: CVE-2025-20363 सिंक हंट — OSINT कहता है कि यह एक लीक का उपभोग करता है, 20333 का सहोदर; देखें ../CVE-2025-20363_OSINT.md।)
| चरण | क्या | टूलिंग | आउटपुट |
|---|---|---|---|
| 1. कॉर्पस | सभी 112,687 फ़ंक्शन को डिस्क पर बैच-डीकंपाइल करें, प्रति फ़ंक्शन एक .c, एड्रेस द्वारा शार्डेड | Ghidra run_script_inline (Java, DecompInterface), चंक्ड + पुनरारंभ योग्य | corpus/<shard>/<addr>.c |
| 2. मैकेनिकल ट्राइएज | सिंक पैटर्न (नीचे लीक + ओवरफ्लो क्लासेस) के लिए कॉर्पस में ripgrep करें | स्थानीय स्क्रिप्ट, triage/ | हिट टेबल (CSV/MD) |
| 3. रीचैबिलिटी फ़िल्टर | नेटवर्क एंट्री पॉइंट्स से पहुंच योग्य फ़ंक्शनों में हिट रखें | Ghidra कॉल-ग्राफ (get_function_call_graph/स्क्रिप्ट) + एंट्री-पॉइंट सीड सूची | रैंक्ड हिट सूची |
| 4. डीप-डाइव | रैंक्ड हिट्स का लक्षित RE (मौजूदा ghidra-re सबएजेंट पैटर्न) | ghidra-mcp | इस फ़ोल्डर में फाइंडिंग्स दस्तावेज़ |
चरण 1 शुद्ध कंप्यूट है (अनुमान: घंटे–दिन, बिना निगरानी, पुनरारंभ योग्य)। चरण 2–3 सस्ते/स्थानीय हैं। चरण 4 ही एकमात्र मानव/LLM-भारी चरण है और फ़नल द्वारा बाउंडेड है।
Research notes/LINA_FULL_RE/
README.md — this file (master plan + status)
TRIAGE.md — sink-pattern catalog + reachability plan (stage 2/3 spec)
scripts/ — decompile + triage + driver scripts
corpus/ — stage-1 output: decompiled functions, sharded (corpus/2c/02c6cc80.c)
_progress.txt — resumable progress marker (done count, last address)
_errors.txt — per-function decompile failures
triage/ — stage-2/3 outputs (hit tables, ranked lists)
findings/ — stage-4 deep-dive writeups (one MD per confirmed candidate)
| चरण | स्थिति | नोट्स |
|---|---|---|
| 1. कॉर्पस | पूर्ण 2026-08-12 (~19:03 UTC-4) | 111,997/111,997 फ़ंक्शन, 0 त्रुटियाँ, corpus/ में 548 MB; scripts/decompile_all.py के माध्यम से 4.3 fn/s की दर से 26,214 s (~7.3 घंटे) लगे (GhidraMCP batch_decompile, 20 fn/call कैप) |
| 2. ट्राइएज | पूर्ण 2026-08-13 | scripts/triage_stage2.py; triage/*_hits.csv में प्रति-क्लास हिट टेबल; triage/RANKED.md में रैंक्ड जॉइन |
| 3. रीचैबिलिटी | पूर्ण 2026-08-13 (पुनः-चलाया गया, सीड्स ठीक किए गए) | कॉर्पस कॉल+रेफ ग्राफ (427,198 एजेस); 111,997 में से 26,291 पहुंच योग्य (23.5%) — preauth 26,278 / admin 13 / post20362 0. सीड्स सही किए गए: रजिस्ट्रार 0317b4e0, सेशन 0317c0a0 (पुराने 030ab4e0/030ac0a0 फ़ंक्शन स्टार्ट नहीं थे)। अभी भी निचली सीमा (vtables)। |
| 4. डीप-डाइव | प्रगति पर 2026-08-17 | L1 बंद। L2 C-पथ GO (स्टैटिक): WebVPN UCTE create_type3_message हमलावर के Type-2 TargetInfo को बिना क्लैंप के कॉपी करता है; लीक Type-3 Authorization: NTLM पर सवार होकर हमलावर के HTTP सर्वर तक वापस पहुँचता है (findings/L2_NTLM_C_PATH_TYPE3.md)। Lua ntlm.parseType2 निष्क्रिय जुड़वां है। O1/O5 प्रोटोकॉल पास बंद (स्टैटिक): IKE/SSH/SNMP/EWS/PDTS कॉपी dest-साइज़्ड, सेंड-साइड, या पहले से ज्ञात हैं (031af6d0 / 02ff2f30)। O1 "अन्य" 725 बंद (स्टैटिक): स्टैक/ग्लोबल/param+const फ़िल्टर → कोई नया dest-ओवरफ्लो GO नहीं; 015a8b30 एक अनक्लैम्प्ड addrtype हेल्पर है जिसके कॉलर केवल AF साइज़ 4/0x10 पास करते हैं (findings/O1_OTHER_SWEEP.md)। O2 बंद (स्टैटिक): 605 पहुंच योग्य कॉपी-लूप; कोई नया dest-ओवरफ्लो GO नहीं। FUN_02fd7270 = ucte_ntlm_authenticate_connection → L2 C-पथ GO के समान create_type3_message (findings/O2_SWEEP.md)। अगला: लैब NTLM प्रोब (पोस्ट-20362) — यदि 0x7f../0x55.. qword दिखाई देता है तो विंडो के मामले में CIFS से बेहतर है। ऐच्छिक स्टैटिक: O3/O4। |
जारी-रखना/नियंत्रण: ड्राइवर उन फ़ंक्शनों को छोड़ देता है जिनकी आउटपुट फ़ाइल पहले से मौजूद है — किसी भी समय जारी रखने के लिए python3 scripts/decompile_all.py पुनः चलाएं। सुगम रोक: touch corpus/STOP। यदि Ghidra या MCP प्लगइन पुनः आरंभ होता है, तो बस ड्राइवर को पुनः चलाएं।
प्लगइन बाधाएँ खोजी गईं (2026-08-12): run_script_inline अक्षम है (GHIDRA_MCP_ALLOW_SCRIPTS अनसेट) → कॉर्पस केवल HTTP बैच एंडपॉइंट्स का उपयोग करता है; batch_decompile ?functions=0x..,0x..,.. को GET क्वेरी पैरामीटर के रूप में लेता है (JSON बॉडी नहीं) और प्रतिक्रियाओं को चुपचाप 20 फ़ंक्शनों तक ट्रंकेट करता है → ड्राइवर चंक साइज़ = 20।
list_functions द्वारा लौटाए गए (सत्यापित: corpus/02/02c6cc80.c = luaH_get = RVA 0x2c6cc80)। ध्यान दें: GhidraMCP HTTP प्लगइन RVA-शैली एड्रेस रिपोर्ट करता है, नहीं Ghidra VA = RVA + 0x100000।../RCE_BLOCKERS.md / ../TODO.md का हवाला दें।0x55.. बनाम 0x7f.. बनाम हीप), और क्या यह विश्वसनीयता पर CIFS readdir प्रिमिटिव (चरण 19i) को मात देता है।