เบ—เบตเบกเบ‡เบฒเบ™เบˆเบฒเบเบกเบฐเบซเบฒเบงเบดเบ—เบฐเบเบฒเป„เบฅ Minnesota เป„เบ”เป‰เป€เบ›เบตเบ”เป€เบœเบตเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบเบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›.

เบซเบผเบฑเบ‡เบˆเบฒเบเบˆเบปเบ”เปเบฒเบเป€เบ›เบตเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ‚เปเป‚เบ—เบ”, เบเบธเปˆเบกเบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบˆเบฒเบเบกเบฐเบซเบฒเบงเบดเบ—เบฐเบเบฒเป„เบฅเบกเบดเบ™เบ™เบตเป‚เบŠเบ•เบฒเป„เบ”เป‰เบเบญเบกเบฎเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เปเบเปˆเบ™ Linux เบ—เบตเปˆเป„เบ”เป‰เบšเบฅเบฑเบญเบเป„เบงเป‰, เป„เบ”เป‰เป€เบ›เบตเบ”เป€เบœเบตเบเบ‚เปเป‰เบกเบนเบ™เบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบšเปเบžเบฑเบ”เบŠเปŒเบ—เบตเปˆเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบ„เบตเป€เบ™เบฅ เปเบฅเบฐ เบเบฒเบ™เบ•เบดเบ”เบ•เปเปˆเบชเบทเปˆเบชเบฒเบ™เบเบฑเบšเบœเบนเป‰เบฎเบฑเบเบชเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเปเบžเบฑเบ”เบŠเปŒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เป€เบ›เบฑเบ™เบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ—เบธเบเปเบœเปˆเบ™เบ—เบตเปˆเบกเบตเบšเบฑเบ™เบซเบฒเบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”เบˆเบฒเบเบเบฒเบ™เบฅเบดเป€เบฅเบตเปˆเบกเบ‚เบญเบ‡เบœเบนเป‰เบฎเบฑเบเบชเบฒ; เบ„เบงเบฒเบกเบˆเบดเบ‡เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡ Greg Croah-Hartman เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เป‚เบซเบ”เบฎเป‰เบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบˆเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเปเบœเปˆเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบญเบฐเบ™เบธเบกเบฑเบ”เบˆเบฒเบเบœเบนเป‰เบฎเบฑเบเบชเบฒ. เปƒเบ™เบ—เบฒเบ‡เบซเบฅเบฑเบ‡, เบžเบงเบเป€เบ‚เบปเบฒเบญเป‰เบฒเบ‡เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ•เบฑเป‰เบ‡เปƒเบˆเบ—เบตเปˆเบˆเบฐเบฅเบฒเบเบ‡เบฒเบ™เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเบˆเบฐเบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ patches เป„เบ›เบซเบฒ Git, เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เบซเบเบฑเบ‡เปเบฅเบฐเบžเบงเบเป€เบ‚เบปเบฒเป„เบ›เป„เบเบ›เบฒเบ™เปƒเบ”.

เบฅเบงเบกเบ—เบฑเบ‡เปเบปเบ”, เปƒเบ™เป€เบ”เบทเบญเบ™เบชเบดเบ‡เบซเบฒ 2020, เบˆเบฒเบเบ—เบตเปˆเบขเบนเปˆ acostag เบ—เบตเปˆเบšเปเปˆเบฅเบฐเบšเบธเบŠเบทเปˆ.ubuntuเป„เบ”เป‰เบกเบตเบเบฒเบ™เบชเบปเปˆเบ‡เปเบžเบฑเบ”เบŠเปŒเบซเป‰เบฒเบญเบฑเบ™เป„เบ›เบ—เบตเปˆ @gmail.com เปเบฅเบฐ jameslouisebond@gmail.com (เบญเบตเป€เบกเบงเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เบกเบฒเบˆเบฒเบ James Bond): เบชเบญเบ‡เบญเบฑเบ™เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡ (1, 2) เปเบฅเบฐ เบชเบฒเบกเบญเบฑเบ™เบ—เบตเปˆเบ›เบฐเบเบญเบšเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰ (1, 2, 3) เบ—เบตเปˆเบชเป‰เบฒเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเบณเบฅเบฑเบšเบŠเปˆเบญเบ‡เป‚เบซเบงเปˆ. เปเบ•เปˆเบฅเบฐเปเบžเบฑเบ”เบŠเปŒเบกเบตเบžเบฝเบ‡เปเบ•เปˆ 1-4 เปเบ–เบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เปเบžเบฑเบ”เบŠเปŒเบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบผเบ‚เบญเบ‡เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเป„เบ”เป‰เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ double-free. เปœเบถเปˆเบ‡เบญเบฒเบ—เบดเบ”เบ•เปเปˆเบกเบฒ, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ kernel เป„เบ”เป‰เบ–เบทเบเบ•เบดเบ”เบ•เปเปˆเป€เบžเบทเปˆเบญเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบกเบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบ›เบญเบกเปเบ›เบ‡เบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบผเบ‚เบญเบ‡เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเบ—เบตเปˆเบšเปเปˆเบชเบณเบ„เบฑเบ™, เปเบ•เปˆเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบ–เบทเบเบเปˆเบฒเบงเป€เบ–เบดเบ‡เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบเปˆเบญเบ™เปœเป‰เบฒเบ™เบตเป‰เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เปเบžเบฑเบ”เบŠเปŒเบ—เบตเปˆเป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบ.

