ช่องโหว่ที่ทำให้คุณสามารถแทนที่ลำดับการหลบหนีในเทอร์มินัลของผู้อื่นได้

พบช่องโหว่ (CVE-2024-28085) ในยูทิลิตี้ติดผนัง ซึ่งมาพร้อมกับแพ็คเกจ util-linux และมีจุดประสงค์เพื่อส่งข้อความไปยังเทอร์มินัล ซึ่งช่วยให้สามารถโจมตีเทอร์มินัลของผู้ใช้รายอื่นผ่านการจัดการลำดับการหลบหนี ปัญหามีสาเหตุมาจากยูทิลิตี้ติดผนังบล็อกลำดับการหลบหนีบนอินพุตสตรีม แต่ไม่ได้ดำเนินการดังกล่าวกับอาร์กิวเมนต์บรรทัดคำสั่ง ทำให้ผู้โจมตีสามารถหลบหนีลำดับการหลบหนีบนเทอร์มินัลของผู้ใช้รายอื่นได้

ตัวอย่างเช่น โดยการดำเนินการ 'wall $(printf "\033[33mHI")' คุณสามารถพิมพ์ "HI" เป็นสีเหลืองได้ ด้วยการใช้ Escape Sequence ที่ให้คุณย้ายตัวชี้ ล้าง และแทนที่เนื้อหาบนหน้าจอ คุณสามารถจำลองการแสดงพร้อมท์รหัสผ่าน sudo ในเทอร์มินัลของผู้ใช้รายอื่นได้ หากผู้ใช้ไม่สังเกตเห็นเคล็ดลับและป้อนรหัสผ่าน รหัสผ่านจะปรากฏในประวัติการป้อนข้อมูลเป็นคำสั่งที่ไม่มีอยู่จริง (ในความเป็นจริง ผู้ใช้จะป้อนรหัสผ่านในบรรทัดคำสั่งแทนคำสั่ง) “\033[3A” // เลื่อนเคอร์เซอร์ขึ้น 3 บรรทัด “\033[K” // ลบเอาต์พุตก่อนหน้า "[sudo] รหัสผ่านสำหรับ a_user:" // แสดงคำขอ sudo จำลอง “\033[?25l” / / ตั้งค่าสีพื้นหลังเพื่อซ่อนอินพุต "\033[38;2;48;10;36m"

เมื่อมีการออกคำเตือนว่าไม่พบคำสั่งที่ป้อน การกระจายจำนวนมากจะรัน /usr/lib/command-not-found handler ซึ่งพยายามระบุแพ็กเกจที่มีคำสั่งที่หายไป และให้คำแนะนำว่าสามารถติดตั้งได้หรือไม่ . ปัญหาคือเมื่อเรียกใช้ตัวจัดการที่ไม่พบคำสั่งคำสั่งที่ไม่มีอยู่จะถูกส่งผ่านไปเป็นพารามิเตอร์บรรทัดคำสั่งซึ่งมองเห็นได้เมื่อดูกระบวนการบนระบบ (ตัวอย่างเช่นเมื่อพยายามเรียกใช้ยูทิลิตี้ที่ถอนการติดตั้ง “xsnow”, “/usr” จะปรากฏในรายการกระบวนการ /lib/command-not-found - xsnow") ดังนั้น ผู้โจมตีสามารถตรวจสอบกระบวนการที่ทำงานอยู่ (เช่น โดยการวิเคราะห์การเกิดขึ้นของ “/proc/$pid/cmdline” สำหรับหมายเลข PID ที่คาดการณ์ไว้) และกำหนดรหัสผ่านที่เหยื่อป้อนในบรรทัดคำสั่ง

เพื่อให้ผู้ใช้สามารถป้อนรหัสผ่านเพื่อตอบสนองต่อพรอมต์ sudo ที่สมมติขึ้นจึงมีการเสนอเคล็ดลับซึ่งสาระสำคัญคือการติดตามการเปิดตัวยูทิลิตี้ sudo จริงในรายการกระบวนการรอให้เสร็จสิ้นและ โจมตีทะลุ “กำแพง” ทันทีหลังจากนั้น ด้วยการจัดการลำดับการหลบหนี ผู้โจมตีสามารถแทนที่ข้อความหลังจากดำเนินการ sudo จริงด้วยข้อความแจ้งให้ป้อนรหัสผ่านปลอมอีกครั้ง เหยื่ออาจคิดว่าเขาทำผิดพลาดเมื่อป้อนรหัสผ่านและป้อนรหัสผ่านเป็นครั้งที่สองโดยเปิดเผยรหัสผ่านในอาร์กิวเมนต์ของตัวจัดการ "ไม่พบคำสั่ง"

การโจมตีที่ประสบความสำเร็จต้องตั้งค่าโหมด "mesg" เป็น "y" ซึ่งตั้งค่าตามค่าเริ่มต้นใน Ubuntu, Debian และ CentOS/RHEL การโจมตีดังกล่าวแสดงให้เห็นใน Ubuntu 22.04 ในการกำหนดค่าเริ่มต้นโดยใช้ gnome-terminal ใน Debian การโจมตีทำได้ยาก เนื่องจากตัวจัดการ “ไม่พบคำสั่ง” ไม่ได้เปิดใช้งานตามค่าเริ่มต้นในการแจกจ่าย และใน CentOS/RHEL การโจมตีจะไม่ทำงาน เนื่องจากยูทิลิตี้ติดผนังได้รับการติดตั้งโดยไม่มีการตั้งค่าสถานะ setgid และดำเนินการ ไม่สามารถเข้าถึงเทอร์มินัลของผู้อื่นได้ เมื่อใช้ windows-terminal การโจมตีสามารถปรับเปลี่ยนเพื่อเปลี่ยนเนื้อหาของคลิปบอร์ดได้

ช่องโหว่ดังกล่าวปรากฏอยู่ในแพ็คเกจ util-linux ตั้งแต่ปี 2013 หลังจากที่รุ่น 2.24 ได้เพิ่มความสามารถในการระบุข้อความวอลล์บนบรรทัดคำสั่ง แต่ลืมล้างลำดับการหลีกเลี่ยง การแก้ไขช่องโหว่รวมอยู่ใน util-linux 2.40 เมื่อวานนี้ เป็นที่น่าสังเกตว่าเมื่อพยายามแก้ไขช่องโหว่ในการเปิดตัว util-linux 2.39 มีการระบุช่องโหว่อื่นที่คล้ายกันซึ่งช่วยให้สามารถทดแทนอักขระควบคุมผ่านการจัดการสถานที่ได้

ที่มา: opennet.ru

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