በልዩ ሁኔታ የተነደፉ ማውጫዎችን ሲሰራ በ e2fsck ውስጥ ያለው ተጋላጭነት

እንደ ጥቅል አካል በቀረበው e2fsck መገልገያ ውስጥ e2fsprogs, ተለይቷል ተጋላጭነት (CVE-2019-5188), ይህም በተለየ ሁኔታ የተነደፉ ማውጫዎችን የያዘ የፋይል ስርዓት ሲፈተሽ የአጥቂን ኮድ እንዲፈጽሙ ያስችልዎታል. ተጋላጭነቱ ከ1.43.3 እስከ 1.45.4 ባሉት ልቀቶች ተረጋግጧል። ተጋላጭነት በዝማኔ ተስተካክሏል። e2fsck 1.45.5. በስርጭት ዕቃዎች ውስጥ ችግሩ አሁንም እንዳልተስተካከለ ይቆያል (ደቢያን, አርክ ሊንክ, SUSE/ክፍት SUSE, ኡቡንቱ, RHEL).

ተጋላጭነቱ የሚከሰተው በ rehash.c ፋይል ውስጥ ባለው የ mutate_name() ተግባር ውስጥ ባለ ስህተት ነው፣ይህም ከማውጫ ጋር የተገናኙትን የሃሽ ሰንጠረዦች እንደገና በሚገነቡበት ጊዜ፣ በማውጫው ውስጥ ያሉት ሁሉም ፋይሎች ከማውጫው ጋር የሚዛመዱ መሆናቸውን በማረጋገጥ ነው። ከማውጫ ጋር የተያያዘው የሃሽ_ኢንትሪ መዋቅር መበላሸቱ አጥቂ ከተመደበው ቋት ውጭ ወዳለ ቦታ ውሂብ እንዲጽፍ ሊያደርግ ይችላል። ተመሳሳይ ስም ያላቸው ብዙ ፋይሎች ከማውጫ ጋር እንደተገናኙ በሃሽ ሠንጠረዥ ውስጥ ከተለዩ፣ e2fsck መገልገያው የተባዙ ፋይሎችን ~0፣ ~1 እና የመሳሰሉትን ወደ ስሙ በማከል ይቀይራል። በእንደዚህ ዓይነት ዳግም መሰየም ወቅት አዲሱን ስም ለጊዜው ለማከማቸት 256 ባይት መጠን ያለው ቋት በክምችቱ ላይ ተመድቧል።

የሚቀዳው የውሂብ መጠን በ "entry->name_len & 0xff" አገላለጽ ይወሰናል, ነገር ግን የመግቢያ->name_len ዋጋ ከትክክለኛው የስሙ መጠን ስሌት ሳይሆን በዲስክ ላይ ካለው መዋቅር ይጫናል. መጠኑ ዜሮ ከሆነ፣ የድርድር ኢንዴክስ እሴቱን -1 ይወስዳል እና ሁኔታዎች ተፈጥረዋል ኢንቲጀር እንዲትረፈረፍ በታችኛው ቋት ድንበር (ኢንቲጀር በታች ፍሰት) እና ቁልል ላይ ሌላ ውሂብ "~ 0" ጋር ይተካዋል. ለ 64-ቢት ስርዓቶች የተጋላጭነት ብዝበዛ የማይታሰብ ነው ተብሎ ይገመገማል እና በተደራራቢው መጠን ላይ ምንም ገደብ አያስፈልግም (limit -s unlimited)። ለ 32-ቢት ስርዓቶች, ብዝበዛ ይቻላል ተብሎ ይታሰባል, ነገር ግን ውጤቱ በጣም ጥገኛ ነው executable በአቀነባባሪው እንዴት እንደተጠናቀረ.

ጥቃትን ለመፈጸም አንድ አጥቂ በ ext2, ext3 ወይም ext4 የፋይል ስርዓት ክፍልፍል ውስጥ በተወሰነ መንገድ መረጃውን ማበላሸት ያስፈልገዋል. ይህ ክዋኔ የሱፐር ተጠቃሚ ልዩ መብቶችን የሚፈልግ በመሆኑ የe2fsck መገልገያ ውጫዊ ድራይቮች ወይም ከውጪ የተቀበሉ FS ምስሎችን ሲቃኝ ተጋላጭነቱ ስጋት ይፈጥራል።

ምንጭ: opennet.ru

አስተያየት ያክሉ