Glibc 2.35 سسٹم لائبریری ریلیز

چھ ماہ کی ترقی کے بعد، GNU C Library (glibc) 2.35 سسٹم لائبریری جاری کی گئی ہے، جو ISO C11 اور POSIX.1-2017 کے معیارات کی مکمل تعمیل کرتی ہے۔ نئی ریلیز میں 66 ڈویلپرز کی اصلاحات شامل ہیں۔

Glibc 2.35 میں لاگو کی گئی کچھ اصلاحات میں شامل ہیں:

  • "C.UTF-8" لوکیل کے لیے شامل کیا گیا تعاون، جس میں تمام یونیکوڈ کوڈز کے لیے کولیشن رولز شامل ہیں، لیکن جگہ بچانے کے لیے fnmatch، regexec اور regcomp فنکشنز میں ASCII رینجز کے استعمال تک محدود ہے۔ لوکیل تقریباً 400 KB ہے، جس میں سے 346 KB یونیکوڈ کے لیے LC_CTYPE ڈیٹا ہے، اور اس کے لیے الگ انسٹالیشن کی ضرورت ہے (گلیب سی میں نہیں بنایا گیا)۔
  • یونیکوڈ 14.0.0 تفصیلات کو سپورٹ کرنے کے لیے انکوڈنگ ڈیٹا، کریکٹر کی قسم کی معلومات، اور ٹرانسلیٹریشن ٹیبلز کو اپ ڈیٹ کر دیا گیا ہے۔
  • میں اور فنکشنز اور میکروز کو لاگو کیا جاتا ہے جو نتیجہ کو ایک تنگ قسم تک لے جاتے ہیں: fsqrt, fsqrtl, dsqrtl, ffma, ffmal, dfmal, fMsqrtfN, fMsqrtfNx, fMxsqrtfN, fMxsqrtfNx, fMfmafN, fMfmx, fMfmx, fMfmafN, fMxmx. فنکشنز کو TS 18661-1:2014، TS 18661-3:2015 میں بیان کیا گیا ہے اور مستقبل کے ISO C2X C معیار کے مسودے میں شامل کیا گیا ہے۔
  • میں اور فلوٹ، لانگ ڈبل، _FloatN اور _FloatNx کی اقسام کے ساتھ کم از کم اور زیادہ سے زیادہ فلوٹنگ پوائنٹ نمبرز تلاش کرنے کے لیے فنکشنز اور میکرو نافذ کیے گئے، جنہیں IEEE 754-2019 تفصیلات میں بیان کیا گیا ہے اور مستقبل کے ISO C2X C معیار کے مسودے میں شامل کیا گیا ہے: fmaximum, fmaximum_num , fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num, fminimum_mag, fminimum_mag_num۔
  • میں واحد درستگی کے فلوٹنگ پوائنٹ نمبرز کے لیے مستقل شامل کیے گئے: M_Ef, M_LOG2Ef, M_LOG10Ef, M_LN2f, M_LN10f, M_PIf, M_PI_2f, M_PI_4f, M_1_PIf, M_2_PIf, M_2_SQRTSP_f, M_2_SQRTS_f1f, M_2_SQRTS_XNUMXf, M_XNUMX_PIf.
  • ہیڈر فائل میں فنکشنز exp10 کے لیے متعلقہ میکرو شامل کیے گئے جو مخصوص اقسام سے منسلک نہیں ہیں۔
  • میں مسودہ ISO C2X معیار میں تجویز کردہ _PRINTF_NAN_LEN_MAX میکرو کو شامل کیا۔
  • بائنری نمائندگی میں انٹیجرز پرنٹ کرنے کے لیے فنکشنز کے printf فیملی میں "%b" اور "%B" فارمیٹ کی وضاحت کرنے والوں کو شامل کیا گیا۔
  • ڈائنامک لنکنگ سسٹم ایک نیا DSO چھانٹنے والا الگورتھم نافذ کرتا ہے جو depth-first search (DFS) کا استعمال کرتے ہوئے کارکردگی کے مسائل کو حل کرنے کے لیے کرتا ہے جب لوپڈ انحصار کو سنبھالا جاتا ہے۔ DSO ترتیب دینے والے الگورتھم کو منتخب کرنے کے لیے، glibc.rtld.dynamic_sort پیرامیٹر تجویز کیا گیا ہے، جسے پرانے الگورتھم پر واپس جانے کے لیے "1" پر سیٹ کیا جا سکتا ہے۔
  • ABI نے ایک نئے فنکشن '__memcmpeq' کے لیے سپورٹ شامل کیا ہے، جو کمپائلرز کے ذریعے 'memcmp' کے استعمال کو بہتر بنانے کے لیے استعمال کیا جاتا ہے اگر اس فنکشن کے ذریعے لوٹائی گئی ویلیو کو صرف آپریشن کی تکمیل کی حیثیت کو چیک کرنے کے لیے استعمال کیا جاتا ہے۔
  • لینکس کرنل 4.18 کے بعد سے فراہم کردہ rseq (دوبارہ شروع کرنے کے قابل ترتیب) سسٹم کال کا استعمال کرتے ہوئے تھریڈز کو خود بخود رجسٹر کرنے کے لیے معاونت شامل کی گئی۔ rseq سسٹم کال آپ کو ہدایات کے ایک گروپ کے مسلسل عمل کو منظم کرنے کی اجازت دیتی ہے جس میں کوئی خلل نہیں پڑتا ہے اور گروپ میں آخری ہدایات سے نتیجہ کی تصدیق ہوتی ہے۔ بنیادی طور پر، یہ کارروائیوں کے بہت تیزی سے ایٹم پر عمل درآمد کے لیے ایک ذریعہ فراہم کرتا ہے، اگر کسی اور دھاگے سے خلل پڑتا ہے، تو اسے صاف کر کے دوبارہ کوشش کی جاتی ہے۔
  • شامل کیا گیا symlink /usr/bin/ld.so۔
  • ایمبیڈڈ پروگراموں کی تمام قابل عمل فائلوں کی ڈیفالٹ اسمبلی اور PIE (پوزیشن انڈیپینڈنٹ ایگزیکیوٹیبل) موڈ میں ٹیسٹ سیٹ فراہم کی گئی ہے۔ اس رویے کو غیر فعال کرنے کے لیے، "-disable-default-pie" آپشن فراہم کیا جاتا ہے۔
  • لینکس کے لیے، ایک glibc.malloc.hugetlb سیٹنگ شامل کی گئی ہے تاکہ malloc نفاذ کو madvise سسٹم کال کو mmap اور sbrk کے لیے MADV_HUGEPAGE فلیگ کے ساتھ استعمال کرنے کے لیے تبدیل کیا جا سکے، یا mmap میں MAP_HUGETLB پرچم کی وضاحت کر کے براہ راست بڑے میموری پیجز کو استعمال کیا جا سکے۔ کالز پہلی صورت میں، کارکردگی کے فوائد حاصل کیے جاسکتے ہیں اگر شفاف بڑے صفحات کو مدویس موڈ میں استعمال کیا جائے، اور دوسری صورت میں، سسٹم کے لیے محفوظ کردہ بڑے صفحات کو استعمال کرنے کی اہلیت فراہم کی جائے۔
  • شامل کیا گیا _dl_find_object فنکشن جو کال اسٹیک کو کھولنے کی معلومات کو شامل کرنے کے لیے استعمال کیا جا سکتا ہے۔
  • اوپن آر آئی ایس سی آرکیٹیکچر (یا 1k-linux-gnu) کے لیے نرم فلوٹ موڈ میں تعاون شامل کیا گیا۔ پورٹ کو بائنوٹلز 2.35، جی سی سی 11، اور لینکس کرنل 5.4 کی ضرورت ہے۔
  • ایک بلڈ فلیگ "--with-rtld-early-cflags" شامل کیا گیا، جو کہ ڈائنامک لنکنگ کے لیے ابتدائی کوڈ بناتے وقت استعمال کیے جانے والے اضافی تالیف کے جھنڈوں کی وضاحت کے لیے استعمال کیا جا سکتا ہے۔
  • لینکس پلیٹ فارم کے لیے، epoll_pwait2 فنکشن کو شامل کیا گیا ہے، جو نینو سیکنڈ پریزیشن کے ساتھ ٹائم آؤٹ بتا کر epoll_wait سے مختلف ہے۔
  • posix_spawn_file_actions_addtcsetpgrp_np فنکشن کو ایک نئے عمل کے لیے کنٹرول ٹرمینل سیٹ کرتے وقت ریس کے حالات کو ختم کرنے کے لیے شامل کیا گیا۔
  • Glibc اور GCC 12+ کے ساتھ مرتب کردہ ایپلیکیشنز کے لیے، "_FORTIFY_SOURCE=3" پروٹیکشن موڈ نافذ کیا گیا ہے، جو string.h ہیڈر فائل میں بیان کردہ سٹرنگ فنکشنز کو انجام دیتے وقت ممکنہ بفر اوور فلو کا پتہ لگاتا ہے۔ "_FORTIFY_SOURCE=2" موڈ سے فرق اضافی چیکوں تک آتا ہے، جو ممکنہ طور پر کارکردگی میں کمی کا باعث بن سکتا ہے۔
  • Intel MPX (میموری پروٹیکشن ایکسٹینشنز) کے لیے سپورٹ، جو میموری باؤنڈز کے لیے پوائنٹرز کو چیک کرنے کے لیے استعمال کیا جاتا ہے، بند کر دیا گیا ہے (یہ ٹیکنالوجی وسیع نہیں ہوئی ہے اور اسے پہلے ہی GCC اور LLVM سے ہٹا دیا گیا ہے)۔
  • پری لنک میکانزم اور اس سے وابستہ ماحولیاتی متغیرات LD_TRACE_PRELINKING اور LD_USE_LOAD_BIAS کو فرسودہ کر دیا گیا ہے اور آئندہ ریلیز میں ہٹا دیا جائے گا۔

    کمزوریاں طے کی گئیں:

    • CVE-2022-23218, CVE-2022-23219 – svcunix_create اور clnt_create فنکشنز میں بفر اوور فلو، کاپی شدہ ڈیٹا کے سائز کو چیک کیے بغیر فائل نام کے پیرامیٹر کے مواد کو اسٹیک پر کاپی کرنے کی وجہ سے ہوتا ہے۔ اسٹیک پروٹیکشن کے بغیر اور "یونکس" پروٹوکول کا استعمال کرتے ہوئے بنائی گئی ایپلی کیشنز کے لیے، بہت طویل فائل کے ناموں پر کارروائی کرتے وقت کمزوری حملہ آور کوڈ کے نفاذ کا باعث بن سکتی ہے۔
    • CVE-2021-3998 ریئل پاتھ() فنکشن میں ایک کمزوری ہے کیونکہ واپسی کی وجہ سے، کچھ شرائط کے تحت، اسٹیک سے ناپاک بقایا ڈیٹا پر مشتمل غلط قدر کی. SUID-root fusermount پروگرام کے لیے، کمزوری کو پروسیس میموری سے حساس معلومات حاصل کرنے کے لیے استعمال کیا جا سکتا ہے، مثال کے طور پر، پوائنٹرز کے بارے میں معلومات حاصل کرنے کے لیے۔
    • CVE-2021-3999 - getcwd() فنکشن میں سنگل بائٹ بفر اوور فلو۔ مسئلہ ایک بگ کی وجہ سے ہے جو 1995 سے موجود ہے۔ اوور فلو کا سبب بننے کے لیے، صرف chdir() کو "/" ڈائرکٹری پر ایک علیحدہ ماؤنٹ پوائنٹ نیم اسپیس میں کال کریں۔

    ماخذ: opennet.ru

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