హానికరమైన ఫైల్‌ను తెరిచేటప్పుడు కోడ్ అమలుకు దారితీసే Vimలోని దుర్బలత్వం

టెక్స్ట్ ఎడిటర్లలో vim и నియోవిమ్ కనుగొన్నారు దుర్బలత్వం (CVE-2019-12735), ఇది ప్రత్యేకంగా రూపొందించిన ఫైల్‌ను తెరిచేటప్పుడు ఏకపక్ష కోడ్‌ని అమలు చేయడానికి అనుమతిస్తుంది. డిఫాల్ట్ మోడలైన్ మోడ్ (“:సెట్ మోడలైన్”) సక్రియంగా ఉన్నప్పుడు సమస్య ఏర్పడుతుంది, ఇది ప్రాసెస్ చేయబడిన ఫైల్‌లో సవరణ ఎంపికలను నిర్వచించడానికి మిమ్మల్ని అనుమతిస్తుంది. విడుదలలలో దుర్బలత్వం పరిష్కరించబడింది
Vim 8.1.1365 и నియోవిమ్ 0.3.6.

మోడల్‌లైన్ ద్వారా పరిమిత సంఖ్యలో ఎంపికలు మాత్రమే ఇన్‌స్టాల్ చేయబడతాయి. వ్యక్తీకరణ ఎంపిక విలువగా పేర్కొనబడితే, అది శాండ్‌బాక్స్ మోడ్‌లో అమలు చేయబడుతుంది, ఇది సరళమైన సురక్షిత కార్యకలాపాలను మాత్రమే అనుమతిస్తుంది. ఈ సందర్భంలో, చెల్లుబాటు అయ్యే కమాండ్‌లో “:source” ఆదేశం ఉంటుంది, దీనిలో మీరు “!” మాడిఫైయర్‌ని ఉపయోగించవచ్చు. పేర్కొన్న ఫైల్ నుండి ఏకపక్ష ఆదేశాలను అమలు చేయడానికి. అందువల్ల, కోడ్‌ను అమలు చేయడానికి, మోడల్ లైన్‌లో “set foldexpr=execute('\:source! some_file'):" వంటి నిర్మాణాన్ని సూచిస్తే సరిపోతుంది. నియోవిమ్‌లో, ఎగ్జిక్యూట్‌ని కాల్ చేయడం నిషేధించబడింది, కానీ బదులుగా assert_failsని ఉపయోగించవచ్చు.

ఉదాహరణకు, “uname -a” ఆదేశాన్ని అమలు చేయడానికి, Vim లేదా Neovimలో మొదటి లేదా చివరి లైన్ చెప్పే ఫైల్‌ను తెరవండి:

:!uname -a||» vi:fen:fdm=expr:fde=assert_fails(“source\!\ \%”):fdl=0:fdt=”

కంపెనీ “మూలం! %" ప్రస్తుత ఫైల్ నుండి ఆదేశాలను చదువుతుంది మరియు తదనుగుణంగా ":!uname -a"ని అమలు చేస్తుంది. క్యాట్ యుటిలిటీ ద్వారా అవుట్‌పుట్ నుండి ఇచ్చిన లైన్‌ను దాచడానికి ఎస్కేప్ సీక్వెన్స్‌లను ఉపయోగించవచ్చు. ఉదాహరణకు, ఇందులో దోపిడీ ప్రోటోటైప్ Vimలో ఫైల్‌ను తెరిచేటప్పుడు, బాధితుడి సిస్టమ్‌కు షెల్ యాక్సెస్‌తో నెట్‌వర్క్ కనెక్షన్ సృష్టించబడుతుంది, అయితే క్యాట్ యుటిలిటీని ఉపయోగించి టెర్మినల్‌కు అవుట్‌పుట్ చేసినప్పుడు ఈ ఫైల్ అనుమానాన్ని రేకెత్తించదు.

మీరు ":set modelline?" కమాండ్‌తో మోడలైన్ మోడ్ యొక్క కార్యాచరణను తనిఖీ చేయవచ్చు. దీన్ని డిసేబుల్ చేయడానికి, మీరు vimrcకి “సెట్ నోమోడ్‌లైన్” లైన్‌ని జోడించవచ్చు. పంపిణీలో సమస్య పరిష్కరించబడింది RHEL, SUSE/openSUSE, Fedora, FreeBSD, ఉబుంటు, ఆర్చ్ లైనక్స్ и ALT. దుర్బలత్వం అస్పష్టంగానే ఉంది డెబియన్ (డెబియన్ మోడల్‌లైన్‌లో డిఫాల్ట్‌గా డిసేబుల్ చేయబడింది, కాబట్టి దుర్బలత్వం డిఫాల్ట్ స్థితిలో కనిపించదు).

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి