ช่องโหว่ใน xterm ที่นำไปสู่การเรียกใช้โค้ดเมื่อประมวลผลสตริงบางอย่าง

พบช่องโหว่ (CVE-2022-45063) ในโปรแกรมจำลองเทอร์มินัล xterm ซึ่งอนุญาตให้เรียกใช้คำสั่งเชลล์เมื่อมีการประมวลผล Escape Sequence บางอย่างในเทอร์มินัล สำหรับการโจมตีในกรณีที่ง่ายที่สุด การแสดงเนื้อหาของไฟล์ที่ออกแบบมาเป็นพิเศษก็เพียงพอแล้ว เช่น การใช้ยูทิลิตี้ cat หรือวางบรรทัดจากคลิปบอร์ด printf "\e]50;i\$(touch /tmp/hack-like-its-1999)\a\e]50;?\a" > cve-2022-45063 cat cve-2022-45063

ปัญหาเกิดจากข้อผิดพลาดในการจัดการลำดับการหลีกเลี่ยงรหัส 50 ที่ใช้ในการตั้งค่าหรือเรียกตัวเลือกแบบอักษร หากไม่มีแบบอักษรที่ร้องขอ การดำเนินการจะส่งคืนชื่อแบบอักษรที่ระบุในคำขอ คุณไม่สามารถแทรกอักขระควบคุมลงในชื่อได้โดยตรง แต่สตริงที่ส่งคืนสามารถสิ้นสุดด้วยลำดับ "^G" ซึ่งใน zsh เมื่อโหมดการแก้ไขบรรทัดแบบ vi ทำงานอยู่ จะทำให้การดำเนินการขยายรายการดำเนินการได้ ซึ่งสามารถทำได้ ใช้เพื่อรันคำสั่งโดยไม่ต้องกดปุ่ม Enter อย่างชัดเจน

หากต้องการใช้ประโยชน์จากช่องโหว่นี้ให้สำเร็จ ผู้ใช้ต้องใช้เชลล์คำสั่ง Zsh โดยตั้งค่าตัวแก้ไขบรรทัดคำสั่ง (โหมด vi-cmd) เป็นโหมด “vi” ซึ่งโดยปกติแล้วจะไม่ได้ใช้ตามค่าเริ่มต้นในการแจกแจง ปัญหายังไม่ปรากฏขึ้นเมื่อการตั้งค่า xterm AllowWindowOps=false หรือ AllowFontOps=false ถูกตั้งค่าไว้ ตัวอย่างเช่น AllowFontOps=false ตั้งค่าไว้ใน OpenBSD, Debian และ RHEL แต่จะไม่ได้ใช้ตามค่าเริ่มต้นใน Arch Linux

เมื่อพิจารณาจากรายการการเปลี่ยนแปลงและคำแถลงของนักวิจัยที่ระบุปัญหา ช่องโหว่ดังกล่าวได้รับการแก้ไขแล้วในรุ่น xterm 375 แต่ตามแหล่งข้อมูลอื่น ช่องโหว่ดังกล่าวยังคงปรากฏใน xterm 375 จาก Arch Linux คุณสามารถติดตามการเผยแพร่การแก้ไขโดยการเผยแพร่ในหน้าเหล่านี้: Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux, OpenBSD, FreeBSD, NetBSD

ที่มา: opennet.ru

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