Tim ti Universitas Minnesota parantos ngungkabkeun detil ngeunaan parobihan jahat anu dikirim.

Saatos surat hapunten kabuka, sakelompok peneliti ti Universitas Minnesota, anu nampi parobihan kana kernel Linux diblokir ku Greg Croah-Hartman, ngungkabkeun inpormasi lengkep ngeunaan patch anu dikirim ka pamekar kernel sareng korespondensi sareng pangropéa. patali jeung patch ieu.

Catet yén sadaya patches masalah ditolak ku prakarsa para pangropéa; teu aya patch tunggal anu disatujuan. Kanyataan ieu ngajelaskeun naha Greg Croah-Hartman bertindak kasar, sabab henteu écés naon anu bakal dilakukeun ku panalungtik upami patch parantos disatujuan ku para pangropéa. Dina hindsight, aranjeunna ngaku yen aranjeunna dimaksudkeun pikeun ngalaporkeun bug na moal bakal ngidinan patch ka buka Git, tapi teu jelas naon maranéhna sabenerna bakal dipigawé na sabaraha jauh maranéhna bisa geus indit.

Total dina Agustus 2020 ti alamat anonim [email dijaga] и [email dijaga] (surat ti James Bond) lima patch dikirimkeun: dua bener (1, 2) jeung tilu ngandung kasalahan disumputkeun (1, 2, 3), nyieun kaayaan keur vulnerabilities. Unggal patch ngandung ukur 1-4 garis kode. Gagasan utama di balik patch anu salah nyaéta ngalereskeun bocor mémori tiasa nyiptakeun kaayaan kerentanan gratis ganda. Saminggu ti harita, inpormasi dikirim ka pamekar kernel kalayan usulan pikeun ngabahas kamungkinan ngamajukeun kerentanan dina kedok perbaikan trivial pikeun bocor mémori, tapi teu aya anu nyarios ngeunaan usaha sateuacana pikeun ngirim patches jahat.

Patch masalah munggaran ngalereskeun bocor mémori ku cara nambihkeun telepon ka kfree () sateuacan ngabalikeun deui kontrol upami aya kasalahan, tapi nyiptakeun kaayaan pikeun aksés kana mémori saatos dibébaskeun (pamakéan saatos gratis). Patch ieu ditolak ku pangropéa (Jiri Slaby), anu ngaidentipikasi masalahna sareng nunjukkeun yén sataun katukang aya anu parantos nyobian ngajukeun parobihan anu sami sareng mimitina ditampi, tapi teras dipiceun saatos ngidentipikasi kaayaan kerentanan. > p2 = p1[n] = kmalloc_array(64, sizeof(u16), GFP_KERNEL); > - lamun (!p2) balik -ENOMEM; > + lamun (!p2) { > + kfree(p1); > + balik -ENOMEM; > + }

Patch kadua ogé ngandung kaayaan pikeun masalah anu henteu dianggo saatos-gratis. patch dieusian teu ditarima ku maintainer nu (Dan Carpenter), anu nampik patch alatan masalah sejen kalawan list_add_tail, tapi teu aya bewara yén "chdev" pointer bisa dibébaskeun dina fungsi put_device, nu dipaké di handap dina panggero. dev_err(&chdev ->dev..). Nanging, patch éta henteu ditampi, sanaos alesan anu teu aya hubunganana sareng kerentanan. lamun (ret <0) {+ put_device (&chdev->dev); dev_err(&chdev->dev, DRV_NAME ": kfifo_alloc gagal\n"); ret = -ENOMEM; goto err_fifo;

Patch katilu ogé henteu ditampi ku pangropéa (Miquel Raynal) kusabab bug anu sanés aya hubunganana sareng kerentanan (telepon ganda pikeun pdev). lamun (! Jandela-> Virt) {printk (KERN_ERR MOD_NAME ": ioremap (% 08lx,% 08lx) gagal \ n", window-> phys, window-> ukuran); + pci_dev_put(pdev); kaluar; } ... lamun (! peta) {printk(KERN_ERR MOD_NAME ": kmalloc gagal"); + pci_dev_put(pdev); kaluar; } memset(peta, 0, sizeof(*peta)); ... lamun (mtd_device_register (map-> mtd, NULL, 0)) {map_destroy (map-> mtd); peta->mtd = NULL; + pci_dev_put(pdev); kaluar; }

Narikna, 4 ti 5 patches mimitina dianggap boga masalah, tapi peneliti sorangan nyieun kasalahan sarta dina hiji patch aranjeunna pikir éta masalah, a fix bener ieu diajukeun, tanpa kaayaan ekspektasi pikeun pamakéan memori sanggeus lumangsung bebas. err = pci_request_mem_regions(pdev, nitrox_driver_name); lamun (salah) {pci_disable_device (pdev); + dev_err(&pdev->dev, "Gagal nyuhunkeun wewengkon mem!\n"); balik kasalahan; }

sumber: opennet.ru

Tambahkeun komentar