
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, वैकल्पिक ओवरफ्लो परिवार, सर्वाइवल ओरेकल) — देखें , । ये क्लोज़र per-scope हैं; 112k-फ़ंक्शन बाइनरी का ठीक वही जगह है जहाँ APT का गायब प्रिमिटिव रहना चाहिए। यह ट्रैक "अगली सतह का अनुमान लगाना" को से बदल देता है।
../RCE_BLOCKERS.md../NEW_ROADS_TO_CODE_EXECUTION.mdक्रिटिकल पथ के सापेक्ष स्थिति: ज्ञात चेन का कठिन गेट 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 ()। अगला: लैब NTLM प्रोब (पोस्ट-20362) — यदि / 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) को मात देता है।0x7f..0x55..