Glibc 2.32 Համակարգային գրադարանի թողարկում

Զարգացման վեց ամիս հետո հրատարակված համակարգի գրադարանի թողարկում GNU C գրադարան (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 ճարտարապետության համար ներդրված է IEEE128 երկար կրկնակի տիպի աջակցություն, որը միացված է «-mabi=ieeeelongdouble» տարբերակով կառուցելիս:
  • Որոշ API-ներ նշում են GCC «մուտք» հատկանիշով, որը թույլ է տալիս ավելի լավ նախազգուշացումներ ստեղծել GCC 10-ում կազմվելիս՝ հայտնաբերելու հնարավոր բուֆերային արտահոսքերը և սահմաններից դուրս այլ սցենարներ:
  • Linux համակարգերի համար pthread_attr_setsigmask_np ֆունկցիաները և
    pthread_attr_getsigmask_np, որոնք հավելվածին հնարավորություն են տալիս նշելու ազդանշանային դիմակ pthread_create-ի միջոցով ստեղծված թելերի համար:

  • Կոդավորման տվյալները, նիշերի տիպի տեղեկությունները և տառադարձման աղյուսակները թարմացվել են՝ աջակցելու Unicode 13.0.0 բնութագրին;
  • Ավելացվեց նոր վերնագրի ֆայլ , որը սահմանում է __libc_single_threaded փոփոխականը, որը կարող է օգտագործվել միակողմանի օպտիմալացման հավելվածներում։
  • Ավելացվեցին sigabbrev_np և sigdescr_np գործառույթները, որոնք վերադարձնում են ազդանշանի կրճատված անվանումը և նկարագրությունը (օրինակ՝ «HUP» և «Hangup» SIGHUP-ի համար):
  • Ավելացվեցին strerrorname_np և strerrordesc_np ֆունկցիաները, որոնք վերադարձնում են սխալի անվանումը և նկարագրությունը (օրինակ՝ «EINVAL» և «Անվավեր արգումենտ» EINVAL-ի համար):
  • ARM64 պլատֆորմի համար ավելացվել է «--enable-standard-branch-protection» դրոշը (կամ -branch-protection=standard GCC-ում), որը հնարավորություն է տալիս ARMv8.5-BTI (Branch Target Indicator) մեխանիզմին պաշտպանել հրահանգների հավաքածուների կատարում, որոնք չպետք է կատարվեն ճյուղավորվող անցումներ. Կոդերի կամայական բաժինների անցումների արգելափակումն իրականացվում է գաջեթների ստեղծումը կանխելու համար, որոնք օգտագործում են վերադարձի վրա հիմնված ծրագրավորման տեխնիկա (ROP - Return-Oriented Programming; հարձակվողը չի փորձում իր կոդը տեղադրել հիշողության մեջ, այլ գործում է արդեն գոյություն ունեցող կտորների վրա: մեքենայական հրահանգներ, որոնք ավարտվում են վերադարձի կառավարման հրահանգով, որից կառուցվում է զանգերի շղթա՝ ցանկալի ֆունկցիոնալությունը ստանալու համար):
  • Իրականացվել է հնացած գործառույթների խոշոր մաքրում, ներառյալ «--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 սիմվոլները, և N.
  • ldconfig-ը լռելյայն տեղափոխվել է նոր ld.so.cache ձևաչափն օգտագործելու համար, որն աջակցվում է glibc-ում գրեթե 20 տարի:
  • Շտկված են խոցելիությունները.
    • CVE-2016-10228 – iconv կոմունալում հանգույց է առաջանում, երբ աշխատում է «-c» տարբերակով, երբ մշակվում է սխալ բազմաբայթ տվյալներ:
    • CVE-2020-10029 Կտտացրեք կոռուպցիան կեղծ զրոյական արգումենտով եռանկյունաչափական ֆունկցիաներ կանչելիս:
    • CVE-2020-1752 - Օգտագործումից հետո ազատ հիշողության հասանելիություն glob ֆունկցիայի մեջ, երբ ընդլայնում է հղումը դեպի հիմնական գրացուցակը («~user») ուղիներով:
    • CVE-2020-6096 – ARMv7 պլատֆորմի վրա բացասական պարամետրերի արժեքների սխալ մշակում memcpy() և memmove(), որը որոշում է պատճենված տարածքի չափը: Թույլ է տալիս կազմակերպել կոդի կատարումը memcpy() և memmove() ֆունկցիաներում որոշակի ձևաչափված տվյալները մշակելիս: Հատկանշական է, որ խնդիրը մնաց Չուղղված գրեթե երկու ամիս՝ տեղեկատվությունը հրապարակայնորեն բացահայտվելուց հետո, և հինգ ամիս այն պահից, երբ Glibc մշակողները ծանուցվեցին:

Source: opennet.ru

Добавить комментарий