በOpenBSD ውስጥ የW^X የደህንነት ዘዴን ለማጠናከር አቅዷል

ቴዎ ዴ ራድት። ተጋርቷል የ W ^ X ( ጻፍ XOR Execute ) የማህደረ ትውስታ ጥበቃ ዘዴን ለማጠናከር አቅዷል። የስልቱ ይዘት የሂደት ማህደረ ትውስታ ገፆች ለመፃፍ እና ለማስፈፀም በአንድ ጊዜ መድረስ አለመቻላቸው ነው። ስለዚህ, ኮድ መፃፍ ከተሰናከለ በኋላ ብቻ ሊተገበር ይችላል, እና ወደ ማህደረ ትውስታ ገጽ መጻፍ የሚቻለው አፈፃፀም ከተሰናከለ በኋላ ብቻ ነው. የW^X ዘዴ የተጠቃሚ-ቦታ መተግበሪያዎችን ከተለመዱት ቋት የትርፍ ፍሰት ጥቃቶች ለመጠበቅ ያግዛል፣ የተደራረቡ ፍሳሾችን ጨምሮ፣ እና በOpenBSD ውስጥ የሚሰራ ነው። ነባሪ.

በ W^X ላይ ሥራ ከጀመረበት ጊዜ ጀምሮ ይህ ረጅም መንገድ እንደሆነ ግልጽ ነበር, ምክንያቱም ጂአይትን በመጠቀም ከፍተኛ ቁጥር ያላቸው መተግበሪያዎች ነበሩ. የጂአይቲ አተገባበር በሶስት ምድቦች ሊከፈል ይችላል፡-

  • በ W እና X ግዛቶች መካከል ማህደረ ትውስታን መቀየር, የስርዓት ጥሪውን "ዋጋ" መቀበል አስተካክል.
  • በተመሳሳዩ ማህደረ ትውስታ ጥንድ W እና X ካርታዎች መካከል ተለዋጭ ስሞችን መፍጠር።
  • በጣም “ቆሻሻ” አማራጭ በአንድ ጊዜ መቅዳት እና ማስፈጸምን የሚፈቅድ የ W|X ማህደረ ትውስታ ሞዴል የሚያስፈልጋቸው ነው።

በአሁኑ ጊዜ, ሶስተኛውን አማራጭ በመጠቀም እና ሌሎች የመጀመሪያውን እና ሁለተኛውን በመጠቀም በጣም ያነሱ ፕሮግራሞች አሉ. ነገር ግን፣ ፕሮግራሞችን በW|X JIT (በተለይም Chromium እና Iridum) ማሄድ አስፈላጊ ስለነበር፣ “wxallowed” filesystem mount አማራጭ ተጨምሯል፣ ይህም የማስታወስ ችሎታን ለመፃፍ እና ለማስፈጸም በአንድ ጊዜ ጥቅም ላይ እንዲውል አስችሎታል፣ ተፈጻሚው ELF ከሆነ። ፋይሉ በ"wxneed" ምልክት ተደርጎበታል፣ እና አፕሊኬሽኖቹ እራሳቸው ተጨማሪ ዘዴዎችን በመጠቀም ተጠብቀዋል። ቃል መግባት и ይፋ ጥቅም ላይ የዋሉ የስርዓት ጥሪዎችን ዝርዝር እና ለመተግበሪያው የሚገኙትን የፋይል ስርዓት ክፍሎች በቅደም ተከተል ለመገደብ.

በእንደዚህ ዓይነት አፕሊኬሽኖች ውስጥ የተጋላጭነት ብዝበዛን የበለጠ ለማወሳሰብ ፣ ዘዴው ላይ ተጨማሪ ሀሳብ ቀርቧል ። MAP_STACK, ይህም የስርዓት ጥሪው ከተፃፈ የማህደረ ትውስታ ገጽ ላይ እየተፈጸመ መሆኑን ያረጋግጣል. ገጹ ሊጻፍ የሚችል ከሆነ, ሂደቱ ለማቋረጥ ይገደዳል. በዚህ መንገድ አንድ አጥቂ የስርዓት ጥሪዎችን መበዝበዝ አይችልም እና በጂአይቲ ትግበራ ውስጥ አስፈላጊ የሆኑትን መግብሮች ለማግኘት እንዲሞክር ይገደዳል ወይም ደግሞ የስርዓት ጥሪ ፍንጮችን በቀጥታ ወደ ውስጥ የማወቅ የበለጠ ከባድ ስራ ይሰራል። በአጋጣሚ የተገናኘ libc.

የChrome/Iridium ሂደቶች ቃል ኪዳንን እና ገለፃን በመጠቀም በአስተማማኝ ሁኔታ የተጠበቁ ናቸው፣ ነገር ግን የመጠቀም ችሎታን ማስወገድ ለምሳሌ የመፃፍ(2) ስርዓት ጥሪ ለአጥቂው ተጨማሪ ችግሮች ስለሚፈጥር የተወሰነ ጠቀሜታ እንዳለው ግልጽ ነው። ነገር ግን፣ የጂአይቲ አተገባበር ከW|X ማህደረ ትውስታ የቤተኛ ጥሪዎችን የሚጠቀም ከሆነ ችግሮች ሊፈጠሩ ይችላሉ። ይሁን እንጂ ኤቢአይ ብዙ ጊዜ ስለተቀየረ ነገር ግን ማንም ሰው ችግሮችን ሪፖርት ስላላደረገ ይህ እንደማይሆን ተስፋ የምናደርግበት ምክንያት አለ።

ለውጦቹ በOpenBSD-Current ቅርንጫፍ በመደበኛ ቅጽበታዊ ገጽ እይታዎች ላይ ይገኛሉ፣ ፍላጎት ያላቸው ሁሉ እንዲሞክሩ ተጋብዘዋል።

በChrome/Iridium ውስጥ ስላለው ሁነታ ገጽታ ተዛማጅ ዜናዎች ከቴኦ የተለየ አስተያየት ይገባዋል JITless. ከእሱ አንጻር ይህ ለአንዳንድ የአጠቃቀም ሞዴሎች ተቀባይነት ያለው ነው, ግን ምናልባት ለሁሉም አይደለም, ምክንያቱም ይህ ሁነታ በማቀነባበሪያው ላይ ያለውን ጭነት በግልጽ ስለሚጨምር. በአሁኑ ጊዜ Chrome በአብዛኛው የሚሰራው "wxallowed" ለ/usr/local ካሰናከሉ ነው፣ ምንም እንኳን በአንዳንድ ቅጥያዎች ላይ ችግሮች ሊኖሩ ቢችሉም (ghostery ምሳሌ ነው)። አንድ መንገድ ወይም ሌላ, ቲኦ በ JITless ሁነታ ውስጥ የተሟላ ስራ በቅርብ ጊዜ ውስጥ ሙሉ ለሙሉ ወደ ሥራው እንደሚመጣ ተስፋ ያደርጋል.

ምንጭ: opennet.ru

አስተያየት ያክሉ