ተነባቢ-ብቻ ፋይሎችን ሊያበላሽ የሚችል በሊኑክስ ከርነል ውስጥ ያለው ተጋላጭነት

በሊኑክስ ከርነል (CVE-2022-0847) ውስጥ የገጹ መሸጎጫ ይዘቶች ለማንኛውም ተነባቢ-ብቻ ሁነታ ላይ ያሉትን ጨምሮ ለማንኛውም ፋይሎች እንዲገለበጡ የሚፈቅድ ተጋላጭነት ተለይቷል፣ በO_RDONLY ባንዲራ የተከፈተ ወይም በፋይል ሲስተሞች ላይ ይገኛል። በተነባቢ-ብቻ ሁነታ ላይ ተጭኗል። በተግባራዊ አገላለጽ፣ ተጋላጭነቱ ወደ የዘፈቀደ ሂደቶች ኮድ ለማስገባት ወይም በተከፈቱ ፋይሎች ውስጥ የተበላሸ መረጃን ለማበላሸት ሊያገለግል ይችላል። ለምሳሌ፣ ለsshd ሂደት የተፈቀደውን_keys ፋይል ይዘቶች መለወጥ ይችላሉ። የብዝበዛ ፕሮቶታይፕ ለሙከራ ይገኛል።

ችግሩ በ2016 ከተገለጸው ወሳኝ ተጋላጭነት ጋር ተመሳሳይ የሆነ ቆሻሻ ፓይፕ የሚል ስያሜ ተሰጥቶታል። ከአደጋ ደረጃ አንጻር ቆሻሻ ፓይፕ ከቆሻሻ ላም ጋር ተመሳሳይ ደረጃ ላይ እንደሚገኝ ተጠቁሟል, ነገር ግን ለመሥራት በጣም ቀላል ነው. ተጋላጭነቱ የተጨመቀ ማህደሮችን ከአንድ የምዝግብ ማስታወሻ አገልጋይ በማውረድ በአውታረ መረቡ ላይ በሚወርዱ ፋይሎች ላይ ወቅታዊ ሙስና ቅሬታዎችን በሚመረምርበት ጊዜ (በ 37 ወራት ውስጥ በተጫነ ስርዓት ላይ 3 ሙስናዎች) ሲዘጋጁ ፣ ስፕሊስ () ኦፕሬሽኑን ተጠቅሟል ። እና ያልተሰየሙ ቧንቧዎች.

ተጋላጭነቱ በነሐሴ 5.8 ከተለቀቀው ከሊኑክስ ከርነል 2020 ጀምሮ ይታያል። በዲቢያን 11 ውስጥ ይገኛል፣ ነገር ግን በኡቡንቱ 20.04 LTS ውስጥ ያለውን ቤዝ ከርነል አይነካም። የ RHEL 8.x እና openSUSE/SUSE 15 አስኳሎች መጀመሪያ ላይ በአሮጌ ቅርንጫፎች ላይ የተመሰረቱ ናቸው፣ነገር ግን የችግሩ መንስኤ የሆነው ለውጥ ወደ እነርሱ ተመልሶ ሊሆን ይችላል (እስካሁን ትክክለኛ መረጃ የለም)። በእነዚህ ገፆች ላይ የጥቅል ማሻሻያዎችን በስርጭት መከታተል ትችላለህ፡ ዴቢያን፣ SUSE፣ Ubuntu፣ RHEL፣ Fedora፣ Gentoo፣ Arch Linux። የተጋላጭነት ማስተካከያ በተለቀቁት 5.16.11፣ 5.15.25 እና 5.10.102 ቀርቧል። ጥገናው በአንድሮይድ መድረክ ላይ ጥቅም ላይ በሚውለው ከርነል ውስጥም ተካትቷል።

ተጋላጭነቱ የሚከሰተው መዋቅርን ሲመድቡ እና በተወሰኑ ማጭበርበሮች ጊዜ ማህደረ ትውስታው ባይጸዳም በተግባሮች ኮፒ_ገጽ_to_iter_pipe () እና push_pipe () ውስጥ ያለው የ “buf-> ባንዲራዎች” እሴት ጅምር ባለመኖሩ ነው። ያልተሰየሙ ቧንቧዎች, ከሌላ ቀዶ ጥገና ዋጋ. ይህንን ባህሪ በመጠቀም ያልተፈቀደ የሀገር ውስጥ ተጠቃሚ የ PIPE_BUF_FLAG_CAN_MERGE እሴትን በሰንደቅ አላማው ውስጥ ማሳካት ይችላል፣ይህም በገጹ መሸጎጫ ውስጥ አዲስ ውሂብ በቀላሉ ወደ ተዘጋጀ ስሙ ባልተጠቀሰ ፓይፕ ላይ በመፃፍ ውሂብን እንደገና መፃፍ እንዲያቀናብሩ ያስችልዎታል።

ለጥቃት የዒላማው ፋይል ሊነበብ የሚችል መሆን አለበት፣ እና ወደ ቧንቧ በሚጽፉበት ጊዜ የመዳረሻ መብቶች ስለማይመረመሩ በገጽ መሸጎጫ ውስጥ መተካት እንዲሁ ተነባቢ-ብቻ በተሰቀሉ ክፍልፋዮች ውስጥ (ለምሳሌ ለፋይሎች ሲ ሲዲ-) ሊደረግ ይችላል። ሮም). በገጹ መሸጎጫ ውስጥ ያለውን መረጃ ከተተካ በኋላ, ከፋይል ውስጥ ውሂብ ሲያነብ, ሂደቱ ትክክለኛውን ውሂብ አይቀበልም, ነገር ግን የተተካው ውሂብ ይቀበላል.

የPIPE_BUF_FLAG_CAN_MERGE ባንዲራ ከሱ ጋር በተያያዙ ሁሉም የቀለበት መዋቅሮች ውስጥ መዘጋጀቱን ለማረጋገጥ ክዋኔው ያልተሰየመ ቻናል ለመፍጠር እና በዘፈቀደ ውሂብ ለመሙላት ይወርዳል። በመቀጠል ውሂቡ ከሰርጡ ይነበባል፣ ነገር ግን ባንዲራ በሁሉም የ pipe_buffer መዋቅር በ pipe_inode_info ቀለበት መዋቅሮች ውስጥ እንዳለ ይቆያል። ከተፈለገበት ማካካሻ ጀምሮ ወደ ስፕላስ() ጥሪ ከዒላማው ፋይል ወደ ወዳልታወቀ ፓይፕ ለማንበብ ጥሪ ይደረጋል። ለዚህ ስም-አልባ ፓይፕ ውሂብ በሚጽፉበት ጊዜ የPIPE_BUF_FLAG_CAN_MERGE ባንዲራ በመዘጋጀቱ ምክንያት በገጽ መሸጎጫ ውስጥ ያለው ውሂብ የ pipe_buffer መዋቅር አዲስ ምሳሌ ከመፍጠር ይልቅ ይተካል።

ምንጭ: opennet.ru

አስተያየት ያክሉ