กำจัดเคอร์เนล Linux ของรหัสการเปลี่ยนแปลงพฤติกรรมสำหรับกระบวนการที่ขึ้นต้นด้วย X

Jason A. Donenfeld ผู้เขียน VPN WireGuard ดึงความสนใจของนักพัฒนาให้ไปที่แฮ็คสกปรกที่มีอยู่ในโค้ดเคอร์เนล Linux ซึ่งเปลี่ยนพฤติกรรมของกระบวนการที่ชื่อขึ้นต้นด้วยอักขระ “X” เมื่อมองแวบแรก การแก้ไขดังกล่าวมักจะใช้ในรูทคิทเพื่อทิ้งช่องโหว่ที่ซ่อนอยู่ในการผูกกระบวนการ แต่การวิเคราะห์พบว่ามีการเพิ่มการเปลี่ยนแปลงในปี 2019 เพื่อแก้ไขการละเมิดความเข้ากันได้ของพื้นที่ผู้ใช้ป๊อปอัปเป็นการชั่วคราว ตามหลักการที่เปลี่ยนแปลงไป เคอร์เนลไม่ควรทำลายความเข้ากันได้กับแอปพลิเคชัน

ปัญหาเกิดขึ้นเมื่อพยายามใช้กลไกในการเปลี่ยนโหมดวิดีโอแบบอะตอมในไดรเวอร์ DDX xf86-video-modesetting ที่ใช้ในเซิร์ฟเวอร์ X.Org ซึ่งเกิดจากการเชื่อมโยงกับกระบวนการที่ขึ้นต้นด้วยอักขระ "X" (สันนิษฐานว่า ว่าวิธีแก้ไขปัญหาชั่วคราวถูกนำไปใช้กับกระบวนการ “ Xorg") เกือบจะในทันทีที่ปัญหาใน X.Org ได้รับการแก้ไขแล้ว (การใช้อะตอมมิก API ถูกปิดใช้งานโดยค่าเริ่มต้น) แต่พวกเขาลืมลบการแก้ไขชั่วคราวออกจากเคอร์เนลและพยายามส่ง ioctl เพื่อเปลี่ยนโหมดแบบอะตอมมิกสำหรับกระบวนการทั้งหมดที่เริ่มต้นด้วย อักขระ "X" ยังคงส่งผลให้ส่งคืนข้อผิดพลาด if (current->comm[0] == 'X' && req->value == 1) { pr_info("ตรวจพบพื้นที่ผู้ใช้ชุดโหมดอะตอมมิกที่เสียหาย, ปิดการใช้งานอะตอมมิก\n"); กลับ-EOPNOTSUPP; }

ที่มา: opennet.ru

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