የፍተሻ ነጥብ የጥንቃቄ አገናኝ ጥበቃ ዘዴን አቅርቧል፣ ይህም ተጋላጭነቶችን ለመጠቀም የበለጠ አስቸጋሪ ያደርገዋል

የፍተሻ ነጥብ ኩባንያ .едставила የጥንቃቄ-ማገናኘት ጥበቃ ዘዴ፣ ይህም የማሎክ ጥሪን በሚሰራበት ጊዜ ጠቋሚዎችን ፍቺ ወይም ማሻሻያ ወደ ቋት የሚቀይሩ ብዝበዛዎችን ለመፍጠር አስቸጋሪ ያደርገዋል። ደህንነቱ የተጠበቀ ማገናኘት ተጋላጭነትን የመጠቀም እድልን ሙሉ በሙሉ አያግደውም ፣ ነገር ግን በትንሹ ከአቅም በላይ ከሆነ የተወሰኑ የብዝበዛ ምድቦች መፈጠርን በእጅጉ ያወሳስበዋል ፣ ምክንያቱም ከጥቅም ቋት በተጨማሪ ፣ ስለ መረጃ መፍሰስ የሚፈጥር ሌላ ተጋላጭነት መፈለግ ያስፈልጋል ። በማህደረ ትውስታ ውስጥ ያለው ክምር አቀማመጥ.

Safe-Linkingን የሚተገብሩ መጠገኛዎች ለGlibc (ptmalloc)፣ uClibc-NG (dlmalloc)፣ gperftools (tcmalloc) እና Google TCMalloc ተዘጋጅተዋል፣ እና በChromium ውስጥ ጥበቃን ለማሻሻልም ታቅዷል (በ
ከ 2012 ጀምሮ Chromium ተመሳሳይ ችግር ለመፍታት በ MaskPtr ጥበቃ ቴክኒክ ውስጥ ገንብቷል፣ ነገር ግን ከCheckpoint ያለው መፍትሄ ከፍተኛ አፈጻጸም ያሳያል)።
የተጠቆሙ ጥገናዎች በኦገስት ልቀት ላይ እንዲደርሱ ጸድቀዋል Glibc 3.32 እና Safe-linking በነባሪነት ይነቃል። uClibc-NG ሴፍ-ማገናኛን ይደግፋል ገባ በልቀት 1.0.33 ውስጥ የተካተተ እና በነባሪነት የነቃ ነው። በ gperftools (የድሮ tcmalloc) ለውጦች ተቀብሏል፣ ግን ወደፊት በሚለቀቅበት ጊዜ እንደ አማራጭ ይቀርባል።

ገንቢዎች TCMalloc (አዲስ tcmalloc) ለመቀበል ፈቃደኛ አልሆነም። ለውጥ, ከባድ የአፈፃፀም ውድቀትን በመጥቀስ እና ሁሉም ነገር እንደተጠበቀው እየሰራ መሆኑን በየጊዜው ለማረጋገጥ ሰፊ ሙከራዎችን መጨመር አስፈላጊ ነው. በቼክ ፖይንት መሐንዲሶች የተደረገ ሙከራ እንደሚያሳየው ሴፍ-ማገናኘት ዘዴ ወደ ተጨማሪ የማስታወሻ ፍጆታ አያመራም, እና ክምር ስራዎችን በሚሰሩበት ጊዜ አፈፃፀም በአማካይ በ 0.02% ብቻ ይቀንሳል, እና በከፋ ሁኔታ በ 1.5% (ለማነፃፀር, ከትርፍ ወጪዎች). በ Chromium ውስጥ ጥቅም ላይ የዋለው ዘዴ "ከ 2% ያነሰ" ተብሎ ይገመታል). ማካተት
ደህንነቱ የተጠበቀ ግንኙነት 2-3 ተጨማሪ የመሰብሰቢያ መመሪያዎችን በእያንዳንዱ ጊዜ ነፃ() በተጠራ ቁጥር እና 3-4 መመሪያዎች በእያንዳንዱ ጊዜ malloc() ይባላል። የመነሻ እና የዘፈቀደ እሴት ማመንጨት ደረጃዎችን ማስኬድ አያስፈልግም።

የፍተሻ ነጥብ የጥንቃቄ አገናኝ ጥበቃ ዘዴን አቅርቧል፣ ይህም ተጋላጭነቶችን ለመጠቀም የበለጠ አስቸጋሪ ያደርገዋል

