ความคืบหน้าในการสร้างช่องโหว่สำหรับ OpenSSH 9.1

Qualys พบวิธีเลี่ยงการป้องกัน malloc และ double-free เพื่อเริ่มการถ่ายโอนการควบคุมไปยังโค้ด โดยใช้ช่องโหว่ใน OpenSSH 9.1 ที่กำหนดว่ามีความเสี่ยงต่ำในการสร้างช่องโหว่ที่ใช้งานได้ ในขณะเดียวกัน ความเป็นไปได้ในการสร้างช่องโหว่ที่ใช้งานได้ยังคงเป็นคำถามใหญ่

ช่องโหว่นี้เกิดจากการตรวจสอบสิทธิ์ล่วงหน้าสองครั้งฟรี หากต้องการสร้างเงื่อนไขสำหรับการเปิดเผยช่องโหว่ ก็เพียงพอที่จะเปลี่ยนแบนเนอร์ไคลเอนต์ SSH เป็น “SSH-2.0-FuTTYSH_9.1p1” (หรือไคลเอนต์ SSH เก่าอื่น) เพื่อตั้งค่าสถานะ “SSH_BUG_CURVE25519PAD” และ “SSH_OLD_DHGEX” หลังจากตั้งค่าแฟล็กเหล่านี้ หน่วยความจำสำหรับบัฟเฟอร์ “options.kex_algorithms” จะถูกปลดปล่อยสองครั้ง

ขณะที่นักวิจัยจาก Qualys จัดการกับช่องโหว่ สามารถควบคุมการลงทะเบียนตัวประมวลผล “%rip” ซึ่งมีตัวชี้ไปยังคำสั่งถัดไปที่จะดำเนินการ เทคนิคการหาประโยชน์ที่พัฒนาขึ้นช่วยให้คุณสามารถถ่ายโอนการควบคุมไปยังจุดใดก็ได้ในพื้นที่ที่อยู่ของกระบวนการ sshd ในสภาพแวดล้อม OpenBSD 7.2 ที่ไม่ได้รับการอัพเดต ซึ่งจัดทำโดยค่าเริ่มต้นด้วย OpenSSH 9.1

มีข้อสังเกตว่าต้นแบบที่เสนอนั้นเป็นการดำเนินการเฉพาะขั้นตอนแรกของการโจมตี - เพื่อสร้างช่องโหว่ที่ใช้งานได้จำเป็นต้องข้ามกลไกการป้องกัน ASLR, NX และ ROP และหลีกเลี่ยงการแยกแซนด์บ็อกซ์ซึ่งไม่น่าเป็นไปได้ ในการแก้ปัญหาการเลี่ยง ASLR, NX และ ROP จำเป็นต้องได้รับข้อมูลเกี่ยวกับที่อยู่ซึ่งสามารถทำได้โดยการระบุช่องโหว่อื่นที่นำไปสู่การรั่วไหลของข้อมูล จุดบกพร่องในกระบวนการหลักหรือเคอร์เนลที่มีสิทธิ์สามารถช่วยออกจากแซนด์บ็อกซ์ได้

ที่มา: opennet.ru

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