Glibc 2.35 tiba dengan penambahbaikan, pembetulan pepijat dan banyak lagi

Selepas enam bulan pembangunan keluaran versi baharu Glibc 2.35 telah diumumkan di mana termasuk pembetulan daripada 66 pembangun dan daripada penambahbaikan yang dilaksanakan, kami dapati bahawa sokongan untuk tempat "C.UTF-8" telah ditambah, yang termasuk pengumpulan untuk semua kod Unicode, tetapi terhad kepada penggunaan julat ASCII dalam fungsi fnmatch, regexec dan regcomp untuk disimpan angkasa lepas.

Tempatan adalah kira-kira 400 KB, yang mana 346 KB ialah data LC_CTYPE untuk Unicode dan mesti dipasang secara berasingan (tidak dibina ke dalam Glibc). Data pengekodan, maklumat jenis aksara dan jadual transliterasi telah dikemas kini untuk menyokong spesifikasi Unicode 14.0.0.

Perubahan lain yang menonjol ialah Y melaksanakan fungsi dan makro yang membulatkan hasil kepada jenis yang lebih sempit, Selain melaksanakan fungsi dan makro untuk mencari minimum dan maksimum nombor titik terapung jenis terapung, berganda panjang, _FloatN dan _FloatNx, diterangkan dalam spesifikasi IEEE 754-2019.

untuk fungsi exp10, makro yang sepadan ditambahkan pada fail pengepala, yang tidak terikat pada jenis tertentu, ditambah dengan makro _PRINF_NAN_LEN_MAX telah ditambahkan pada , dicadangkan dalam draf standard ISO C2X.

Sistem pemautan dinamik melaksanakan algoritma pengelasan baharu DSO menggunakan carian mendalam (DFS) untuk menangani isu prestasi apabila mengendalikan kebergantungan gelung. Untuk memilih algoritma isihan DSO, parameter glibc.rtld.dynamic_sort dicadangkan, yang boleh ditetapkan kepada "1" untuk kembali kepada algoritma sebelumnya.

Selain itu menambah sokongan untuk fungsi baharu '__memcmpeq' kepada ABI, yang digunakan oleh penyusun untuk mengoptimumkan penggunaan `memcmp' apabila nilai pulangan fungsi ini digunakan hanya untuk menyemak status penyiapan sesuatu operasi.

The sokongan untuk pendaftaran benang automatik menggunakan panggilan sistem rseq (urutan boleh semula) yang disediakan sejak kernel Linux 4.18. Panggilan sistem rseq membolehkan untuk mengatur pelaksanaan berterusan sekumpulan arahan yang tidak terganggu dan melakukan keputusan dengan pernyataan terakhir dalam kumpulan. Pada asasnya, ia menyediakan kemudahan untuk pelaksanaan operasi atom yang sangat pantas yang, jika diganggu oleh benang lain, dibersihkan dan dicuba semula.

Sebaliknya, ia menyediakan kompilasi lalai semua fail boleh laku daripada program terbina dalam dan suite ujian dalam mod PIE (boleh laku bebas kedudukan).

Untuk melumpuhkan tingkah laku ini, pilihan “–disable-default-pie” disediakan, ditambah untuk Linux, menambah tetapan glibc.malloc.hugetlb untuk menukar pelaksanaan malloc untuk menggunakan panggilan sistem madvise dengan bendera MADV_HUGEPAGE untuk mmap dan sbrk, atau terus menggunakan halaman memori yang besar dengan menyatakan bendera MAP_HUGETLB dalam panggilan mmap.

Dalam kes pertama, peningkatan prestasi boleh dicapai dengan menggunakan Halaman Besar telus dalam mod madvise, dan dalam kes kedua, anda boleh menggunakan halaman besar yang ditempah sistem (Halaman Besar).

Perlu diingatkan juga bahawa beberapa kelemahan telah diperbaiki dalam versi baharu ini:

  • CVE-2022-23218, CVE-2022-23219: Limpahan penimbal dalam fungsi svcunix_create dan clnt_create yang disebabkan oleh menyalin kandungan parameter nama fail ke tindanan tanpa menyemak saiz data yang disalin. Untuk aplikasi yang dibina tanpa perlindungan tindanan dan menggunakan protokol "unix", kerentanan boleh membawa kepada pelaksanaan kod berniat jahat apabila memproses nama fail yang sangat panjang.
  • CVE-2021-3998: kelemahan dalam fungsi realpath() yang disebabkan oleh mengembalikan nilai yang salah dalam keadaan tertentu yang mengandungi sisa data yang tidak dibersihkan daripada timbunan. Untuk program SUID-root fusermount, kelemahan boleh digunakan untuk mendapatkan maklumat sensitif daripada memori proses, contohnya, untuk mendapatkan maklumat penunjuk.
  • CVE-2021-3999: limpahan penimbal bait tunggal dalam fungsi getcwd(). Masalahnya disebabkan oleh pepijat yang telah wujud sejak tahun 1995. Untuk memanggil limpahan, dalam ruang nama titik pelekap yang berasingan, hanya panggil chdir() pada direktori "/".

Akhirnya Sekiranya anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh menyemak butiran di pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.