ሴፍ-ማገናኘት የተለያዩ ክምር አተገባበርን ደህንነት ለማሻሻል ብቻ ሳይሆን የንፁህነት ቁጥጥሮችን ለመጨመር ከማያዣዎቹ አጠገብ በተቀመጡ ነጠላ የተገናኙ የጠቋሚ ዝርዝሮችን በሚጠቀሙ ማናቸውም የመረጃ አወቃቀሮች ላይ ጭምር መጠቀም ይቻላል። ዘዴው ለመተግበር በጣም ቀላል ነው እና አንድ ማክሮ ማከል እና በኮዱ ውስጥ ወደሚቀጥለው ብሎክ ወደ ጠቋሚዎች መተግበር ብቻ ይጠይቃል (ለምሳሌ ለግሊቢክ) ለውጦች ጥቂት የኮድ መስመሮች)። ዘዴው በሚከተሉት ለውጦች ይከፈላል.

+# PROTECT_PTR(pos, ptr)ን ይግለጹ \
+ ((__ዓይነት (ptr)) ((((መጠን_t) ፖስ) >> 12) ^ ((መጠን_t) ptr)))

+# REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr) ግለጽ

- nextp = p-> fd;
+ nextp = REVEAL_PTR (p-> fd);
...

የስልቱ ይዘት እንደ Fast-Bins እና TCache ያሉ ነጠላ የተገናኙ ዝርዝሮችን ለመጠበቅ ከ ASLR አድራሻ randomization method (map_base) በዘፈቀደ መረጃ መጠቀም ነው። እሴቱ በዝርዝሩ ውስጥ ላለው ቀጣይ አካል በጠቋሚ ላይ ከመተግበሩ በፊት፣ የጭንብል ቅየራ ያከናውናል እና የገጽ አሰላለፍ ይፈትሻል። ጠቋሚው በቀዶ ጥገናው ውጤት "(L >> PAGE_SHIFT) XOR (P)" ተተክቷል, P የጠቋሚው ዋጋ እና L ጠቋሚው የተከማቸበት ማህደረ ትውስታ ቦታ ነው.

የፍተሻ ነጥብ የጥንቃቄ አገናኝ ጥበቃ ዘዴን አቅርቧል፣ ይህም ተጋላጭነቶችን ለመጠቀም የበለጠ አስቸጋሪ ያደርገዋል

በስርዓቱ ውስጥ ጥቅም ላይ ሲውል ASLR (የአድራሻ ቦታ አቀማመጥ Randomization) የ L ቢት ክምር አድራሻ ያለው ክፍል ፒን ለመቀየስ እንደ ቁልፍ የሚያገለግሉ የዘፈቀደ እሴቶች አሉት (በ12 ቢት ፈረቃ ስራ ለ4096 ባይት ገፆች የተወሰደ)። ይህ ማጭበርበር የጠቋሚ ጠለፋ አደጋን ይቀንሳል ምክንያቱም ጠቋሚው በመጀመሪያው መልክ ስላልተቀመጠ እና መተካት ስለ ክምር አመዳደብ እውቀት ያስፈልገዋል። በተጨማሪም ፣ የ patch ኮድ በተጨማሪ የማገጃ አሰላለፍ ተጨማሪ ፍተሻን ይይዛል ፣ ይህ አጥቂ ጠቋሚውን ባልተስተካከለ እሴት እንዲተካ የማይፈቅድ እና የተጣጣሙትን የቢት ብዛት ማወቅን ይፈልጋል ፣ ይህም በ 64-ቢት ስርዓቶች ላይ በተጨማሪ ማገድን ያስችላል። ከ15ቱ የጥቃት ሙከራዎች 16 ቱ አሰላለፍ ግምት ውስጥ ያላስገቡ።

ዘዴው ከፊል ጠቋሚ ዳግም መፃፍ (ዝቅተኛ ባይት መቀየር)፣ የጠቋሚ መልሶ መፃፍ (ወደ አጥቂው ኮድ ማዞር) እና የዝርዝሩን አቀማመጥ ባልተሰለፈ አድራሻ ከሚጠቀሙ ጥቃቶች ለመከላከል ውጤታማ ነው። እንደ ምሳሌ፣ Safe-Linking በ malloc ውስጥ መጠቀም በቅርቡ ብዝበዛን ለማገድ እንደሚያስችል ታይቷል። ተለይቷል በተመሳሳዩ የተጋላጭነት ተመራማሪዎች CVE-2020-6007 በ Philips Hue Bridge ስማርት ብርሃን ውስጥ፣ በቋት ሞልቶ በመፍሰሱ እና መሳሪያውን እንዲቆጣጠሩ የሚያስችልዎ።

ምንጭ: opennet.ru

አስተያየት ያክሉ