Bayan wata buɗaɗɗiyar wasiƙar neman afuwa, ƙungiyar masu bincike daga Jami'ar Minnesota ta amince da canje-canje a cikin ƙwayar halittar Linux от которой был заблокирован Грегом Кроа-Хартманом, раскрыла детальную информацию об отправленных разработчикам ядра патчах и связанную с этими патчами переписку с мэйнтейнерами.
Abin lura ne cewa duk facin da ke da matsala an ƙi su daga masu kula da shi; babu ɗaya daga cikinsu da aka amince da shi. Wannan gaskiyar tana taimakawa wajen bayyana dalilin da ya sa Greg Kroah-Hartman ya yi irin wannan mummunan aiki, domin ba a san abin da masu binciken za su yi ba idan facin ya sami amincewar masu kula da shi. A baya-bayan nan, sun yi iƙirarin cewa suna da niyyar bayar da rahoton kwaro kuma da sun hana a tura facin zuwa Git, amma ba a san abin da za su yi a zahiri ba ko kuma irin nisan da za su yi.
Всего в августе 2020 года с анонимных адресов acostag.ubuntu@gmail.com и jameslouisebond@gmail.com (письмо от Джеймса Бонда) было отправлено пять патчей: два корректных (1, 2) и три включающих скрытые ошибки (1, 2, 3), создающие условия для возникновения уязвимостей. Каждый патч содержал всего 1-4 строки кода. Основная идея ошибочных патчей была в том, что исправление утечки памяти может создавать условие появления уязвимости из-за двойного освобождения памяти. Неделю спустя разработчикам ядра было отправлена информация с предложением обсудить возможность продвижения уязвимостей под видом тривиальных исправлений утечек памяти, но про ранее предпринятые попытки отправки вредоносных патчей ничего сказано не было.
Facin farko mai matsala ya gyara matsalar ɓullar ƙwaƙwalwar ajiya ta hanyar kiran kfree() kafin ya dawo kan kuskure, amma ya gabatar da yanayin amfani bayan an gama amfani da shi. Mai kula da shi (Jiri Slaby) ya ƙi wannan facin, wanda ya gano matsalar kuma ya nuna cewa wani ya riga ya gabatar da irin wannan canji shekara guda da ta gabata, wanda aka fara karɓa amma aka watsar da shi bayan an gano raunin. > p2 = p1[n] = kmalloc_array(64, sizeof(u16), GFP_KERNEL); > — idan (!p2) ya dawo -ENOMEM; > + idan (!p2) { > + kfree(p1); > + dawo -ENOMEM; > + }
Faci na biyu kuma ya ƙunshi sharuɗɗa don matsalar amfani bayan-kyauta. Mai kula da shi (Dan Carpenter) bai karɓi wannan faci ba, wanda ya ƙi faci saboda wata matsala da list_add_tail, amma bai lura cewa alamar "chdev", wadda daga baya ake amfani da ita a cikin kiran dev_err(&chdev->dev..), za a iya 'yantar da ita a cikin aikin put_device. Duk da haka, ba a karɓi faci ba, kodayake saboda wani dalili da ba shi da alaƙa da raunin. idan (ret < 0) { + put_device(&chdev->dev); dev_err(&chdev->dev, DRV_NAME ": kfifo_alloc ya gaza\n"); ret = -ENOMEM; goto err_fifo;
Mai kula da shi (Miquel Raynal) bai karɓi faci na uku ba saboda wani kwaro da ba shi da alaƙa da rauni (kira sau biyu zuwa pdev). idan (!window->virt) { printk(KERN_ERR MOD_NAME ": ioremap(%08lx, %08lx) ya gaza\n", window->phys, window->size); + pci_dev_put(pdev); goto out; } … idan (!taswira) { printk(KERN_ERR MOD_NAME ": kmalloc ya gaza"); + pci_dev_put(pdev); goto out; } memset(taswira, 0, girman(*taswira)); … idan (mtd_device_register(taswira->mtd, NULL, 0)) { map_destroy(taswira->mtd); map->mtd = NULL; + pci_dev_put(pdev); goto out; }
Abin sha'awa, an yi tunanin cewa faci 4 cikin 5 da farko suna da matsaloli, amma masu binciken da kansu sun yi kuskure kuma sun ba da shawarar gyara daidai ga faci ɗaya da suka yi imanin yana da matsala, ba tare da yanayin amfani bayan-kyauta da ake tsammani ya faru ba. err = pci_request_mem_regions(pdev, nitrox_driver_name); if (err) { pci_disable_device(pdev); + dev_err(&pdev->dev, "An kasa neman yankunan mem!\n"); dawo da err; }
source: budenet.ru
