Glibc 2.32 System Library Release

หลังจากหกเดือนของการพัฒนา การตีพิมพ์ การเปิดตัวไลบรารีระบบ ไลบรารี 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 long Double type ซึ่งเปิดใช้งานเมื่อสร้างด้วยตัวเลือก “-mabi=ieeelongdouble”
  • 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" (หรือ -mbranch-protection=standard ใน GCC) ซึ่งเปิดใช้งานกลไก ARMv8.5-BTI (Branch Target Indicator) เพื่อปกป้อง การดำเนินการชุดคำสั่งที่ไม่ควรดำเนินการ การเปลี่ยนสาขา การบล็อกการเปลี่ยนไปใช้ส่วนต่างๆ ของโค้ดนั้นถูกนำไปใช้เพื่อป้องกันการสร้างแกดเจ็ตในการหาประโยชน์ที่ใช้เทคนิคการเขียนโปรแกรมแบบส่งคืน (ROP - การเขียนโปรแกรมแบบเน้นคืน ผู้โจมตีไม่พยายามวางโค้ดของเขาในหน่วยความจำ แต่ดำเนินการกับชิ้นส่วนที่มีอยู่แล้ว ของคำสั่งเครื่องที่ลงท้ายด้วยคำสั่งควบคุมการส่งคืนซึ่งมีการสร้างสายการเรียกเพื่อให้ได้ฟังก์ชันที่ต้องการ)
  • มีการล้างข้อมูลฟีเจอร์ที่ล้าสมัยครั้งใหญ่ รวมถึงการลบตัวเลือก “--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 และโมดูล NSS hesiod เลิกใช้แล้ว
  • ldconfig ถูกย้ายตามค่าเริ่มต้นเพื่อใช้รูปแบบ ld.so.cache ใหม่ ซึ่งได้รับการสนับสนุนใน glibc มาเกือบ 20 ปี
  • แก้ไขช่องโหว่:
    • CVE-2016-10228 – การวนซ้ำในยูทิลิตี้ iconv เกิดขึ้นเมื่อรันด้วยตัวเลือก “-c” เมื่อประมวลผลข้อมูลหลายไบต์ที่ไม่ถูกต้อง
    • CVE-2020-10029 สแต็กเสียหายเมื่อเรียกใช้ฟังก์ชันตรีโกณมิติด้วยอาร์กิวเมนต์ pseudo-null
    • CVE-2020-1752 - การเข้าถึงหน่วยความจำแบบใช้แล้วทิ้งในฟังก์ชัน glob เมื่อขยายการอ้างอิงไปยังโฮมไดเร็กตอรี่ (“~user”) ในพาธ
    • CVE-2020-6096 – การจัดการค่าพารามิเตอร์เชิงลบในแพลตฟอร์ม ARMv7 ใน memcpy() และ memmove() ไม่ถูกต้อง ซึ่งกำหนดขนาดของพื้นที่ที่คัดลอก ช่วยให้ จัดระเบียบการเรียกใช้โค้ดเมื่อประมวลผลข้อมูลในลักษณะใดลักษณะหนึ่งในฟังก์ชัน memcpy() และ memmove() เป็นสิ่งสำคัญที่ปัญหา ยังคงอยู่ ไม่ได้รับการแก้ไขเป็นเวลาเกือบสองเดือนนับตั้งแต่ข้อมูลถูกเปิดเผยต่อสาธารณะ และห้าเดือนนับตั้งแต่ผู้พัฒนา Glibc ได้รับแจ้ง

ที่มา: opennet.ru

เพิ่มความคิดเห็น