Glibc 2.34 มาพร้อมกับการแก้ไขช่องโหว่ ฟังก์ชันใหม่สำหรับ Linux และอื่นๆ

เมื่อเร็วๆ นี้ ได้มี การประกาศ เปิดตัว Glibc เวอร์ชันใหม่ 2.34 ซึ่งใช้เวลาพัฒนาถึงหกเดือน และมีการเปลี่ยนแปลงที่สำคัญหลายประการ โดยเฉพาะอย่างยิ่งการเพิ่มไลบรารี libpthread, libdl, libutil และ libanl รวมถึงการแก้ไขข้อบกพร่องต่างๆ ซึ่งหนึ่งในนั้นเป็นสาเหตุของการเกิดข้อผิดพลาด

สำหรับผู้ที่ไม่คุ้นเคยกับ Glibc มันคือไลบรารีของ GNU C ซึ่งโดยทั่วไปเรียกว่า glibc และเป็นไลบรารีรันไทม์มาตรฐานสำหรับภาษา GNU C ในระบบที่ใช้งานไลบรารีนี้ ไลบรารี C นี้ซึ่งจัดเตรียมและกำหนดคำสั่งระบบและฟังก์ชันพื้นฐานอื่นๆ จะถูกใช้งานโดยโปรแกรมเกือบทั้งหมด

คุณสมบัติใหม่หลักของ Glibc 2.34

ใน Glibc เวอร์ชัน 2.34 ใหม่นี้ไลบรารีหลักอย่าง libpthread, libdl, libutil และ libanl ได้ถูกรวมเข้าไว้ด้วยกันแล้ว การใช้งานฟังก์ชันการทำงานของไลบรารีเหล่านี้ในแอปพลิเคชันจึงไม่จำเป็นต้องเชื่อมโยงด้วยตัวบ่งชี้ -lpthread, -ldl, -lutil และ -lanl อีกต่อไป

นอกจากนี้ ยังมีการกล่าวถึงการเตรียมการเพื่อรวม libresolv เข้ากับ libcซึ่งจะช่วยให้กระบวนการอัปเกรด glibc ราบรื่นยิ่งขึ้นและลดความซับซ้อนในการใช้งานรันไทม์ อีกทั้งยังได้จัดเตรียมไลบรารีจำลองไว้เพื่อความเข้ากันได้กับแอปพลิเคชันที่สร้างขึ้นโดยใช้ glibc เวอร์ชันก่อนหน้า

ในบรรดาการเปลี่ยนแปลงที่เน้นไปที่ Linuxใน Glibc 2.34 การเปลี่ยนแปลงที่โดดเด่นที่สุดคือการเพิ่มความสามารถในการใช้ชนิดข้อมูล time_t แบบ 64 บิต ในการกำหนดค่าที่แต่เดิมใช้ ชนิดข้อมูล time_t แบบ 32 บิตคุณสมบัตินี้ใช้ได้เฉพาะในระบบที่มีเวอร์ชันเคอร์เนล 5.1 ขึ้นไปเท่านั้น

การเปลี่ยนแปลงอีกอย่างที่เฉพาะเจาะจงสำหรับ Linux คือการใช้งานฟังก์ชัน `execveat`ซึ่งช่วยให้คุณสามารถเรียกใช้ไฟล์ปฏิบัติการจากตัวระบุไฟล์ที่เปิดอยู่ได้ฟังก์ชันใหม่นี้ยังใช้ในการใช้งานการเรียก `fexecve` ซึ่งไม่จำเป็นต้องมีการเมานต์ระบบไฟล์เสมือน `/proc` ในระหว่างการเริ่มต้นระบบ

