Lỗ hổng CVE nghiêm trọng đe dọa OpenSSH: Cập nhật khẩn cấp!

Một lỗ hổng CVE đáng kể đã được phát hiện trong bản vá GSSAPI Key Exchange, vốn được áp dụng bởi nhiều bản phân phối Linux cho các gói OpenSSH của họ. Lỗ hổng này, được theo dõi là CVE-2026-3497, cho phép kẻ tấn công làm sập các tiến trình con SSH một cách đáng tin cậy và có khả năng vi phạm ranh giới phân tách đặc quyền, tất cả chỉ với một gói mạng được chế tạo đặc biệt.
Giới thiệu Lỗ hổng CVE-2026-3497 và Tác động Sơ bộ
Lỗ hổng CVE nghiêm trọng này được phát hiện bởi nhà nghiên cứu bảo mật Jeremy Brown. Điểm cốt lõi là khả năng gây ra sự cố cho các dịch vụ SSH, gây ảnh hưởng đến tính sẵn sàng của hệ thống.
Trong một số trường hợp nhất định, lỗ hổng còn tiềm ẩn nguy cơ phá vỡ các cơ chế bảo mật quan trọng, đặc biệt là ranh giới phân tách đặc quyền, vốn được thiết kế để hạn chế tác động của các tiến trình bị xâm nhập.
Phân tích Kỹ thuật Sâu về Lỗ hổng GSSAPI Key Exchange
Nguyên nhân Gốc rễ của Vấn đề Kỹ thuật
Lỗ hổng CVE-2026-3497 bắt nguồn từ một khiếm khuyết mã hóa chỉ một dòng bên trong tệp kexgsss.c. Đây là tệp chịu trách nhiệm xử lý cơ chế trao đổi khóa GSSAPI (Generic Security Service Application Programming Interface) ở phía máy chủ.
Cụ thể, trong các trường hợp xử lý lỗi mặc định, một hàm không kết thúc tiến trình là sshpkt_disconnect() đã bị sử dụng nhầm. Thay vào đó, hàm đúng ra phải được gọi là ssh_packet_disconnect(), một hàm được thiết kế để kết thúc ngay lập tức tiến trình hiện tại khi có lỗi xảy ra.
Việc sử dụng sai hàm này có hậu quả nghiêm trọng. Do sshpkt_disconnect() chỉ có chức năng xếp hàng một thông báo ngắt kết nối và trả về, mà không dừng ngay lập tức luồng thực thi, trình xử lý lỗi tiếp tục chạy vào các đoạn mã không mong muốn.
Điều này dẫn đến việc mã truy cập một biến stack có tên recv_tok mà chưa hề được khởi tạo. Một biến chưa được khởi tạo sẽ chứa dữ liệu rác hoặc giá trị không xác định, gây ra các hành vi không dự đoán được trong chương trình.
Cơ chế Khai thác và Ảnh hưởng đến Bộ nhớ Heap
Nội dung không xác định của biến recv_tok sau đó được gửi đến tiến trình giám sát đặc quyền thông qua IPC (Inter-Process Communication).
Dữ liệu rác này tiếp tục được truyền đến hàm gss_release_buffer(). Hàm này có khả năng gọi free() trên một con trỏ rác, tức là một địa chỉ bộ nhớ không hợp lệ hoặc không thuộc quyền quản lý của chương trình. Tình trạng này đã được xác nhận dẫn đến hư hỏng heap (heap corruption).
Hư hỏng heap là một loại lỗi bộ nhớ nghiêm trọng, có thể dẫn đến sự cố chương trình (crash), thực thi mã tùy ý (arbitrary code execution) hoặc các lỗ hổng bảo mật khác. Điều này làm cho lỗ hổng CVE này trở nên đặc biệt nguy hiểm.
Phân tích của Jeremy Brown đã phân loại lỗi này dưới các mã định danh của CWE (Common Weakness Enumeration): CWE-824 (truy cập con trỏ chưa khởi tạo) và CWE-908 (sử dụng tài nguyên chưa khởi tạo).
Mức độ nghiêm trọng của lỗ hổng CVE này khác nhau đáng kể giữa các bản phân phối Linux, do sự khác biệt trong các tùy chọn trình biên dịch và cờ tối ưu hóa được sử dụng.
Ví dụ, hệ thống được biên dịch bằng Clang với tùy chọn -O0 có thể để lại giá trị con trỏ là 0xfffbe600 với độ dài 4 byte. Ngược lại, hệ thống biên dịch bằng GCC với tùy chọn -O2 -fno-stack-protector có thể để lại một địa chỉ heap hợp lệ với độ dài lên tới 127.344 byte.
Một ma trận kiểm tra với tám bản dựng khác nhau đã xác nhận rằng giá trị của recv_tok.value có thể dao động từ NULL đến các địa chỉ stack, địa chỉ heap, hoặc thậm chí là các vùng bộ nhớ hoàn toàn chưa được ánh xạ. Sự không thể đoán trước này làm tăng độ phức tạp trong việc khai thác và đánh giá rủi ro của lỗ hổng CVE.
Để biết thêm chi tiết kỹ thuật chuyên sâu về phân tích của Jeremy Brown, bạn đọc có thể tham khảo báo cáo gốc tại seclists.org.
Phạm vi Ảnh hưởng và Các Hệ thống Bị Tác động
Các hệ thống chạy máy chủ OpenSSH trên các bản phân phối như Ubuntu và Debian, với tùy chọn cấu hình GSSAPIKeyExchange yes được bật, đã được xác nhận có khả năng bị ảnh hưởng bởi lỗ hổng CVE-2026-3497.
Tuy nhiên, do có nhiều phiên bản khác nhau của bản vá GSSAPI KEX đang lưu hành rộng rãi trong hệ sinh thái Linux, phạm vi ảnh hưởng của lỗ hổng CVE này có khả năng mở rộng ra ngoài chỉ hai bản phân phối này.
Các quản trị viên hệ thống cần tiến hành kiểm tra kỹ lưỡng cấu hình OpenSSH của mình trên tất cả các máy chủ để đánh giá chính xác rủi ro và xác định các hệ thống tiềm năng bị ảnh hưởng.
Biện pháp Khắc phục và Khuyến nghị Cập nhật Bản vá Bảo mật
Giải pháp kỹ thuật cho lỗ hổng CVE này tương đối đơn giản và trực tiếp. Nó yêu cầu thay thế tất cả ba trường hợp của hàm sshpkt_disconnect() bằng hàm ssh_packet_disconnect() tại các điểm gọi phía máy chủ trong tệp nguồn kexgsss.c.
Các nhà phát triển của Ubuntu đã nhanh chóng chuẩn bị một bản vá để khắc phục vấn đề này. Do đó, các quản trị viên đang vận hành máy chủ OpenSSH với tính năng trao đổi khóa GSSAPI được bật cần ưu tiên áp dụng các bản cập nhật phân phối có sẵn ngay lập tức.
Trong trường hợp không thể áp dụng bản vá bảo mật ngay lập tức, một biện pháp giảm thiểu tạm thời hiệu quả là tắt tùy chọn GSSAPIKeyExchange trong cấu hình OpenSSH. Điều này giúp loại bỏ nguy cơ bị khai thác cho đến khi có thể thực hiện cập nhật bản vá vĩnh viễn.
Việc thường xuyên kiểm tra và áp dụng các bản vá bảo mật mới nhất là bước tối quan trọng để duy trì một môi trường OpenSSH bảo mật và bảo vệ hệ thống khỏi các mối đe dọa tiềm tàng.







