مینیسوٹا یونیورسٹی کی ایک ٹیم نے بھیجی گئی بدنیتی پر مبنی تبدیلیوں کے بارے میں تفصیلات ظاہر کی ہیں۔

معافی کے کھلے خط کے بعد، مینیسوٹا یونیورسٹی کے محققین کے ایک گروپ نے، جن کے لینکس کرنل میں تبدیلیوں کو قبول کرنا گریگ کروہ-ہارٹ مین نے بلاک کر دیا تھا، نے کرنل ڈویلپرز کو بھیجے گئے پیچ اور دیکھ بھال کرنے والوں کے ساتھ خط و کتابت کے بارے میں تفصیلی معلومات کا انکشاف کیا۔ ان پیچ سے متعلق.

یہ قابل ذکر ہے کہ دیکھ بھال کرنے والوں کی پہل پر تمام پریشانی والے پیچ کو مسترد کردیا گیا تھا؛ ایک بھی پیچ کو منظور نہیں کیا گیا تھا۔ یہ حقیقت یہ واضح کرتی ہے کہ گریگ کروہ-ہارٹ مین نے اتنی سختی کیوں کی، کیونکہ یہ واضح نہیں ہے کہ اگر پیچ کو دیکھ بھال کرنے والوں کی طرف سے منظور کیا جاتا تو محققین کیا کرتے۔ پچھلی نظر میں، انہوں نے دعویٰ کیا کہ وہ ایک بگ کی اطلاع دینے کا ارادہ رکھتے ہیں اور پیچ کو گٹ پر جانے کی اجازت نہیں دیتے، لیکن یہ واضح نہیں ہے کہ انہوں نے اصل میں کیا کیا ہوگا اور وہ کتنی دور جا چکے ہوں گے۔

اگست 2020 میں گمنام پتوں سے کل [ای میل محفوظ] и [ای میل محفوظ] (جیمز بانڈ کی طرف سے خط) پانچ پیچ بھیجے گئے: دو درست (1، 2) اور تین میں چھپی ہوئی غلطیاں (1، 2، 3)، خطرات کے لیے حالات پیدا کرتے ہیں۔ ہر پیچ میں کوڈ کی صرف 1-4 لائنیں تھیں۔ غلط پیچ کے پیچھے بنیادی خیال یہ تھا کہ میموری لیک کو ٹھیک کرنے سے دوہری فری خطرے کی کیفیت پیدا ہوسکتی ہے۔ ایک ہفتہ بعد، کرنل ڈویلپرز کو معلومات بھیجی گئیں جس میں میموری لیکس کے لیے معمولی اصلاحات کی آڑ میں کمزوریوں کو فروغ دینے کے امکان پر تبادلہ خیال کیا گیا، لیکن بدنیتی پر مبنی پیچ بھیجنے کی سابقہ ​​کوششوں کے بارے میں کچھ نہیں کہا گیا۔

پہلے پریشانی والے پیچ نے کسی خرابی کی صورت میں کنٹرول واپس کرنے سے پہلے kfree() پر کال شامل کرکے میموری لیک کو ٹھیک کیا، لیکن میموری کے علاقے کو آزاد کرنے کے بعد اس تک رسائی کے لیے حالات پیدا کیے (استعمال کے بعد مفت)۔ اس پیچ کو دیکھ بھال کرنے والے (جیری سلیبی) نے مسترد کر دیا، جس نے اس مسئلے کی نشاندہی کی اور نشاندہی کی کہ ایک سال پہلے کسی نے پہلے ہی اسی طرح کی تبدیلی کی تجویز پیش کرنے کی کوشش کی تھی اور اسے ابتدائی طور پر قبول کر لیا گیا تھا، لیکن پھر خطرے کی شرائط کی نشاندہی کرنے کے بعد اسے مسترد کر دیا گیا تھا۔ > p2 = p1[n] = kmalloc_array(64, sizeof(u16), GFP_KERNEL)؛ > - اگر (!p2) واپسی -ENOMEM؛ > + if (!p2) { > + kfree(p1); > + واپسی -ENOMEM؛ > + }

دوسرے پیچ میں استعمال کے بعد مفت مسئلہ کی شرائط بھی شامل ہیں۔ مخصوص پیچ کو مینٹینر (ڈین کارپینٹر) نے قبول نہیں کیا، جس نے list_add_tail کے ساتھ ایک اور مسئلے کی وجہ سے پیچ کو مسترد کر دیا، لیکن اس نے یہ نہیں دیکھا کہ "chdev" پوائنٹر کو put_device فنکشن میں آزاد کیا جا سکتا ہے، جو کال میں نیچے استعمال ہوتا ہے۔ dev_err(&chdev ->dev..)۔ تاہم، پیچ کو قبول نہیں کیا گیا تھا، حالانکہ اس وجہ سے جو خطرے سے متعلق نہیں تھی۔ اگر (ret <0) { + put_device(&chdev->dev)؛ dev_err(&chdev->dev, DRV_NAME ": kfifo_alloc ناکام\n"); ret = -ENOMEM؛ جاؤ err_fifo؛

تیسرا پیچ بھی دیکھ بھال کرنے والے (Miquel Raynal) کے ذریعہ قبول نہیں کیا گیا تھا کیونکہ ایک اور مسئلے کا تعلق خطرے سے نہیں ہے (pdev کے لئے ڈالنے کے لئے ڈبل کال)۔ اگر (!window->virt) { printk(KERN_ERR MOD_NAME": ioremap(%08lx, %08lx) ناکام\n", window->phys, window->size); + 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); map->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

نیا تبصرہ شامل کریں