ฟังก์ชัน close_range() ก็ถูกเพิ่มเข้ามาเช่นกันซึ่งใช้งานได้ใน Linux เวอร์ชัน 5.9ขึ้นไป และสามารถใช้เพื่ออนุญาตให้กระบวนการปิดช่วงของตัวอธิบายไฟล์ที่เปิดอยู่ทั้งหมดในคราวเดียว นอกจากนี้ ยังมีการใช้งานพารามิเตอร์ glibc.pthread.stack_cache_size ซึ่งสามารถใช้เพื่อปรับขนาดของแคชสแต็กของ pthread ได้

นอกจากนี้ ยังมีการเพิ่มฟังก์ชัน `_Fork` เข้ามา ซึ่งเป็น ฟังก์ชัน ทดแทน `fork`ที่ตรงตามข้อกำหนด "async-signal-safe" หมายความว่าสามารถเรียกใช้ได้อย่างปลอดภัยจากตัวจัดการสัญญาณ ในระหว่างการทำงานของ `_Fork` จะมีการสร้างสภาพแวดล้อมขั้นต่ำขึ้น ซึ่งเพียงพอสำหรับการเรียกใช้ฟังก์ชันในตัวจัดการสัญญาณ เช่น `raise` และ `execute` โดยไม่ต้องเรียกใช้คุณสมบัติที่อาจเปลี่ยนแปลงการล็อกหรือสถานะภายใน

สำหรับส่วนของช่องโหว่ที่แก้ไขใน Glibc 2.34 มีการกล่าวถึงสิ่งต่อไปนี้:

CVE-2021-27645:กระบวนการ nscd (เดมอนแคชเนมเซิร์ฟเวอร์) ล้มเหลวเนื่องจากการเรียกใช้ฟังก์ชัน free สองครั้งขณะประมวลผลคำขอของกลุ่มเครือข่ายที่สร้างขึ้นเป็นพิเศษ

CVE-2021-33574:การเข้าถึงพื้นที่หน่วยความจำแบบ use-after-free ในฟังก์ชัน mq_notify เมื่อใช้ประเภทการแจ้งเตือน SIGEV_THREAD ร่วมกับแอตทริบิวต์เธรดที่มีการตั้งค่ามาสก์การผูก CPU ทางเลือก ปัญหานี้อาจทำให้โปรแกรมหยุดทำงาน แต่ก็ไม่ตัดความเป็นไปได้ของการโจมตีรูปแบบอื่นออกไป

CVE-2021-35942:การเกิดข้อผิดพลาดเนื่องจากขนาดพารามิเตอร์เกินขีดจำกัดในฟังก์ชัน wordexp อาจทำให้แอปพลิเคชันหยุดทำงาน

การเปลี่ยนแปลงที่สำคัญ อื่นๆได้แก่:

  • เพิ่มฟังก์ชัน timespec_getres ที่กำหนดไว้ในร่างมาตรฐาน ISO C2X และฟังก์ชัน timespec_get เพิ่มขึ้นด้วยความสามารถที่คล้ายกับฟังก์ชัน POSIX clock_getres
  • ในไฟล์ gconv-modules มีเพียงชุดโมดูล gconv หลักที่น้อยที่สุดเท่านั้น และส่วนที่เหลือถูกย้ายไปยังไฟล์ gconv-modules-extra.conf เพิ่มเติมที่อยู่ในไดเร็กทอรี gconv-modules.d
  • การใช้ลิงก์สัญลักษณ์เพื่อเชื่อมโยงอ็อบเจ็กต์ที่ใช้ร่วมกันที่ติดตั้งได้กับเวอร์ชัน Glibc ได้ถูกลบออกแล้ว ขณะนี้วัตถุเหล่านี้ได้รับการติดตั้งตามที่เป็นอยู่ (เช่น libc.so.6 ตอนนี้เป็นไฟล์แทนที่จะเป็นลิงก์ไปยัง libc-2.34.so)
  • บน Linux ฟังก์ชันเช่น shm_open และ sem_open ต้องการระบบไฟล์สำหรับหน่วยความจำที่ใช้ร่วมกันที่ติดตั้งบนจุดเชื่อมต่อ / dev / shm

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


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google