پس از شش ماه توسعه انتشار کتابخانه سیستم (glibc) ، که به طور کامل با الزامات استاندارد ISO C11 و POSIX.1-2017 مطابقت دارد. نسخه جدید شامل اصلاحاتی از 67 توسعه دهنده است.
از موارد اجرا شده در Glibc 2.32 می توانید توجه داشته باشید:
- پشتیبانی از پردازندههای Synopsys ARC HS (ARCv2 ISA) اضافه شد. این پورت حداقل به binutils 2.32، gcc 8.3 و هسته نیاز دارد. Linux ۵.۱. سه نوع 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 هشدارهای بهتری برای شناسایی سرریزهای احتمالی بافر و سایر سناریوهای خارج از محدوده ایجاد شود.
- برای Linux-systems توابع 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
