ተንኮል-አዘል ፋይል ሲከፍት ወደ ኮድ አፈፃፀም የሚወስደው በቪም ውስጥ ተጋላጭነት

በጽሑፍ አርታኢዎች ውስጥ Vim и ኒዮቪም ተገኝቷል ተጋላጭነት (CVE-2019-12735) በልዩ ሁኔታ የተነደፈ ፋይል ሲከፈት የዘፈቀደ ኮድ እንዲተገበር ያስችለዋል። ችግሩ የሚከሰተው ነባሪ የሞዴሊን ሁነታ (": set modeline") ገባሪ ሲሆን ይህም በተሰራው ፋይል ውስጥ የአርትዖት አማራጮችን እንዲገልጹ ያስችልዎታል. ተጋላጭነት በተለቀቁት ውስጥ ተስተካክሏል።
ቪም 8.1.1365 и ኒዮቪም 0.3.6.

በሞዴሊን በኩል የተወሰኑ አማራጮች ብቻ ሊጫኑ ይችላሉ. አንድ አገላለጽ እንደ አማራጭ እሴት ከተገለጸ, በአሸዋ ሁነታ ላይ ይከናወናል, ይህም በጣም ቀላል የሆኑትን አስተማማኝ ስራዎች ብቻ ይፈቅዳል. በዚህ አጋጣሚ ትክክለኛ ትዕዛዙ የ ": ምንጭ" ትዕዛዝን ያካትታል, በውስጡም "!" መቀየሪያን መጠቀም ይችላሉ. ከተጠቀሰው ፋይል የዘፈቀደ ትዕዛዞችን ለማስኬድ. ስለዚህ ኮዱን ለማስፈጸም በሞዴሊኑ መስመር ላይ እንደ "set foldexpr=execute('\:source! some_file'):" ያለ ግንባታ ማመላከት በቂ ነው። በNeovim ውስጥ ፈጻሚን መጥራት የተከለከለ ነው፣ ነገር ግን assert_fails በምትኩ መጠቀም ይቻላል።

ለምሳሌ፣ የ" uname -a" ትዕዛዙን ለማስኬድ በቀላሉ በቪም ወይም በኒዮቪም ውስጥ የመጀመሪያ ወይም የመጨረሻ መስመር የሚከተለውን ፋይል ይክፈቱ።

:!uname -a||" vi:fen:fdm=expr:fde=assert_fails("ምንጭ\!\\%"):fdl=0:fdt="

ኩባንያ "ምንጭ! %" ትእዛዞቹን አሁን ካለው ፋይል ያነባል እና በዚህ መሰረት ":! uname -a" ያስፈጽማል. የማምለጫ ቅደም ተከተሎችን በድመት መገልገያ ከውጤት የተሰጠውን መስመር ለመደበቅ ጥቅም ላይ ሊውል ይችላል. ለምሳሌ, በዚህ ውስጥ ፕሮቶታይፕን መበዝበዝ በቪም ውስጥ ፋይልን በሚከፍቱበት ጊዜ የአውታረ መረብ ግንኙነት ከሼል ወደ ተጎጂው ስርዓት መዳረሻ ጋር ይፈጠራል፣ ነገር ግን ይህ ፋይል የድመት መገልገያውን ተጠቅሞ ወደ ተርሚናል ሲወጣ ጥርጣሬን አይፈጥርም።

የሞዴሊን ሁነታን እንቅስቃሴ በ ": set modeline?" በሚለው ትዕዛዝ ማረጋገጥ ይችላሉ. እሱን ለማሰናከል፣ መስመርን "set nomodeline" ወደ vimrc ማከል ይችላሉ። በስርጭቶች ውስጥ ችግሩ ተስተካክሏል RHEL, SUSE/ክፍት SUSE, Fedora, FreeBSD, ኡቡንቱ, አርክ ሊንክ и ALT. ተጋላጭነቱ እንዳልተሸፈነ ይቆያል ደቢያን (በዴቢያን ሞዴሊን በነባሪነት ተሰናክሏል፣ ስለዚህ ተጋላጭነቱ በነባሪ ሁኔታ ውስጥ አይታይም)።

ምንጭ: opennet.ru

አስተያየት ያክሉ