Glibc 2.35 ra mắt với các cải tiến, sửa lỗi và hơn thế nữa

Sau sáu tháng phát triển việc phát hành phiên bản mới của Glibc 2.35 đã được công bố trong đó bao gồm các bản sửa lỗi từ 66 nhà phát triển và trong số các cải tiến đã triển khai, chúng tôi có thể thấy rằng hỗ trợ cho ngôn ngữ "C.UTF-8" đã được thêm vào, bao gồm các đối chiếu cho tất cả các mã Unicode, nhưng bị giới hạn ở việc sử dụng các phạm vi ASCII trong các hàm fnmatch, regexec và regcomp để lưu khoảng trống.

Ngôn ngữ là khoảng 400 KB, trong đó 346 KB là dữ liệu LC_CTYPE cho Unicode và phải được cài đặt riêng (không được tích hợp sẵn trong Glibc). Dữ liệu mã hóa, thông tin kiểu ký tự và bảng chuyển tự đã được cập nhật để hỗ trợ đặc tả Unicode 14.0.0.

Một thay đổi khác nổi bật là Y triển khai các hàm và macro làm tròn kết quả thành một loại hẹp hơn, Ngoài việc triển khai các hàm và macro để tìm số lượng dấu phẩy động tối thiểu và tối đa của các loại float, long double, _FloatN và _FloatNx, được mô tả trong đặc tả IEEE 754-2019.

cho các chức năng exp10, các macro tương ứng được thêm vào tệp tiêu đề, không bị ràng buộc với các loại cụ thể, cộng với macro _PRINTF_NAN_LEN_MAX đã được thêm vào , được đề xuất trong dự thảo tiêu chuẩn ISO C2X.

Hệ thống liên kết động thực hiện một thuật toán phân loại mới DSO sử dụng tìm kiếm theo chiều sâu (DFS) để giải quyết các vấn đề về hiệu suất khi xử lý các phụ thuộc của vòng lặp. Để chọn thuật toán sắp xếp DSO, tham số glibc.rtld.dynamic_sort được đề xuất, có thể được đặt thành "1" để quay lại thuật toán trước đó.

bên cạnh đó hỗ trợ thêm cho một chức năng mới '__memcmpeq' đối với ABI, được sử dụng bởi trình biên dịch để tối ưu hóa việc sử dụng `memcmp 'khi giá trị trả về của hàm này chỉ được sử dụng để kiểm tra trạng thái hoàn thành của một hoạt động.

Các hỗ trợ đăng ký chuỗi tự động sử dụng lệnh gọi hệ thống rseq (chuỗi có thể khởi động lại) được cung cấp kể từ nhân Linux 4.18. Lệnh gọi hệ thống rseq cho phép tổ chức thực hiện liên tục một nhóm hướng dẫn mà không bị gián đoạn và cam kết kết quả với câu lệnh cuối cùng trong nhóm. Về cơ bản, nó cung cấp một cơ sở để thực thi nguyên tử rất nhanh các hoạt động, nếu bị gián đoạn bởi một luồng khác, sẽ được dọn dẹp và thử lại.

Mặt khác, nó cung cấp biên dịch mặc định của tất cả các tệp thực thi của các chương trình cài sẵn và bộ thử nghiệm ở chế độ PIE (thực thi độc lập với vị trí).

Để vô hiệu hóa hành vi này, tùy chọn “–disable-default-pie” được cung cấp, cộng với Linux, đã thêm cài đặt glibc.malloc.hugetlb để thay đổi việc triển khai malloc để sử dụng lệnh gọi hệ thống madvise với cờ MADV_HUGEPAGE cho mmap và sbrk, hoặc sử dụng trực tiếp các trang bộ nhớ lớn bằng cách chỉ định cờ MAP_HUGETLB trong lệnh gọi mmap.

Trong trường hợp đầu tiên, bạn có thể tăng hiệu suất bằng cách sử dụng các Trang khổng lồ trong suốt ở chế độ madvise và trong trường hợp thứ hai, bạn có thể sử dụng các trang khổng lồ do hệ thống dành riêng (Trang lớn).

Cũng cần lưu ý rằng một số lỗ hổng đã được sửa trong phiên bản mới này:

  • CVE-2022-23218, CVE-2022-23219: Tràn bộ đệm trong hàm svcunix_create và clnt_create do sao chép nội dung của tham số tên tệp vào ngăn xếp mà không kiểm tra kích thước của dữ liệu được sao chép. Đối với các ứng dụng được xây dựng mà không có bảo vệ ngăn xếp và sử dụng giao thức "unix", lỗ hổng bảo mật có thể dẫn đến việc thực thi mã độc khi xử lý các tên tệp rất dài.
  • CVE-2021-3998: một lỗ hổng trong hàm realpath () do trả về một giá trị không chính xác trong một số điều kiện nhất định có chứa dữ liệu dư chưa được dọn dẹp từ ngăn xếp. Đối với chương trình SUID-root fusermount, lỗ hổng bảo mật có thể được sử dụng để lấy thông tin nhạy cảm từ bộ nhớ xử lý, ví dụ, để lấy thông tin con trỏ.
  • CVE-2021-3999: tràn bộ đệm byte đơn trong hàm getcwd (). Sự cố là do một lỗi xuất hiện từ năm 1995. Để gọi một lỗi tràn, trong một không gian tên điểm gắn kết riêng biệt, chỉ cần gọi chdir () trên thư mục "/".

Cuối cùng Nếu bạn muốn biết thêm về nó, bạn có thể kiểm tra các chi tiết trong liên kết theo dõi.


Hãy là người đầu tiên nhận xét

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.