# FreeBSD phát hành bản vá khẩn cấp cho lỗ hổng trên OpenSSH

Các nhà phát triển của FreeBSD vừa qua đã ra thông báo cập nhật bảo mật cho một lỗ hổng đang tồn tại trong OpenSSH. Được xếp loại mức độ nghiêm trọng cao (high-severity), lỗ hổng này có thể được các tin tặc lợi dụng để thực hiện các cuộc tấn công leo thang đặc quyền và thực thi mã từ xa.

# 1\. Thông tin lỗ hổng

* Định danh lỗ hổng: [**CVE-2024-7589**](https://nvd.nist.gov/vuln/detail/CVE-2024-7589)
    
* Điểm CVSS(3.1): **8.1**
    
* Mức độ nghiêm trọng: **High**
    
* Mô tả: Trong bối cảnh tín hiệu bất đồng bộ, một `signal handler` (bộ xử lý tín hiệu) trong `sshd(8)` khi gọi một hàm `logging function` (hàm ghi nhật ký) không an toàn. Do bộ xử lý này chạy trong môi trường mã đặc quyền `sshd(8)` không được bảo vệ bởi cơ chế sandbox và khởi chạy với quyền `root` không đầy đủ, kẻ tấn công có thể khai thác để thực thi mã từ xa với quyền root mà không cần xác thực.
    
* Các phiên bản bị ảnh hưởng: Tất cả các phiên bản được hỗ trợ của FreeBSD.
    

| Phiên bản bị ảnh hưởng |
| --- |
| stable/14, 14.1-STABLE |
| releng/14.1, 14.1-RELEASE-p3 |
| releng/14.0, 14.0-RELEASE-p9 |
| stable/13, 13.3-STABLE |
| releng/13.3, 13.3-RELEASE-p5 |

**OpenSSH** là một chương trình mã nguồn mở được phát triển và triển khai dựa trên giao thức SSH, cung cấp phương thức truyền dữ liệu được mã hoá và xác thực cho nhiều dịch vụ khác nhau, bao gồm truy cập shell từ xa.

Trong [thông báo cập nhật bảo mật từ các nhà vận hành và phát triển FreeBSD](https://www.freebsd.org/security/advisories/FreeBSD-SA-24:08.openssh.asc), một `signal handler` (bộ xử lý tín hiệu) trong `sshd(8)` có thể gọi một hàm `logging function` (hàm ghi nhật ký) được các nhà phát triển này gọi là "not async-signal-safe" (mất an toàn cho tín hiệu không đồng bộ). Bộ xử lý tín hiệu này chạy trong môi trường mã đặc quyền của `sshd(8)`, không được bảo vệ bởi cơ chế sandbox, có thể khởi chạy với quyền `root` không đầy đủ và xuất hiện khi phía client không thoả mãn thời gian xác thực `LoginGraceTime` - mặc định là 120 giây.

Lỗi này liên quan đến vấn đề từng được nhắc tới trong CVE-2024-6387 và đã được giải quyết trong bản cập nhật bảo mật `FreeBSD-SA-24:04.openssh`. CVE-2024-7589 tồn tại do lỗi xuất phát từ việc tích hợp blacklistd vào OpenSSH trên FreeBSD.

Hệ quả từ việc gọi hàm ghi nhật ký khi tín hiệu không đồng bộ tạo điều kiện tồn tại "race condition", cho phép tin tặc bỏ qua xác thực và thực thi mã từ xa với quyền `root`.

# 2\. Khắc phục & Khuyến nghị

Với trường hợp `sshd(8)` không thể được cập nhật, có thể khắc phục bằng cách thay đổi giá trị `LoginGraceTime` trong `/etc/ssh/sshd_config` về giá trị 0 và khởi động lại `sshd(8)`. Việc này có thể khiến `sshd(8)` phòng tránh nguy cơ bị tấn công thực thi mã từ xa, tuy nhiên nguy cơ đối mặt với cuộc tấn công từ chối dịch vụ là rất cao do tất cả các kết nối `MaxStartups` đều bị cạn kiệt.

Các hệ thống đang chạy phiên bản FreeBSD trên nền tảng `amd64`, `arm64` hoặc `i386` có thể thực hiện cập nhật tự động thông qua công cụ `freebsd-update(8)`:

> \# freebsd-update fetch
> 
> \# freebsd-update install

hoặc thực hiện cài đặt thủ công bằng cách:

> \# fetch https://security.FreeBSD.org/patches/SA-24:08/openssh.patch
> 
> \# fetch https://security.FreeBSD.org/patches/SA-24:08/openssh.patch.asc
> 
> \# gpg --verify openssh.patch.asc
> 
> \# cd /usr/src
> 
> \# patch &lt; /path/to/patch

# 3\. Tham khảo

1. FreeBSD Security: [https://www.freebsd.org/security/advisories/FreeBSD-SA-24:08.openssh.asc](https://www.freebsd.org/security/advisories/FreeBSD-SA-24:08.openssh.asc)
    
2. TheHackerNews: [https://thehackernews.com/2024/08/freebsd-releases-urgent-patch-for-high.html](https://thehackernews.com/2024/08/freebsd-releases-urgent-patch-for-high.html)