patch เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบกเบตเบšเบฑเบ™เบซเบฒเป„เบ”เป‰เปเบเป‰เป„เบ‚เบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบฅเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบเบฒเบ™เป‚เบ—เป„เบ›เบซเบฒ kfree() เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบเบฑเบšเบ„เบทเบ™เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”, เปเบ•เปˆเป„เบ”เป‰เบชเป‰เบฒเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบปเบ”เบ›เปˆเบญเบ (เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบŸเบฃเบต). patch เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”เป‚เบ”เบเบœเบนเป‰เบฎเบฑเบเบชเบฒ (Jiri Slaby), เบœเบนเป‰เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบซเบฒเปเบฅเบฐเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบ›เบตเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบกเบตเบ„เบปเบ™เบžเบฐเบเบฒเบเบฒเบกเบชเบฐเป€เบซเบ™เบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เปเบฅเบฐเบกเบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบšเปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ–เบทเบเบเบปเบเป€เบฅเบตเบเบซเบผเบฑเบ‡เบˆเบฒเบเบเปเบฒเบ™เบปเบ”เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบญเปˆเบญเบ™เปเบญ. > p2 = p1[n] = kmalloc_array(64, sizeof(u16), GFP_KERNEL); > - เบ–เป‰เบฒ (!p2) เบเบฑเบšเบ„เบทเบ™ -ENOMEM; > + เบ–เป‰เบฒ (!p2) { > + kfree(p1); > + เบเบฑเบšเบ„เบทเบ™ -ENOMEM; > + }

เปเบœเปˆเบ™เบฎเบญเบ‡เบ—เบตเบชเบญเบ‡เบเบฑเบ‡เบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเปเบฒเบฅเบฑเบšเบšเบฑเบ™เบซเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบšเปเปˆเบกเบต. patch เบ—เบตเปˆเบฅเบฐเบšเบธเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบเบญเบกเบฎเบฑเบšเป‚เบ”เบเบœเบนเป‰เบฎเบฑเบเบชเบฒ (Dan Carpenter), เบœเบนเป‰เบ—เบตเปˆเบ›เบฐเบ•เบดเป€เบชเบ” patch เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบšเบฑเบ™เบซเบฒเบญเบทเปˆเบ™เบเบฑเบš list_add_tail, เปเบ•เปˆเบšเปเปˆเป„เบ”เป‰เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบ•เบปเบงเบŠเบตเป‰ "chdev" เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบปเบ”เบ›เปˆเบญเบเปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™ put_device, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปƒเบ™เบเบฒเบ™เป‚เบ—. dev_err(&chdev -> dev..). เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, patch เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบš, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ„เบงเบฒเบกเบญเปˆเบญเบ™เปเบญ. เบ–เป‰เบฒ (ret < 0) { + put_device(&chdev->dev); dev_err(&chdev->dev, DRV_NAME ": kfifo_alloc เบฅเบปเป‰เบกเป€เบซเบฅเบง\n"); ret = -ENOMEM; goto err_fifo;

patch เบ—เบตเบชเบฒเบกเบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบšเป‚เบ”เบเบœเบนเป‰เบฎเบฑเบเบชเบฒ (Miquel Raynal) เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ bug เบญเบทเปˆเบ™เบ—เบตเปˆเบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบŠเปˆเบญเบ‡เป‚เบซเบงเปˆ (เป‚เบ—เบซเบฒเบชเบญเบ‡เบ„เบฑเป‰เบ‡เป€เบžเบทเปˆเบญเป€เบญเบปเบฒ pdev). เบ–เป‰เบฒ (!window->virt) { printk(KERN_ERR MOD_NAME ": ioremap(%08lx, %08lx) เบฅเบปเป‰เบกเป€เบซเบฅเบง\n", window->phys, window->size); + pci_dev_put(pdev); goto เบญเบญเบ; } ... เบ–เป‰เบฒ (!map) { printk(KERN_ERR MOD_NAME ": kmalloc เบฅเบปเป‰เบกเป€เบซเบฅเบง"); + pci_dev_put(pdev); goto เบญเบญเบ; } memset(map, 0, sizeof(*map)); ... เบ–เป‰เบฒ (mtd_device_register(map->mtd, NULL, 0)) { map_destroy(map->mtd); map->mtd = NULL; + pci_dev_put(pdev); goto เบญเบญเบ; }

เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ, 4 เบญเบญเบเบˆเบฒเบ 5 patches เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบกเบตเบšเบฑเบ™เบซเบฒ, เปเบ•เปˆเบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเป€เบญเบ‡เป„เบ”เป‰เป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเปƒเบ™เบซเบ™เบถเปˆเบ‡ patch เบ—เบตเปˆเป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒ, เปƒเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ, เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เบซเบ™เบต, เป‚เบ”เบเบšเปเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบŸเบฃเบต. err = pci_request_mem_regions(pdev, nitrox_driver_name); เบ–เป‰เบฒ (err) { pci_disable_device(pdev); + dev_err(&pdev->dev, โ€œเบฅเบปเป‰เบกเป€เบซเบฅเบงเปƒเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบžเบฒเบเบžเบทเป‰เบ™ mem!\nโ€); เบเบฑเบšเบ„เบทเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”; }

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster