ช่องโหว่ใน systemd-coredump ทำให้สามารถระบุเนื้อหาของหน่วยความจำของโปรแกรม suid

ช่องโหว่ (CVE-2022-4415) ได้รับการระบุในคอมโพเนนต์ systemd-coredump ซึ่งประมวลผลไฟล์หลักที่สร้างขึ้นหลังจากกระบวนการขัดข้อง ทำให้ผู้ใช้ภายในเครื่องที่ไม่มีสิทธิ์สามารถกำหนดเนื้อหาหน่วยความจำของกระบวนการที่ได้รับสิทธิ์ซึ่งทำงานด้วยแฟล็กรูท suid ปัญหาการกำหนดค่าเริ่มต้นได้รับการยืนยันแล้วในการกระจาย openSUSE, Arch, Debian, Fedora และ SLES

ช่องโหว่นี้เกิดจากการขาดการประมวลผลพารามิเตอร์ fs.suid_dumpable sysctl ใน systemd-coredump ไม่ถูกต้อง ซึ่งเมื่อตั้งค่าเป็นค่าเริ่มต้นที่ 2 จะทำให้สามารถสร้างคอร์ดัมพ์สำหรับกระบวนการที่มีแฟล็ก suid ได้ เป็นที่เข้าใจกันว่าไฟล์หลักของกระบวนการ suid ที่เขียนโดยเคอร์เนลจะต้องมีสิทธิ์การเข้าถึงที่ตั้งค่าให้อนุญาตการอ่านโดยผู้ใช้รูทเท่านั้น ยูทิลิตี้ systemd-coredump ซึ่งเคอร์เนลเรียกเพื่อบันทึกไฟล์หลัก จะจัดเก็บไฟล์หลักไว้ภายใต้ root ID แต่ยังให้การเข้าถึงไฟล์หลักแบบอ่านตาม ACL เพิ่มเติมตาม ID ของเจ้าของที่เริ่มกระบวนการตั้งแต่แรก .

คุณลักษณะนี้ช่วยให้คุณสามารถดาวน์โหลดไฟล์หลักได้โดยไม่ต้องคำนึงว่าโปรแกรมสามารถเปลี่ยน ID ผู้ใช้และทำงานด้วยสิทธิ์ระดับสูงได้ การโจมตีดังกล่าวเกิดขึ้นที่ผู้ใช้สามารถเปิดแอปพลิเคชัน suid และส่งสัญญาณ SIGSEGV ไปยังแอป จากนั้นจึงโหลดเนื้อหาของไฟล์หลัก ซึ่งรวมถึงชิ้นส่วนหน่วยความจำของกระบวนการในระหว่างการยุติการทำงานที่ผิดปกติ

ตัวอย่างเช่น ผู้ใช้สามารถเรียกใช้ “/usr/bin/su” และในเทอร์มินัลอื่นยุติการดำเนินการด้วยคำสั่ง “kill -s SIGSEGV `pidof su`” หลังจากนั้น systemd-coredump จะบันทึกไฟล์หลักใน /var /lib/systemd/ ไดเร็กทอรี coredump การตั้งค่า ACL ที่อนุญาตให้ผู้ใช้ปัจจุบันอ่านได้ เนื่องจากยูทิลิตี้ suid 'su' อ่านเนื้อหาของ /etc/shadow ลงในหน่วยความจำ ผู้โจมตีจึงสามารถเข้าถึงข้อมูลเกี่ยวกับแฮชรหัสผ่านของผู้ใช้ทุกคนในระบบได้ ยูทิลิตี้ sudo นั้นไม่เสี่ยงต่อการถูกโจมตี เนื่องจากมันห้ามการสร้างไฟล์หลักผ่าน ulimit

ตามที่นักพัฒนา systemd ระบุ ช่องโหว่ปรากฏขึ้นโดยเริ่มจาก systemd release 247 (พฤศจิกายน 2020) แต่นักวิจัยที่ระบุปัญหาระบุว่า release 246 ก็ได้รับผลกระทบเช่นกัน ช่องโหว่จะปรากฏขึ้นหาก systemd ถูกคอมไพล์ด้วยไลบรารี libacl (โดยค่าเริ่มต้นใน การกระจายยอดนิยมทั้งหมด) ขณะนี้การแก้ไขพร้อมใช้งานเป็นแพตช์ คุณสามารถติดตามการแก้ไขในการแจกแจงในหน้าต่อไปนี้: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Gentoo, Arch วิธีแก้ปัญหาด้านความปลอดภัย คุณสามารถตั้งค่า sysctl fs.suid_dumpable เป็น 0 ซึ่งจะปิดใช้งานการส่งดัมพ์ไปยังตัวจัดการ systemd-coredump

ที่มา: opennet.ru

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