የሚኒሶታ ዩኒቨርሲቲ ቡድን ስለተላኩት ተንኮል አዘል ለውጦች ዝርዝሮችን አሳይቷል።

ክፍት የይቅርታ ደብዳቤን ተከትሎ፣ የሚኒሶታ ዩኒቨርሲቲ የተመራማሪዎች ቡድን በከርነል ላይ የተደረጉ ለውጦችን ተቀብሏል Linux ግሬግ ክሮህ-ሃርትማን ከድንጋጤው፣ ለከርነል ገንቢዎች የተላኩትን ጥገናዎች እና ከእነዚህ ጥገናዎች ጋር በተያያዘ ከጥገና ሰጪዎች ጋር ስለተላከላቸው ደብዳቤዎች ዝርዝር መረጃ አሳይቷል።

ሁሉም ችግር ያለባቸው ጥገናዎች በአስተዳዳሪዎች አነሳሽነት ውድቅ መሆናቸው ትኩረት የሚስብ ነው ፣ አንድም ንጣፍ አልፀደቀም። ይህ እውነታ ግሬግ ክሮአ-ሃርትማን ይህን ያህል ጨካኝ እርምጃ የወሰደበትን ምክንያት ግልጽ ያደርገዋል፣ ምክንያቱም ተመራማሪዎቹ ጥገናዎቹ በጠባቂዎቹ ቢፀድቁ ምን ያደርጉ እንደነበር ግልፅ ስላልሆነ። በቅድመ-እይታ፣ ስህተትን ሪፖርት ለማድረግ እንዳሰቡ እና ጥገናዎቹ ወደ ጂት እንዲሄዱ እንደማይፈቅዱ ተናግረዋል፣ ነገር ግን ምን ያደርጉ እንደነበር እና ምን ያህል ርቀት ሊሄዱ እንደሚችሉ ግልፅ አይደለም።

በአጠቃላይ፣ በኦገስት 2020፣ ከማይታወቁ የአኮስታግ አድራሻዎች።ubuntuአምስት ፓቾች ወደ @gmail.com እና jameslouisebond@gmail.com ተልከዋል (ኢሜይሉ ከጄምስ ቦንድ ነበር)፤ ሁለት ትክክለኛ ስህተቶችን (1፣ 2) እና ሶስት የተደበቁ ስህተቶችን ያካተቱ (1፣ 2፣ 3)። እያንዳንዱ ፓች ከ1-4 የኮድ መስመሮችን ብቻ ይዟል። ከተሳሳቱ ፓቾች በስተጀርባ ያለው መሠረታዊ ሀሳብ የማህደረ ትውስታ መፍሰስን ማስተካከል በድርብ-ነጻ ምክንያት ተጋላጭነትን ሊፈጥር ይችላል የሚል ነበር። ከአንድ ሳምንት በኋላ፣ የከርነል ገንቢዎች ጥቃቅን የማህደረ ትውስታ መፍሰስ ጥገናዎችን በመደበቅ ተጋላጭነቶችን የማስተዋወቅ እድልን ለመወያየት ተገናኝተዋል፣ ነገር ግን ከዚህ በፊት ተንኮል አዘል ፓቾችን ለማስገባት የተደረጉ ሙከራዎች ምንም አልተጠቀሱም።

የመጀመሪያው ችግር ያለበት ፕላስተር ስህተት ከተፈጠረ መቆጣጠሪያውን ከመመለሱ በፊት ወደ kfree() ጥሪ በማከል የማህደረ ትውስታ ፍንጣቂውን አስተካክሏል፣ ነገር ግን ማህደረ ትውስታው ከተለቀቀ በኋላ ለመድረስ ሁኔታዎችን ፈጥሯል። ይህ ፕላስተር በአስተዳዳሪው (ጂሪ ስላቢ) ውድቅ ተደርጓል፣ ችግሩን በመለየት ከአንድ አመት በፊት አንድ ሰው ቀደም ሲል ተመሳሳይ ለውጥ ለማቅረብ ሞክሯል እና መጀመሪያ ላይ ተቀባይነት ያገኘ ቢሆንም የተጋላጭነት ሁኔታዎችን ካወቀ በኋላ ተጥሏል። > p2 = p1 [n] = kmalloc_array (64, sizeof (u16), GFP_KERNEL); > - ከሆነ (! p2) መመለስ -ENOMEM; > + ከሆነ (!p2) {> + kfree(p1); > + መመለስ -ENOMEM; > +}

