ช่องโหว่ใน Glibc ld.so ซึ่งทำให้คุณได้รับสิทธิ์รูทในระบบ

Qualys ได้ระบุช่องโหว่ร้ายแรง (CVE-2023-4911) ในลิงก์เกอร์ ld.so ซึ่งเป็นส่วนหนึ่งของไลบรารี C ของระบบ Glibc (GNU libc) ช่องโหว่นี้ช่วยให้ผู้ใช้ภายในสามารถยกระดับสิทธิ์ของตนเองได้โดยการระบุข้อมูลที่สร้างขึ้นเป็นพิเศษในตัวแปรสภาพแวดล้อม GLIBC_TUNABLES ก่อนที่จะเรียกใช้ไฟล์ปฏิบัติการที่มีแฟล็กรูท suid เช่น /usr/bin/su

ความเป็นไปได้ในการใช้ประโยชน์จากช่องโหว่นี้อย่างสำเร็จได้รับการพิสูจน์แล้วใน Fedora 37 และ 38 Ubuntu 22.04 และ 23.04 น. Debian 12 และ 13. คาดว่าช่องโหว่นี้จะส่งผลกระทบต่อระบบปฏิบัติการอื่นๆ ที่ใช้ Glibc ด้วยเช่นกัน ระบบปฏิบัติการที่ใช้ไลบรารี C ของระบบ Musl เช่น Alpine Linuxผู้ใช้กลุ่มอื่นไม่ได้รับผลกระทบจากปัญหานี้ ช่องโหว่ดังกล่าวได้รับการแก้ไขแล้วในแพทช์ที่เพิ่มเข้ามาเมื่อวันที่ 2 ตุลาคม คุณสามารถติดตามการเผยแพร่การอัปเดตแพ็กเกจสำหรับระบบปฏิบัติการต่างๆ ได้ในหน้าต่อไปนี้: Debian, UbuntuRHEL, SUSE/openSUSE, Fedora, Arch, Gentoo, ALT Linux.

ช่องโหว่นี้เกิดจากการเปลี่ยนแปลงที่นำมาใช้ในเดือนเมษายน 2021 และรวมอยู่ใน glibc เวอร์ชัน 2.34 เนื่องจากข้อผิดพลาดในโค้ดการแยกวิเคราะห์สำหรับสตริงที่ระบุในตัวแปรสภาพแวดล้อม GLIBC_TUNABLES การรวมพารามิเตอร์ที่ไม่ถูกต้องในตัวแปรนี้ทำให้ค่าที่แยกวิเคราะห์ถูกเขียนเกินจุดสิ้นสุดของบัฟเฟอร์ที่จัดสรร ปัญหาจะปรากฏเมื่อแทนที่จะใช้ลำดับ "name=val" มาตรฐาน พารามิเตอร์ถูกระบุในรูปแบบการกำหนดค่าแบบคู่: "name=name=val" ในกรณีนี้ การกำหนดค่าจะถูกประมวลผลสองครั้ง ครั้งแรกเป็น "name=name=val" และครั้งที่สองเป็น "name=val" การประมวลผลแบบคู่นี้ส่งผลให้ผลลัพธ์ "name=name=val:name=val" มีขนาดใหญ่กว่าขนาดของบัฟเฟอร์ tunestr

นักวิจัยได้พัฒนาช่องโหว่ที่เสถียรซึ่งช่วยให้สามารถเข้าถึงสิทธิ์ระดับรูทได้เมื่อใช้กับโปรแกรมแทบทุกโปรแกรมที่มีแฟล็ก suid สำหรับสิทธิ์รูท ข้อยกเว้นคือยูทิลิตี้ sudo (ซึ่งเปลี่ยนค่า RUNPATH ของไฟล์ ELF) และยูทิลิตี้ chage และ passwd ใน Fedora (ซึ่งได้รับการป้องกันโดยกฎ SE แยกต่างหาก)Linux) และยูทิลิตี้ snap-confine ใน Ubuntu (ได้รับการปกป้องโดยกฎ AppArmor แยกต่างหาก) วิธีการโจมตีที่เสนอมานี้ใช้ไม่ได้กับ RHEL 8 และ RHEL 9 แม้ว่าเวอร์ชันเหล่านี้จะมีความเสี่ยง (การโจมตีต้องสร้าง exploit ที่แตกต่างออกไป) โค้ด exploit จะถูกเผยแพร่ในภายหลังหลังจากที่ช่องโหว่ได้รับการแก้ไขอย่างกว้างขวางแล้ว คุณสามารถตรวจสอบความเสี่ยงของระบบของคุณต่อช่องโหว่โดยใช้คำสั่งด้านล่าง ซึ่งจะทำให้โปรแกรมหยุดทำงานหากเกิดปัญหาขึ้น: env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '%08192x' 1`" /usr/bin/su --help

นอกจากนี้ ยังมีการแก้ไขช่องโหว่ใน Glibc อีกสองรายการ:

  • CVE-2023-4806 – มีช่องโหว่การใช้งานหลังจากปลดปล่อย (use-after-free) ในฟังก์ชัน getaddrinfo() ช่องโหว่นี้เกิดขึ้นเมื่อปลั๊กอิน NSS ใช้งานเฉพาะคอลแบ็ก "_gethostbyname2_r" และ "_getcanonname_r" เท่านั้น แต่ไม่รองรับคอลแบ็ก "_gethostbyname3_r" เพื่อใช้ประโยชน์จากช่องโหว่นี้ เซิร์ฟเวอร์ DNS จะต้องส่งคืนที่อยู่ IPv6 และ IPv4 จำนวนมากสำหรับโฮสต์ที่ร้องขอ ซึ่งจะทำให้กระบวนการที่เรียกใช้ฟังก์ชัน getaddrinfo สำหรับตระกูล AF_INET6 ล้มเหลวเมื่อมีการตั้งค่าแฟล็ก AI_CANONNAME, AI_ALL และ AI_V4MAPPED
  • CVE-2023-5156 - เกิดการรั่วไหลของหน่วยความจำเมื่อเรียกใช้ฟังก์ชัน getaddrinfo สำหรับกลุ่มที่อยู่ AF_INET6 โดยมีการตั้งค่าแฟล็ก AI_CANONNAME, AI_ALL และ AI_V4MAPPED

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster