หลังจากหกเดือนของการพัฒนา
จากที่นำมาใช้ใน 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