ช่องโหว่รูทที่สามารถหาประโยชน์ได้จากระยะไกลในยูทิลิตี้ ping ที่มาพร้อมกับ FreeBSD

ใน FreeBSD มีการระบุช่องโหว่ (CVE-2022-23093) ในยูทิลิตี้ ping ที่รวมอยู่ในการกระจายพื้นฐาน ปัญหานี้อาจนำไปสู่การเรียกใช้โค้ดจากระยะไกลด้วยสิทธิ์รูทเมื่อส่ง Ping ไปยังโฮสต์ภายนอกที่ควบคุมโดยผู้โจมตี มีการแก้ไขในการอัปเดต FreeBSD 13.1-RELEASE-p5, 12.4-RC2-p2 และ 12.3-RELEASE-p10 ยังไม่ชัดเจนว่าระบบ BSD อื่นๆ ได้รับผลกระทบจากช่องโหว่ที่ระบุหรือไม่ (ยังไม่มีรายงานช่องโหว่ใน NetBSD, DragonFlyBSD และ OpenBSD)

ช่องโหว่นี้เกิดจากการบัฟเฟอร์ล้นในโค้ดแยกวิเคราะห์สำหรับข้อความ ICMP ที่ได้รับเพื่อตอบสนองต่อคำขอตรวจสอบ รหัสสำหรับส่งและรับข้อความ ICMP ในการ ping ใช้ซ็อกเก็ตดิบและดำเนินการด้วยสิทธิ์ระดับสูง (ยูทิลิตี้นี้มาพร้อมกับแฟล็กรูท setuid) การตอบสนองจะได้รับการประมวลผลในด้าน ping ผ่านการสร้างส่วนหัว IP และ ICMP ใหม่ของแพ็กเก็ตที่ได้รับจากซ็อกเก็ตดิบ ส่วนหัว IP และ ICMP ที่เลือกจะถูกคัดลอกลงในบัฟเฟอร์โดย pr_pack() โดยไม่คำนึงถึงว่าอาจมีส่วนหัวเพิ่มเติมเพิ่มเติมอยู่ในแพ็กเก็ตที่อยู่หลังส่วนหัว IP

ส่วนหัวดังกล่าวถูกแยกออกจากแพ็กเก็ตและรวมอยู่ในบล็อกส่วนหัว แต่จะไม่นำมาพิจารณาเมื่อคำนวณขนาดบัฟเฟอร์ หากโฮสต์ส่งคืนแพ็คเก็ตที่มีส่วนหัวเพิ่มเติม เนื้อหาจะถูกเขียนลงในพื้นที่นอกขอบเขตบัฟเฟอร์บนสแต็ก เพื่อตอบสนองต่อคำขอ ICMP ที่ส่งไป เป็นผลให้ผู้โจมตีสามารถเขียนทับข้อมูลบนสแต็กได้มากถึง 40 ไบต์ ซึ่งอาจส่งผลให้โค้ดของตนทำงานได้ ความรุนแรงของปัญหาได้รับการบรรเทาลงด้วยความจริงที่ว่าในขณะที่เกิดข้อผิดพลาด กระบวนการอยู่ในสถานะของการแยกการเรียกของระบบ (โหมดความสามารถ) ซึ่งทำให้ยากต่อการเข้าถึงส่วนที่เหลือของระบบหลังจากใช้ประโยชน์จากช่องโหว่ .

ที่มา: opennet.ru

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