ในด้านอรรถประโยชน์
ตัวเลือก “pwfeedback” ช่วยให้สามารถแสดงอักขระ “*” หลังอักขระที่ป้อนแต่ละตัวเมื่อป้อนรหัสผ่าน เพราะว่า
สาระสำคัญของปัญหาคือเมื่อใช้อักขระพิเศษ ^U (การล้างบรรทัด) ระหว่างอินพุตและหากการดำเนินการเขียนล้มเหลวโค้ดที่รับผิดชอบในการล้างอักขระเอาต์พุต "*" จะรีเซ็ตข้อมูลในขนาดบัฟเฟอร์ที่มีอยู่ แต่ไม่ได้ ส่งคืนตัวชี้ไปยังตำแหน่งปัจจุบันของค่าเริ่มต้นในบัฟเฟอร์ ปัจจัยอีกประการหนึ่งที่เอื้อต่อการใช้ประโยชน์คือการไม่มีการปิดใช้งานโหมด "pwfeedback" โดยอัตโนมัติเมื่อข้อมูลไม่ได้มาจากเทอร์มินัล แต่ผ่านทางอินพุตสตรีม (ข้อบกพร่องนี้อนุญาตให้สร้างเงื่อนไขสำหรับข้อผิดพลาดในการบันทึกที่จะเกิดขึ้น เช่น บนระบบที่มี ทิศทางเดียว
เนื่องจากผู้โจมตีสามารถควบคุมการเขียนทับข้อมูลบนสแต็กได้อย่างสมบูรณ์ จึงไม่ใช่เรื่องยากที่จะสร้างช่องโหว่ที่ทำให้เขาเพิ่มสิทธิ์ในการรูทได้ ผู้ใช้ทุกคนสามารถใช้ประโยชน์จากปัญหานี้ได้ โดยไม่คำนึงถึงสิทธิ์ sudo หรือการตั้งค่าเฉพาะผู้ใช้ใน sudoers หากต้องการบล็อกปัญหา คุณควรตรวจสอบให้แน่ใจว่าไม่มีการตั้งค่า “pwfeedback” ใน /etc/sudoers และหากจำเป็น ให้ปิดการใช้งาน (“ค่าเริ่มต้น !pwfeedback”) หากต้องการตรวจสอบว่ามีปัญหาหรือไม่ คุณสามารถรันโค้ดได้:
$ perl -e 'พิมพ์(("A" x 100 . "\x{00}") x 50)' | sudo -S รหัส
รหัสผ่าน: การแบ่งส่วนผิดพลาด
ที่มา: opennet.ru