Taorian'ny taratasy fialan-tsiny misokatra, dia nanaiky ny fanovana natao tamin'ny kernel ny vondrona mpikaroka avy ao amin'ny Oniversiten'i Minnesota. Linux izay nosakanan'i Greg Kroah-Hartman, dia namoaka fampahalalana amin'ny antsipiriany momba ireo patch nalefa tany amin'ireo mpamorona kernel sy ny fifandraisana tamin'ireo mpikarakara mifandraika amin'ireo patch ireo.
Marihina fa nolavina avokoa ireo patch misy olana rehetra noho ny fandraisana andraikitra nataon’ny mpikarakara fa tsy nisy na dia iray aza nankatoavina. Io zava-misy io dia manazava mazava ny antony nanaovan'i Greg Croah-Hartman fihetsika henjana, satria tsy fantatra mazava izay mety ho nataon'ny mpikaroka raha nankatoavin'ny mpikarakara ny patch. Rehefa dinihina tokoa, dia nilaza izy ireo fa nikasa ny hitatitra bibikely ary tsy namela ny patch ho any amin'ny Git, saingy tsy fantatra mazava hoe inona marina no ho nataon'izy ireo ary hatraiza no mety ho lasa.
Raha atambatra, tamin'ny Aogositra 2020, avy amin'ny adiresy acostag tsy mitonona anarana.ubuntuNalefa tany amin'ny @gmail.com sy jameslouisebond@gmail.com ny patch dimy (avy amin'i James Bond ny mailaka): roa marina (1, 2) ary telo izay nahitana lesoka miafina (1, 2, 3) izay namorona fepetra ho an'ny fahalemena. Ny patch tsirairay dia nahitana andalana kaody 1-4 monja. Ny hevitra fototra ao ambadiky ny patch diso dia ny hoe ny fanamboarana ny leakage fahatsiarovana dia mety hamorona fahalemena noho ny double-free. Herinandro taty aoriana, dia nifandray tamin'ireo mpamorona kernel mba hiresaka momba ny mety hampiroboroboana ireo fahalemena amin'ny alàlan'ny fanamboarana leakage fahatsiarovana tsy dia misy dikany loatra, saingy tsy nisy voalaza momba ny andrana teo aloha handefasana patch ratsy.
Ny patch manahirana voalohany dia nanamboatra ny leak ny fahatsiarovana tamin'ny alàlan'ny fampidirana antso amin'ny kfree() alohan'ny hamerenana ny fanaraha-maso raha sendra misy hadisoana, fa namorona fepetra hidirana amin'ny faritra fitadidiana taorian'ny nanafahana azy (ampiasaina tsy misy dikany). Ity patch ity dia nolavin'ny mpikarakara (Jiri Slaby), izay nanondro ny olana ary nanamarika fa herintaona lasa izay dia efa nisy olona nanandrana nanolotra fanovana mitovy amin'izany ary nekena tamin'ny voalohany, saingy nariana rehefa avy namaritra ny fepetra momba ny vulnerability. > p2 = p1[n] = kmalloc_array(64, sizeof(u16), GFP_KERNEL); > - raha (!p2) miverina -ENOMEM; > + raha (!p2) { > + kfree(p1); > + miverina -ENOMEM; > + }
Ny patch faharoa dia nahitana fepetra momba ny olana tsy misy fampiasana aorian'ny fampiasana. Ny patch voatondro dia tsy neken'ny mpikarakara (Dan Carpenter), izay nandà ny patch noho ny olana hafa amin'ny list_add_tail, saingy tsy nahatsikaritra fa ny pointer "chdev" dia azo nafahana tao amin'ny fiasa put_device, izay ampiasaina eto ambany amin'ny antso. dev_err(&chdev ->dev..). Na izany aza, ny patch dia tsy nekena, na dia noho ny antony tsy mifandray amin'ny vulnerability. raha (ret <0) { + put_device(&chdev->dev); dev_err(&chdev->dev, DRV_NAME ": tsy nahomby ny kfifo_alloc\n"); ret = -ENOMEM; goto err_fifo;
Ny patch fahatelo dia tsy neken'ny mpikarakara (Miquel Raynal) ihany koa noho ny bibikely hafa tsy misy ifandraisany amin'ny vulnerability (antsoina roa ho an'ny pdev). raha (!window->virt) { printk(KERN_ERR MOD_NAME ": ioremap(%08lx, %08lx) tsy nahomby\n", window->phys, window->habe); + pci_dev_put(pdev); mivoaka; } ... raha (!map) { printk(KERN_ERR MOD_NAME ": kmalloc tsy nahomby"); + pci_dev_put(pdev); mivoaka; } memset(sarintany, 0, sizeof(*saritany)); ... raha (mtd_device_register(map->mtd, NULL, 0)) { map_destroy(map->mtd); sarintany->mtd = NULL; + pci_dev_put(pdev); mivoaka; }
Mahaliana fa ny patch 4 amin'ny 5 dia noheverina fa nanana olana tamin'ny voalohany, fa ny mpikaroka ihany no nanao fahadisoana ary tao anatin'ny patch iray izay nanahiran-tsaina, araka ny hevitr'izy ireo, dia naroso ny fanamboarana marina, tsy misy fepetra andrasana amin'ny fampiasana fahatsiarovana aorian'ny fisehoan-javatra maimaim-poana. err = pci_request_mem_regions(pdev, nitrox_driver_name); raha (diso) {pci_disable_device(pdev); + dev_err(&pdev->dev, “Tsy nahavita nangataka faritra mem!\n”); miverina diso; }
Source: opennet.ru
