Glibc 2.35 มาพร้อมกับการปรับปรุง แก้ไขข้อบกพร่อง และอื่นๆ

หลังจากหกเดือนของการพัฒนา ประกาศเปิดตัว Glibc 2.35 เวอร์ชันใหม่แล้ว ซึ่งใน รวมการแก้ไขจากนักพัฒนา 66 คน และจากการปรับปรุงที่นำไปใช้ เราพบว่ามีการเพิ่มการรองรับภาษา "C.UTF-8" ซึ่งรวมถึงการเปรียบเทียบสำหรับรหัส Unicode ทั้งหมด แต่จำกัดเฉพาะการใช้ช่วง ASCII ในฟังก์ชัน fnmatch, regexec และ regcomp เพื่อบันทึก ช่องว่าง.

โลแคลมีขนาดประมาณ 400 KB โดยที่ 346 KB เป็นข้อมูล LC_CTYPE สำหรับ Unicode และต้องติดตั้งแยกต่างหาก (ไม่ได้สร้างไว้ใน Glibc) ข้อมูลการเข้ารหัส ข้อมูลประเภทอักขระ และตารางการทับศัพท์ได้รับการอัปเดตเพื่อรองรับข้อกำหนด Unicode 14.0.0

การเปลี่ยนแปลงที่โดดเด่นอีกประการหนึ่งก็คือ Y ใช้ฟังก์ชันและมาโครที่ปัดเศษผลลัพธ์เป็นประเภทที่แคบลง นอกเหนือจากการใช้ฟังก์ชันและมาโครเพื่อค้นหาจำนวนจุดทศนิยมต่ำสุดและสูงสุดของประเภท float, long double, _FloatN และ _FloatNx ที่อธิบายไว้ในข้อกำหนด IEEE 754-2019

สำหรับฟังก์ชั่น exp10 เพิ่มมาโครที่เกี่ยวข้องลงในไฟล์ส่วนหัวซึ่งไม่ได้ผูกกับประเภทใดประเภทหนึ่ง รวมทั้งมีการเพิ่มมาโคร _PRINTF_NAN_LEN_MAX ลงใน เสนอในร่างมาตรฐาน ISO C2X

ระบบเชื่อมโยงแบบไดนามิกใช้อัลกอริธึมการจำแนกประเภทใหม่ DSO โดยใช้การค้นหาเชิงลึก (DFS) เพื่อแก้ไขปัญหาด้านประสิทธิภาพเมื่อจัดการกับการขึ้นต่อกันแบบวนซ้ำ ในการเลือกอัลกอริธึมการจัดเรียง DSO จะมีการเสนอพารามิเตอร์ glibc.rtld.dynamic_sort ซึ่งสามารถตั้งค่าเป็น "1" เพื่อถอยกลับไปยังอัลกอริธึมก่อนหน้า

นอกจากนั้นแล้ว เพิ่มการรองรับฟังก์ชั่นใหม่ '__memcmpeq' ไปยัง ABI ซึ่งใช้โดยคอมไพเลอร์เพื่อเพิ่มประสิทธิภาพการใช้ 'memcmp' เมื่อใช้ค่าส่งคืนของฟังก์ชันนี้เพื่อตรวจสอบสถานะความสมบูรณ์ของการดำเนินการเท่านั้น

ดิ รองรับการลงทะเบียนเธรดอัตโนมัติ โดยใช้การเรียกระบบ rseq (ลำดับที่รีสตาร์ทได้) ที่ให้ไว้ตั้งแต่เคอร์เนล Linux 4.18 การเรียกระบบ rseq ช่วยในการจัดระเบียบการดำเนินการของกลุ่มคำสั่งอย่างต่อเนื่อง ซึ่งไม่ถูกขัดจังหวะและส่งผลกับคำสั่งสุดท้ายในกลุ่ม โดยพื้นฐานแล้ว มันอำนวยความสะดวกสำหรับการดำเนินการปรมาณูอย่างรวดเร็ว ซึ่งหากถูกขัดจังหวะโดยเธรดอื่น จะถูกล้างและลองใหม่

ในทางกลับกัน ให้ การรวบรวมเริ่มต้นของไฟล์ปฏิบัติการทั้งหมด ของโปรแกรมในตัวและชุดทดสอบในโหมด PIE (ปฏิบัติการที่ไม่ขึ้นกับตำแหน่ง)

หากต้องการปิดใช้งานพฤติกรรมนี้ มีตัวเลือก “–disable-default-pie” ให้ไว้บวกสำหรับ Linux เพิ่มการตั้งค่า glibc.malloc.hugetlb เพื่อเปลี่ยนการใช้งาน malloc เพื่อใช้การเรียกระบบ madvise ด้วยแฟล็ก MADV_HUGEPAGE สำหรับ mmap และ sbrk หรือใช้หน้าหน่วยความจำขนาดใหญ่โดยตรงโดยระบุแฟล็ก MAP_HUGETLB ในการเรียก mmap

ในกรณีแรก สามารถเพิ่มประสิทธิภาพได้โดยใช้ Huge Pages แบบโปร่งใสในโหมด madvise และในกรณีที่สอง คุณสามารถใช้เพจขนาดใหญ่ที่สงวนไว้โดยระบบ (Huge Pages)

นอกจากนี้ ควรสังเกตด้วยว่าช่องโหว่บางอย่างได้รับการแก้ไขในเวอร์ชันใหม่นี้:

  • CVE-2022-23218, CVE-2022-23219: บัฟเฟอร์ล้นในฟังก์ชัน svcunix_create และ clnt_create ที่เกิดจากการคัดลอกเนื้อหาของพารามิเตอร์ชื่อไฟล์ลงในสแต็กโดยไม่ตรวจสอบขนาดของข้อมูลที่คัดลอก สำหรับแอปพลิเคชันที่สร้างขึ้นโดยไม่มีการป้องกันสแตกและใช้โปรโตคอล "unix" ช่องโหว่นี้อาจนำไปสู่การเรียกใช้โค้ดที่เป็นอันตรายเมื่อประมวลผลชื่อไฟล์ที่ยาวมาก
  • CVE-2021-3998: ช่องโหว่ในฟังก์ชัน realpath() ที่เกิดจากการคืนค่าที่ไม่ถูกต้องภายใต้เงื่อนไขบางประการที่มีข้อมูลตกค้างที่ไม่สะอาดจากสแต็ก สำหรับโปรแกรม SUID-root fusermount ช่องโหว่สามารถใช้เพื่อรับข้อมูลที่ละเอียดอ่อนจากหน่วยความจำของกระบวนการ เช่น เพื่อรับข้อมูลตัวชี้
  • CVE-2021-3999: บัฟเฟอร์ล้นไบต์เดียวในฟังก์ชัน getcwd() ปัญหาเกิดจากบั๊กที่มีมาตั้งแต่ปี 1995 หากต้องการเรียกโอเวอร์โฟลว์ ในเนมสเปซจุดต่อเชื่อมที่แยกต่างหาก ให้เรียก chdir() ในไดเร็กทอรี "/"

ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติม คุณสามารถตรวจสอบรายละเอียดในไฟล์ ลิงค์ต่อไปนี้


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา