Glibc 2.39 sistem kitabxanasının və GNU Binutils 2.42 kommunal dəstinin buraxılışı

Altı aylıq inkişafdan sonra ISO C2.39 və POSIX.11-1 standartlarının tələblərinə tam uyğun gələn GNU C Library (glibc) 2017 buraxılışı dərc olunur. Yeni buraxılışa 67 tərtibatçı tərəfindən düzəlişlər daxildir.

Glibc 2.39-də həyata keçirilən təkmilləşdirmələr arasında:

  • Nüvədə təqdim edilən kölgə yığını üçün dəstək təmin edilmişdir. Linux 6.6 versiyası, yığın buferinin daşması halında funksiyadan gələn qaytarma ünvanının üzərinə yazılmasının qarşısını almaq üçün Intel prosessorlarının aparat imkanlarından istifadə etməklə bir çox istismarı bloklayır. Bu qoruma, nəzarət funksiyaya ötürüldükdən sonra qaytarma ünvanlarını yalnız adi yığında deyil, həm də birbaşa dəyişdirilə bilməyən ayrı bir "kölgə" yığınında saxlamaqla işləyir. Funksiyadan çıxmazdan əvvəl, qaytarma ünvanı kölgə yığınından çıxarılır və əsas yığındakı qaytarma ünvanı ilə müqayisə edilir. Ünvanlardakı uyğunsuzluq, istismarın əsas yığındakı bir ünvanın üzərinə yaza bildiyi halları bloklayan bir istisna yaradır. Bu qorumanı aktivləşdirmək üçün "--enable-cet" qurma seçimi əlavə edilmişdir.
  • Yeni başlıq faylı əlavə edildi , ISO C2X standart layihəsində müəyyən edilmiş və stdc_leading_zeros, stdc_leading_ones, stdc_trailing_zeros, stdc_trailing_ones, stdc_first_leading_zero, stdc_first_leading_one, stdc_first_leading_one, erozidid funksiyaları daxil olmaqla stdc_count_zeros, stdc_count_ones, stdc_s _single_bit, stdc_bit_width, stdc_bit_floor və stdc_bit_ceil var "unsigned char", " tipli variantlarda unsigned short”, “unsigned int”, “unsigned long int” və “unsigned long long int”.
  • Platforma üçün Linux posix_spawnattr_getcgroup_np və posix_spawnattr_setcgroup_np funksiyaları, eləcə də POSIX_SPAWN_SETCGROUP bayrağı tətbiq edilmişdir. Bunlar posix_spawn və posix_spawnp funksiyalarından istifadə edərək cgroupv2-ni yeni bir prosesdə təyin etməyə imkan verir və yarış şərtlərini aradan qaldırır. Bu funksiyalar GNU genişləndirmələridir və nüvənin işləməsini tələb edir. Linux clone3 sistem çağırışı dəstəyi ilə.
  • Platforma üçün Linux Semantikası posix_spawn funksiyasına bənzər olan, lakin proses identifikatoru (PID) deyil, pidfd_send_signal, poll və waitid kimi PIDFD mexanizmini dəstəkləyən funksiyalarda istifadə üçün fayl təsviri qaytaran pidfd_spawn və pidfd_spawp funksiyaları tətbiq edilmişdir (PIDFD müəyyən bir proseslə əlaqələndirilir və dəyişmir, PID isə bu PID ilə əlaqəli cari proses başa çatdıqdan sonra başqa bir proseslə əlaqələndirilə bilər).
  • Platforma üçün Linux pid_spawn, fork_np və pidfd_open funksiyaları tərəfindən qaytarılan proses faylı təsvirçisinə (PIDFD) əsaslanaraq proses identifikatorunu (PID) təyin etmək üçün pidfd_getpid funksiyası əlavə edildi.
  • Ölçü dəyişdiricisi "wN" intN_t, int_leastN_t, uintN_t və uint_leastN_t növlərinin arqumentləri üçün istifadə olunan scanf ailəsi funksiyalarına əlavə edilmişdir. Məsələn, int32_t və int_least32_t tipləri ilə onluq dəyərləri oxumaq üçün "%w32d", onaltılıq dəyərlər isə "%w32x" kimi təyin edilə bilər. Eynilə, "wfN" dəyişdiricisi ISO C2X standart layihəsində təqdim edilmiş int_fastN_t və uint_fastN_t növlərinə əlavə edilmişdir.
  • X86-64 sistemlərində PLT-ni (Prosedur Bağlantı Cədvəli) yenidən yazmağa imkan verən “glibc.cpu.plt_rewrite” parametri əlavə edildi, burada əlaqələndirici PLT-dəki dolayı filialları birbaşa olanlarla əvəz edəcəkdir.
  • Əlavə yaddaş ayırma məlumatı (məsələn, pthread_create tərəfindən yaradılmış mövzu yığını və ya malloc vasitəsilə ayrılmış yaddaş) əlavə etmək üçün "glibc.mem.decorate_maps" parametri əlavə edildi.
  • "statvfs" strukturu indi "f_type" sahəsini "statfs" strukturundakı sahənin məzmununa bərabər olan fayl sistemi növü haqqında məlumatla doldurur. Əvvəllər, Linux "f_type" sahəsi həmişə 0-ı ehtiva edirdi.
  • AArch64 platforması üçün libmvec və math.h-ə annotasiyalar əlavə edilmişdir ki, bu da tikinti zamanı “-ffast-math” seçimini təyin edərkən GCC 9 və tərtibçinin daha yeni versiyalarında tikinti zamanı zəng vektorinqindən istifadə etməyə imkan verir. Acos, acosf, asin, asinf, atan, atanf, atan2, atan2f, cos, cosf, exp, expf, exp10, exp10f, exp2, exp2f, expm1, expm1f, log, logf, log10, log10f, riyazi funksiyalar üçün vektorlaşdırma aktiv edilib. log1p , log1pf, log2, log2f, sin, günah, tan və tanf.
  • Libcrypt kitabxanası və əlaqəli başlıq faylı paketdən silindi " " Proqram tərtibatçılarına libxcrypt kimi alternativ kitabxanalara keçmək tövsiyə olunur.
  • ldconfig yardım proqramı indi ';' simvolu olan faylları ötür. fayl adında və ya “.dpkg.tmp” və “.dpkg.new” ilə bitən, rpm və dpkg paket menecerlərinin müvəqqəti fayllarını emal etməməyə imkan verir.
  • Intel Itanium prosessorlarında istifadə olunan ia64 arxitekturasına (ia64*-*-linux-gnu) dəstək dayandırılıb.
  • Zəifliklər düzəldildi:
    • CVE-2023-6246, CVE-2023-6779, CVE-2023-6780 __vsyslog_internal() funksiyasında SUID proqramlarının işə salınması ilə manipulyasiyalar vasitəsilə yüksək imtiyazlarla kodu icra etməyə imkan verən kritik boşluqlardır.
    • CVE-2023-4911 sistemdə kök imtiyazları əldə etməyə imkan verən Glibc ld.-də zəiflikdir. Zəiflik GLIBC_TUNABLES mühit dəyişənində müəyyən edilmiş sətir təhlil kodundakı xəta ilə bağlıdır ki, bu da təhlil edilmiş dəyərin ayrılmış buferdə hüdudlardan kənara yazılması ilə nəticələnə bilər. İşləyən istismarlar var.
    • CVE-2023-4806 getaddrinfo funksiyasındakı istifadədən sonra boşluqdur. Problem NSS plagini yalnız “_gethostbyname2_r” və “_getcanonname_r” geri çağırışlarını həyata keçirdikdə, lakin “_gethostbyname3_r” çağırışını dəstəkləmədikdə baş verir. Zəiflikdən istifadə etmək üçün DNS serveri tələb olunan host üçün çoxlu sayda IPv6 və IPv4 ünvanlarını qaytarmalıdır ki, bu da AI_CANONNAME, AI_ALL və AI_V6MAPPED bayraqları olduqda AF_INET4 ailəsi üçün getaddrinfo funksiyası adlandırılan prosesin sıradan çıxmasına səbəb olacaq. təyin edin.
    • CVE-2023-4527 getaddrinfo funksiyasındakı boşluqdur və 2048 baytdan böyük TCP üzərindən alınan DNS cavabını emal edərkən məlumatların bufer sərhədindən kənar ərazidən oxunmasına imkan verir. Boşluq /etc/resolv.conf-da "no-aaaa" seçimindən istifadə edərkən baş verir.

    Əlavə olaraq, GNU linker, GNU assembler, nm, objdump, strings, strip kimi proqramları özündə cəmləşdirən GNU Binutils 2.42 sistem utilitlərinin buraxılışını qeyd edə bilərik.

    Binutils-in yeni versiyasında:

    • "--scfi=eksperimental" eksperimental variantı, System V AMD86 ABI-yə uyğun gələn əl ilə yazılmış montaj kodu üçün CFI (Control Flow Integrity) konstruksiyalarını sintez etmək üçün x64-64 sistemləri üçün assemblerə (qaz) əlavə edilmişdir.
    • St_shndx indeksi ilə istinad edilən bölmənin adı kimi simvollar ("-simvollar") haqqında geniş məlumatı göstərmək üçün oxumaq üçün "--extra-sym-info" seçimi əlavə edildi.
    • Objcopy yardım proqramı x86-64 sistemlərində ELF obyektləri üçün SHF_X86_64_LARGE bayraq bölməsini təyin etmək üçün "böyük" dəyəri ilə "--set-section-flags" seçimindən istifadə etmək imkanı verir. “--visualize-jumps” seçimi s390 arxitekturası üçün dəstəyi həyata keçirir.
    • s390 təlimatlarını sökərkən, təlimatların təsvirində şərhləri göstərmək imkanı həyata keçirildi. Təsvirləri aktivləşdirmək üçün siz objdump-da “-M insndesc” seçimini və gdb-də “set disassembler-options insndesc” seçimini təyin edə bilərsiniz.
    • DT_X86_64_PLT, DT_X86_64_PLTSZ və DT_X86_64_PLTENT teqlərindən istifadə edərək PLT cədvəlindəki qeydləri qeyd etmək üçün əlaqələndiriciyə "-z mark-plt" və "-z nomark-plt" seçimləri əlavə edildi.
    • Bağlayıcıya tərs çeşidləmə üçün dəstək əlavə edildi.
    • İcra edilə bilən yığın obyektlərində istifadə edildikdə xəbərdarlıqları və ya səhvləri çıxarmaq üçün "--warn-execstack-objects", "--error-execstack" və "--error-rxw-segments" seçimləri əlavə edildi.
    • LoongArch arxitekturasının ABI 2.30 dəstəyi, həmçinin LoongArch 1.10 spesifikasiyasında müəyyən edilmiş yeni təlimatlar üçün dəstək həyata keçirilib.
    • Kalray prosessorlarında istifadə olunan KVX təlimat dəsti üçün əlavə dəstək (məsələn, SoC Coolidge-də istifadə olunur).
    • Intel arxitekturasına əsaslanan sistemlər üçün genişləndirmələr üçün dəstək əlavə edildi:
      • Intel APX: 32 GPR, NDD, PUSH2/POP2, PUSHP/POPP.
      • USER_MSR.
      • AVX10.1.
      • PBNDKB.
      • SM4.
      • SM3.
      • SHA512.
      • AVX-VNNI-INT16.
    • RISC-V arxitektura portuna genişləndirmələr üçün dəstək əlavə edildi:
      • T-Head (XTheadVector, XTheadZvlsseg və XTheadZvamo).
      • CORE-V (XCVmac, XCValu).
      • SiFive VCIX (XSfVcp).
    • AArch64 arxitekturası üçün porta genişləndirmə dəstəyi əlavə edildi:
      • SVE2.1 (Ölçəklənən Vektor Genişləndirilməsi 2.1).
      • SME2.1 (Ölçəklənən Matrix Genişləndirilməsi 2.1).
      • B16B16 (SVE16 və SME16 üçün BFloat2 və BFloat2).
      • RASv2 (Etibarlılıq, Əlçatımlılıq və Xidmət qabiliyyəti v2).
      • LSE128 (128-bit Atom).
      • GCS (Guarded Control Stac).
      • CHK (Xüsusiyyət statusunu yoxlayın).
      • SPECRES2 (Enhanced Spekulyasiya Məhdudiyyəti).
      • LRCPC3 (Yüklə-Alın RCpc).
      • THE (Tərcümə Sərtləşməsi).
      • ITE (Təlimat İzi).
      • D128 (128-bit yaddaş səhifə cədvəli deskriptorları).
      • XS (XS yaddaş atributu).
    • AArch64 Cortex-A520, Cortex-A720, Cortex-X3 və Cortex-X4 prosessorları üçün əlavə dəstək.
    • Clang/LLVM assembler ilə uyğunluq üçün BPF assembler şərhləri “#” və “//” simvolları ilə ayırmaq, həmçinin “;” simvolundan istifadə etmək üçün dəstək əlavə etmişdir. sətir daxilində ifadələri ayırmaq üçün (";" artıq şərhlər üçün istifadə edilə bilməz).

    Mənbə: opennet.ru

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster