Lỗ hổng cho phép bạn thay thế các chuỗi thoát trong thiết bị đầu cuối của người khác

Một lỗ hổng (CVE-2024-28085) đã được xác định trong tiện ích trên tường, được cung cấp trong gói util-linux và nhằm mục đích gửi tin nhắn đến các thiết bị đầu cuối, cho phép tấn công vào thiết bị đầu cuối của những người dùng khác thông qua thao tác chuỗi thoát. Sự cố xảy ra do tiện ích trên tường chặn các chuỗi thoát trên luồng đầu vào nhưng không làm như vậy đối với các đối số dòng lệnh, cho phép kẻ tấn công thoát khỏi các chuỗi thoát trên thiết bị đầu cuối của người dùng khác.

Ví dụ: bằng cách chạy 'wall $(printf "\033[33mHI")' bạn có thể in "HI" màu vàng. Bằng cách sử dụng các chuỗi thoát cho phép bạn di chuyển con trỏ, xóa và thay thế nội dung trên màn hình, bạn có thể mô phỏng hiển thị lời nhắc mật khẩu sudo trong thiết bị đầu cuối của người dùng khác. Nếu người dùng không để ý thủ thuật và nhập mật khẩu của mình, mật khẩu sẽ xuất hiện trong lịch sử nhập dưới dạng lệnh không tồn tại (thực tế, người dùng sẽ nhập mật khẩu của mình trên dòng lệnh thay vì lệnh). “\033[3A” // di chuyển con trỏ lên 3 dòng “\033[K” // xóa đầu ra trước đó “[sudo] mật khẩu cho a_user:” // hiển thị một yêu cầu giả sudo “\033[?25l” / / đặt màu nền để ẩn đầu vào "\033[38;2;48;10;36m"

Khi cảnh báo được đưa ra rằng không tìm thấy lệnh đã nhập, nhiều bản phân phối chạy trình xử lý /usr/lib/command-not-found, cố gắng xác định gói chứa lệnh bị thiếu và cung cấp gợi ý về việc liệu nó có thể được cài đặt hay không . Vấn đề là khi trình xử lý không tìm thấy lệnh được khởi chạy, một lệnh không tồn tại sẽ được chuyển đến nó dưới dạng tham số dòng lệnh, hiển thị khi xem các tiến trình trên hệ thống (ví dụ: khi cố chạy tiện ích đã gỡ cài đặt “xsnow”, “/usr” sẽ hiển thị trong danh sách các tiến trình /lib/command-not-found - xsnow"). Theo đó, kẻ tấn công có thể theo dõi các tiến trình đang chạy (ví dụ: bằng cách phân tích sự xuất hiện của “/proc/$pid/cmdline” đối với số PID được dự đoán) và xác định mật khẩu mà nạn nhân đã nhập trên dòng lệnh.

Để người dùng nhập mật khẩu đáp lại lời nhắc sudo hư cấu, một thủ thuật đã được đề xuất, bản chất của nó là theo dõi quá trình khởi chạy thực tế của tiện ích sudo trong danh sách các quy trình, đợi nó hoàn thành và thực hiện đòn tấn công xuyên “bức tường” ngay sau đó. Bằng cách thao tác các chuỗi thoát, kẻ tấn công có thể thay thế thông báo sau khi thực thi sudo thực tế bằng lời nhắc nhập lại mật khẩu giả. Nạn nhân có thể cho rằng mình đã nhầm lẫn khi nhập mật khẩu và nhập mật khẩu lần thứ hai, làm lộ mật khẩu trong các đối số của trình xử lý “không tìm thấy lệnh”.

Một cuộc tấn công thành công yêu cầu đặt chế độ "mesg" thành "y", được đặt theo mặc định trong Ubuntu, Debian và CentOS/RHEL. Cuộc tấn công đã được chứng minh trong Ubuntu 22.04 ở cấu hình mặc định bằng gnome-terminal. Trên Debian, cuộc tấn công rất khó khăn vì trình xử lý “không tìm thấy lệnh” không được bật theo mặc định trong bản phân phối và trên CentOS/RHEL, cuộc tấn công sẽ không hoạt động vì tiện ích treo tường được cài đặt mà không có cờ setgid và không có quyền truy cập vào thiết bị đầu cuối của người khác. Khi sử dụng windows-terminal, cuộc tấn công có thể được sửa đổi để thay đổi nội dung của bảng ghi tạm.

Lỗ hổng này đã xuất hiện trong gói util-linux từ năm 2013, sau khi bản phát hành 2.24 bổ sung khả năng chỉ định thông báo trên tường trên dòng lệnh nhưng quên dọn sạch các chuỗi thoát. Bản sửa lỗi cho lỗ hổng này đã được đưa vào bản phát hành util-linux 2.40 ngày hôm qua. Đáng chú ý là khi cố gắng khắc phục lỗ hổng trong bản phát hành util-linux 2.39, một lỗ hổng tương tự khác đã được xác định, cho phép thay thế các ký tự điều khiển thông qua thao tác ngôn ngữ.

Nguồn: opennet.ru

Thêm một lời nhận xét