انتشار کتابخانه سیستم Glibc 2.32

پس از شش ماه توسعه منتشر شد انتشار کتابخانه سیستم کتابخانه گنو سی (glibc) 2.32، که به طور کامل با الزامات استاندارد ISO C11 و POSIX.1-2017 مطابقت دارد. نسخه جدید شامل اصلاحاتی از 67 توسعه دهنده است.

از موارد اجرا شده در Glibc 2.32 بهبودها می توانید توجه داشته باشید:

  • پشتیبانی از پردازنده های Synopsys ARC HS (ARCv2 ISA) اضافه شده است. این پورت برای اجرا به حداقل binutils 2.32، gcc 8.3 و Linux kernel 5.1 نیاز دارد. سه نوع ABI پشتیبانی می شوند: arc-linux-gnu، arc-linux-gnuhf و arceb-linux-gnu (big-endian).
  • بارگذاری ماژول های حسابرسی مشخص شده در بخش های DT_AUDIT و
    DT_DEPAUDIT فایل اجرایی.

  • برای معماری powerpc64le، پشتیبانی از نوع long double IEEE128 اجرا شده است که هنگام ساخت با گزینه "-mabi=ieeelongdouble" فعال می شود.
  • برخی از APIها با ویژگی «دسترسی» GCC حاشیه‌نویسی می‌شوند، که اجازه می‌دهد هنگام کامپایل شدن در GCC 10 هشدارهای بهتری برای شناسایی سرریزهای احتمالی بافر و سایر سناریوهای خارج از محدوده ایجاد شود.
  • برای سیستم های لینوکس، توابع pthread_attr_setsigmask_np و
    pthread_attr_getsigmask_np، که به برنامه این امکان را می دهد که یک ماسک سیگنال برای رشته های ایجاد شده با استفاده از pthread_create مشخص کند.

  • داده‌های رمزگذاری، اطلاعات نوع کاراکتر و جداول نویسه‌گردانی برای پشتیبانی از مشخصات یونیکد 13.0.0 به‌روزرسانی شده‌اند.
  • فایل هدر جدید اضافه شد ، که متغیر __libc_single_threaded را تعریف می کند، که می تواند در برنامه های کاربردی برای بهینه سازی های تک رشته ای استفاده شود.
  • توابع sigabbrev_np و sigdescr_np اضافه شد که نام کوتاه شده و توضیحات سیگنال را برمی گرداند (به عنوان مثال، "HUP" و "Hangup" برای SIGHUP).
  • توابع strerrorname_np و strerrordesc_np اضافه شد که نام و شرح خطا را برمی گرداند (به عنوان مثال، "EINVAL" و "Argument Invalid" برای EINVAL).
  • برای پلتفرم ARM64، یک پرچم "--enable-standard-branch-protection" اضافه شده است (یا -mbranch-protection=استاندارد در GCC)، که مکانیسم ARMv8.5-BTI (شاخص هدف شاخه) را برای محافظت از اجرای مجموعه دستوراتی که نباید اجرا شوند. مسدود کردن انتقال به بخش‌های دلخواه کد برای جلوگیری از ایجاد ابزارهایی در اکسپلویت‌هایی که از تکنیک‌های برنامه‌نویسی بازگشت‌گرا استفاده می‌کنند، پیاده‌سازی می‌شود (ROP - برنامه‌نویسی بازگشت‌گرا؛ مهاجم سعی نمی‌کند کد خود را در حافظه قرار دهد، بلکه روی قطعات موجود کار می‌کند. دستورالعمل‌های ماشینی که با یک دستورالعمل کنترل بازگشت پایان می‌یابند، که از آن زنجیره‌ای از فراخوان‌ها برای دستیابی به عملکرد مورد نظر ساخته می‌شود).
  • پاکسازی عمده ای از ویژگی های قدیمی انجام شده است، از جمله حذف گزینه های «--enable-obsolete-rpc» و «--enable-obsolete-nsl»، فایل هدر. . توابع sstk، siginterrupt، sigpause، sighold، sigrelse، sigignore و sigset، آرایه‌های sys_siglist، _sys_siglist و sys_sigabbrev، نمادهای sys_errlist، _sys_errlist، sys_nerr و _sys_nerr ماژول‌های NSSpreod he شده‌اند.
  • ldconfig به طور پیش فرض برای استفاده از قالب جدید ld.so.cache منتقل شده است که تقریباً 20 سال است در glibc پشتیبانی می شود.
  • آسیب پذیری ها رفع شد:
    • CVE-2016-10228 - یک حلقه در ابزار iconv هنگام اجرا با گزینه "-c" هنگام پردازش داده های چند بایتی نادرست رخ می دهد.
    • CVE-2020-10029 هنگام فراخوانی توابع مثلثاتی با آرگومان شبه تهی، خرابی را پشته کنید.
    • CVE-2020-1752 - دسترسی بدون استفاده به حافظه در تابع glob هنگام گسترش یک مرجع به فهرست اصلی ("~user") در مسیرها.
    • CVE-2020-6096 – مدیریت نادرست مقادیر پارامترهای منفی در memcpy() و memmove() در پلت فرم ARMv7 که اندازه ناحیه کپی شده را تعیین می کند. اجازه می دهد هنگام پردازش داده های فرمت شده به روش خاصی در توابع memcpy() و memmove() اجرای کد را سازماندهی کنید. قابل توجه است که مشکل باقی ماند تقریباً دو ماه از زمان افشای اطلاعات عمومی و پنج ماه پس از اطلاع توسعه دهندگان Glibc اصلاح نشده است.

منبع: opennet.ru

اضافه کردن نظر