CVE-2024-6387: Lỗ hổng nghiêm trọng trên OpenSSH server

02/07/2024
Mới đây, các nhà nghiên cứu thuộc Qualys Threat Research Unit (TRU) đã phát hiện lỗ hổng Thực thi mã không được xác thực từ xa (RCE) trong máy chủ của OpenSSH (sshd) trong các hệ thống Linux dựa trên glibc. CVE được gán cho lỗ hổng này là CVE-2024-6387.

OpenSSH (Open Secure Shell) là một bộ tiện ích mạng an toàn dựa trên giao thức Secure Shell (SSH), rất quan trọng để kết nối an toàn qua các mạng không bảo mật. Nó cung cấp mã hóa mạnh mẽ để đảm bảo quyền riêng tư và truyền tệp an toàn, khiến nó trở thành một công cụ thiết yếu để quản lý máy chủ từ xa và liên lạc dữ liệu an toàn.

Dưới đây là một số phân tích và khuyến nghị của VietSunshine Security Team về lỗ hổng.

1. Mô tả

Lỗ hổng trên OpenSSH Server khi khai thác thành công có thể dẫn đến có được Remote Root Shell trên máy chủ, ảnh hưởng phiên bản OpenSSH đang được sử dụng phổ biến từ 8.5p1 đến 9.7p1 trên các phiên bản Linux dựa trên glibc như Ubuntu, Debian, RedHat, …

Lỗ hổng thuộc loại Race Condition, quá trình khai thác cần khởi tạo hàng loạt kết nối đồng thời vào SSH Server trong một thời gian dài (vài giờ) để đạt được các điều kiện kích hoạt lỗi (winning race condition).

Ví dụ trên Debian 12 sử dụng OpenSSH 9.2p1, Researcher ước tính cần khoảng trung bình 10000 lần kết nối, mất từ 3~4 giờ để đạt điều kiện khai thác, 6~8 giờ để đạt điều kiện RCE và có được Remote Root Shell. Một số điều kiện dẫn đến tăng khả năng khai thác lỗi thành công (mặc định trong cấu hình OpenSSH):

MaxStartups: số lượng connection đồng thời, mặc định 100

LoginGraceTime: khoảng thời gian SSH Server giữ kết nối và chờ đợi Client hoàn thành chu trình Login, mặc định 120 giây, nếu giá trị là 0 tương ứng với khônng giới hạn thời gian.

2. Một số phương án giảm rủi ro

Sử dụng Firewall

  • Đảm bảo chỉ cho phép truy cập SSH từ các nguồn xác định (whitelist)
  • Block các IP khởi tạo nhiều kết nối cùng lúc trong một khoảng thời gian ngắn vào cổng dịch vụ SSH

► Cập nhật cấu hình SSH trong tập tin sshd_config để loại bỏ điều kiện khai thác lỗi, điều chỉnh giá trị LoginGraceTime, sau đó khởi động lại dịch vụ SSH.

LoginGraceTime 0

Lưu ý: Cách thức xử lý này có thể dẫn tới dịch vụ SSH bị tấn công từ chối dịch vụ, do các kết nối vào cổng SSH sẽ không bị ngắt trong một thời gian dài dẫn đến có thể tấn công chiếm dụng tất cả kết nối vào cổng dịch vụ (hoặc đạt ngưỡng MaxStartups).

► Cập nhật phiên bản OpenSSH đã vá lỗi.

3. Kiểm tra phiên bản SSH đang có trên server

► Blackbox vào cổng dịch vụ: Có thể sử dụng Telnet, SSH command hoặc NMAP. Mặc định cổng dịch vụ sẽ trả về SSH banner kèm thông tin phiên bản.

► Whitebox trên máy chủ: Có thể kiểm tra từ các lệnh ssh hoặc sshd (gõ option tuỳ ý để kích hoạt hiển thị thông tin lỗi kèm phiên bản).

4. Phiên bản đã vá lỗi

OpenSSH 9.8p1 phát hành vào 01/07/2024

Xem thêm