ሁለተኛው ጠጋኝ ከጥቅም-ነጻ ለሆነ ችግር ሁኔታዎችንም ይዟል። የተገለጸው ጠጋኝ በአስተዳዳሪው (ዳን አናጺ) ተቀባይነት አላገኘም በ list_add_tail ላይ በሌላ ችግር ምክንያት ንጣፉን ውድቅ አድርጎታል፣ ነገር ግን የ"chdev" ጠቋሚው በ put_device ተግባር ውስጥ ሊለቀቅ እንደሚችል አላስተዋለም፣ በጥሪው ውስጥ ከዚህ በታች ጥቅም ላይ ይውላል። dev_err(&chdev ->dev..)። ነገር ግን, ከተጋላጭነት ጋር ባልተያያዙ ምክንያቶች, ፕላስተር ተቀባይነት አላገኘም. ከሆነ (ret dev); dev_err (&chdev-> dev, DRV_NAME ": kfifo_alloc አልተሳካም\n"); ret = -ENOMEM; ጎቶ ኤርር_ፊፎ;

ሶስተኛው ጠጋኝ እንዲሁ ከተጋላጭነት ጋር ባልተያያዘ ሌላ ስህተት (ለ pdev ድርብ ጥሪ) በጠባቂው (ሚኬል ሬይናል) ተቀባይነት አላገኘም። ከሆነ (! መስኮት->virt) { printk(KERN_ERR MOD_NAME: ioremap(%08lx, %08lx) አልተሳካም\n", window->phys, window->መጠን); + pci_dev_put(pdev); ወደ ውጭ ወጣ; } ... ከሆነ (! ካርታ) { printk (KERN_ERR MOD_NAME ": kmalloc አልተሳካም"); + pci_dev_put(pdev); ወደ ውጭ ወጣ; } ሜምሴት (ካርታ ፣ 0 ፣ የመጠን (* ካርታ)); ... ከሆነ (mtd_device_register (map-> mtd, NULL, 0)) { map_destroy (map-> mtd); ካርታ-> mtd = NULL; + pci_dev_put(pdev); ወደ ውጭ ወጣ; }

የሚገርመው ነገር፣ ከ 4 ፕላቶች 5ቱ መጀመሪያ ላይ ችግር አለባቸው ተብሎ ይታሰባል፣ ነገር ግን ተመራማሪዎቹ እራሳቸው ስህተት ሠርተዋል እናም ችግር ባለበት በአንድ ፕላስተር ላይ፣ በእነሱ አስተያየት ፣ በነጻ ከተከሰቱ በኋላ ለማስታወስ ጥቅም ላይ የሚውሉ ቅድመ ሁኔታዎች ሳይኖሩበት ትክክለኛ ማስተካከያ ቀርቧል ። err = pci_request_mem_regions(pdev፣ nitrox_driver_name); ከሆነ (ስህተት) {pci_disable_device(pdev); + dev_err (&pdev-> dev, "የሜም ክልሎችን መጠየቅ አልተሳካም!\n"); ተመለስ ስህተት; }

ምንጭ: opennet.ru

በDDoS ጥበቃ፣ VPS VDS አገልጋዮች ለጣቢያዎች አስተማማኝ ማስተናገጃ ይግዙ 🔥 አስተማማኝ የድር ጣቢያ ማስተናገጃ በዲዶኤስ ጥበቃ፣ በቪፒኤስ ቪዲኤስ አገልጋዮች ይግዙ | ProHoster