polkit เป็นบริการระบบที่ติดตั้งโดยค่าเริ่มต้นบนลีนุกซ์หลายรุ่น มันถูกใช้โดย systemd ดังนั้นการกระจาย Linux ใด ๆ ที่ใช้ systemd ก็ใช้ polkit เช่นกัน ในฐานะสมาชิกของ GitHub Security Lab งานของฉันคือช่วยปรับปรุงความปลอดภัยของซอฟต์แวร์โอเพ่นซอร์สด้วยการค้นหาและรายงานช่องโหว่ ไม่กี่สัปดาห์ที่ผ่านมา ฉันพบช่องโหว่ในการยกระดับสิทธิ์ใน polkit ฉันประสานงานการเปิดเผยช่องโหว่กับผู้ดูแล polkit และทีมรักษาความปลอดภัยของ Red Hat มีการเปิดเผยต่อสาธารณะ การแก้ไขเผยแพร่เมื่อวันที่ 3 มิถุนายน 2021 และถูกกำหนดให้เป็น CVE-2021-3560
ช่องโหว่นี้ทำให้ผู้ใช้โลคัลที่ไม่มีสิทธิพิเศษสามารถรับรูตเชลล์บนระบบได้ ใช้ประโยชน์จากเครื่องมือบรรทัดคำสั่งมาตรฐานสองสามอย่างได้ง่ายๆ ดังที่คุณเห็นในวิดีโอสั้นๆ นี้ ในบล็อกโพสต์นี้ ฉันจะอธิบายวิธีการทำงานของช่องโหว่และแสดงให้คุณเห็นว่าจุดบกพร่องอยู่ที่ไหนในซอร์สโค้ด
สารบัญ
ประวัติของ CVE-2021-3560 และการแจกแจงที่มีช่องโหว่
เกี่ยวกับ พลกิต
ขั้นตอนการเอารัดเอาเปรียบ
สถาปัตยกรรมโพลกิต
ความเปราะบาง
org.freedesktop.policykit.imply คำอธิบายประกอบ
บทสรุป
ประวัติของ CVE-2021-3560 และการแจกแจงที่มีช่องโหว่
ข้อบกพร่องที่ฉันพบค่อนข้างเก่า เปิดตัวเมื่อเจ็ดปีที่แล้วในคอมมิชชัน bfa5036 และจัดส่งครั้งแรกด้วย polkit เวอร์ชัน 0.113 อย่างไรก็ตาม ลีนุกซ์รุ่นยอดนิยมหลายรุ่นไม่ได้จัดส่งเวอร์ชันที่มีช่องโหว่จนกระทั่งเมื่อไม่นานมานี้
จุดบกพร่องมีประวัติแตกต่างกันเล็กน้อยใน Debian และอนุพันธ์ของมัน (เช่น Ubuntu) เนื่องจาก Debian ใช้ทางแยกของ polkit ที่มีรูปแบบการกำหนดหมายเลขเวอร์ชันที่แตกต่างกัน ใน Debian fork ข้อผิดพลาดดังกล่าวได้รับการแนะนำในการคอมมิต f81d021 และมาพร้อมกับเวอร์ชัน 0.105-26 เป็นครั้งแรก Debian 10 (บัสเตอร์) รุ่นเสถียรล่าสุดใช้เวอร์ชัน 0.105-25 ซึ่งหมายความว่าไม่มีช่องโหว่ อย่างไรก็ตาม อนุพันธ์ของ Debian บางตัว เช่น Ubuntu มีพื้นฐานมาจาก Debian ไม่เสถียร ซึ่งมีความเสี่ยง
github.blog
การเพิ่มสิทธิ์ด้วย Polkit: วิธีรับรูทบน Linux ด้วยข้อบกพร่องอายุเจ็ดปี
การเพิ่มสิทธิ์ด้วย polkit: วิธีรับรูทบน Linux ด้วยข้อบกพร่องอายุเจ็ดปี ข้อบกพร่องที่ฉันพบค่อนข้างเก่า เปิดตัวเมื่อเจ็ดปีที่แล้วในคอมมิชชัน bfa5036 และจัดส่งครั้งแรกด้วย polkit เวอร์ชัน 0.113 การเพิ่มสิทธิ์ด้วย polkit polkit เป็นบริการระบบที่ติดตั้งโดยค่าเริ่มต้นบนลีนุกซ์หลายรุ่น>