Hai lỗ hổng Telnet cách nhau 27 năm cùng cho phép chiếm quyền root từ xa

Hai lỗ hổng Telnet cách nhau 27 năm cùng cho phép chiếm quyền root từ xa

Sự xuất hiện trở lại của các lỗ hổng liên quan đến Telnet trong giai đoạn 2026 đã làm dấy lên một câu hỏi lớn trong giới an ninh mạng. Vì sao một giao thức ra đời từ thập niên 1970 vẫn tiếp tục tạo ra rủi ro nghiêm trọng cho hệ thống hiện đại? Hai mã định danh bảo mật — CVE-1999-0073 và CVE-2026-24061 — đại diện cho hai thế hệ lỗ hổng khác nhau, nhưng cùng hội tụ ở một điểm cho phép kẻ tấn công chiếm quyền root từ xa mà không cần xác thực hợp lệ. Tuy nhiên, bản chất kỹ thuật, phạm vi ảnh hưởng và mức độ rủi ro thực tế của hai lỗ hổng này có những khác biệt quan trọng cần được phân tích rõ ràng.

Telnet từng là công cụ tiêu chuẩn để truy cập máy chủ từ xa trong giai đoạn đầu của Internet. Giao thức này cho phép truyền dữ liệu ở dạng văn bản thuần túy và hỗ trợ cơ chế gửi biến môi trường từ client sang server thông qua tùy chọn NEW_ENVIRON. Chính khả năng truyền biến môi trường này là điểm giao nhau về mặt kỹ thuật của hai lỗ hổng nói trên, nhưng cách chúng bị khai thác lại hoàn toàn khác nhau.

Theo mô tả trong cơ sở dữ liệu của National Vulnerability Database, CVE-1999-0073 liên quan đến việc một số triển khai telnetd vào cuối thập niên 1990 cho phép người dùng từ xa truyền các biến môi trường có thể ảnh hưởng đến tiến trình đăng nhập. Trong các cấu hình chịu ảnh hưởng, telnetd chuyển biến môi trường nhận được sang chương trình /bin/login mà không lọc đầy đủ những biến nhạy cảm, bao gồm các biến có thể tác động đến dynamic loader như nhóm LD_*.

Vấn đề bảo mật xuất hiện khi tiến trình đăng nhập được thực thi với đặc quyền cao, thường là root. Trong cơ chế thực thi của Unix/Linux, khi một chương trình SUID/SGID được khởi chạy, kernel sẽ thiết lập cờ bảo mật (thông qua cơ chế AT_SECURE) để yêu cầu dynamic loader chuyển sang chế độ “secure execution” và loại bỏ các biến môi trường nguy hiểm. Tuy nhiên, trong một số kịch bản lịch sử — ví dụ khi tiến trình được thực thi theo ngữ cảnh root-to-root mà không thay đổi UID hiệu lực — dynamic loader có thể không coi đây là trường hợp cần kích hoạt đầy đủ cơ chế bảo vệ. Khi đó, nếu các biến môi trường do client cung cấp không bị loại bỏ, chúng có thể ảnh hưởng đến quá trình nạp thư viện hoặc hành vi runtime của tiến trình đặc quyền.

Đây là dạng lỗi thường được mô tả là environment injection, dữ liệu môi trường không đáng tin cậy tác động đến trạng thái thực thi của chương trình có đặc quyền. Tuy nhiên, việc khai thác CVE-1999-0073 phụ thuộc mạnh vào điều kiện hệ thống cụ thể, cách telnetd được biên dịch, cách login được gọi, cách loader xử lý biến môi trường đối với binary SUID và cấu hình kernel của hệ điều hành mục tiêu. Trên phần lớn hệ thống Linux hiện đại, dynamic loader đã được thiết kế để bỏ qua các biến LD_* khi thực thi tiến trình đặc quyền, đồng thời cơ chế secure execution được kích hoạt chặt chẽ hơn. Vì vậy, trong bối cảnh năm 2026, CVE-1999-0073 mang ý nghĩa kiến trúc và lịch sử nhiều hơn là một mối đe dọa đang bị khai thác diện rộng. Không có bằng chứng công khai cho thấy lỗ hổng này đang được khai thác quy mô lớn hiện nay.

Trái lại, CVE-2026-24061 là một lỗi logic trực tiếp trong telnetd của bộ GNU Inetutils do GNU Project duy trì. Theo các cảnh báo kỹ thuật, các phiên bản telnetd từ 1.9.3 đến 2.7 không kiểm tra chặt chẽ biến môi trường USER trước khi chuyển giá trị này cho chương trình /usr/bin/login.

Trong cơ chế Telnet, client có thể gửi biến USER thông qua NEW_ENVIRON. Nếu kẻ tấn công thiết lập giá trị USER=-f root, telnetd sẽ chuyển nguyên chuỗi này sang login như một phần tham số. Trên các hệ thống sử dụng chương trình login hỗ trợ tùy chọn -f, tham số này được hiểu là chỉ định người dùng đã được xác thực trước trong một bối cảnh tin cậy. Khi login được gọi với tùy chọn này trong điều kiện phù hợp, quá trình kiểm tra mật khẩu có thể bị bỏ qua và phiên làm việc được mở với quyền của người dùng chỉ định, bao gồm cả root. Đây là một ví dụ điển hình của argument injection, dữ liệu đầu vào không được kiểm soát đã trở thành tham số điều khiển hành vi của chương trình đặc quyền.

Khác với lỗ hổng năm 1999, việc khai thác CVE-2026-24061 không phụ thuộc vào hành vi của dynamic loader hay cơ chế AT_SECURE của kernel. Nếu hệ thống sử dụng phiên bản telnetd bị ảnh hưởng và login xử lý tùy chọn -f theo cách nêu trên, kẻ tấn công chỉ cần thiết lập đúng biến môi trường là có thể vượt qua bước xác thực. Chính vì tính chất có thể khai thác từ xa, không yêu cầu thông tin đăng nhập và dẫn đến quyền root hoàn toàn, CVE-2026-24061 được chấm điểm CVSS 9.8/10 ở mức Critical.

Sự khác biệt giữa hai lỗ hổng vì vậy nằm ở tầng kỹ thuật bị ảnh hưởng. CVE-1999-0073 liên quan đến môi trường thực thi và cơ chế nạp thư viện của hệ điều hành, với điều kiện khai thác phụ thuộc vào triển khai cụ thể. CVE-2026-24061 là lỗi kiểm soát tham số trực tiếp trong ứng dụng, với cơ chế khai thác rõ ràng và ít phụ thuộc hơn vào cấu hình hệ thống bên dưới.

Điểm chung của cả hai trường hợp là sự vi phạm nguyên tắc bảo mật cơ bản, không được tin tưởng dữ liệu do client cung cấp. Ở lỗ hổng năm 1999, biến môi trường ảnh hưởng đến runtime của tiến trình đặc quyền. Ở lỗ hổng năm 2026, biến USER được chuyển thành tham số điều khiển login. Trong cả hai, dữ liệu đầu vào không được kiểm soát đã có khả năng tác động đến logic thực thi ở mức đặc quyền cao.

Từ góc độ phòng thủ, đối với CVE-2026-24061, biện pháp khẩn cấp là nâng cấp GNU Inetutils lên phiên bản đã vá lỗi (≥ 2.8) hoặc vô hiệu hóa hoàn toàn dịch vụ Telnet nếu không cần thiết, đồng thời chặn TCP port 23 từ bên ngoài. Với CVE-1999-0073, rủi ro chủ yếu tồn tại trên các hệ thống rất cũ hoặc cấu hình đặc biệt. Việc rà soát cơ chế xử lý biến môi trường, bảo đảm secure execution được kích hoạt đúng khi thực thi tiến trình đặc quyền và loại bỏ các dịch vụ Telnet không cần thiết là hướng xử lý phù hợp.

Nhìn rộng hơn, câu chuyện của hai lỗ hổng cách nhau 27 năm cho thấy một thực tế quen thuộc trong an ninh mạng: công nghệ cũ nếu vẫn tồn tại trong hạ tầng sản xuất sẽ tiếp tục mang theo rủi ro, dù ở hình thức khác nhau. CVE-2026-24061 là mối đe dọa cấp thời cần xử lý ngay trong các hệ thống còn sử dụng Telnet. CVE-1999-0073 nhắc lại bài học về thiết kế an toàn trong môi trường đặc quyền. Điểm chung cuối cùng không nằm ở năm công bố, mà ở nguyên tắc bất biến của bảo mật: dữ liệu từ phía client phải luôn được coi là không đáng tin cậy và cần được kiểm soát nghiêm ngặt trước khi ảnh hưởng đến tiến trình đặc quyền.

Bài viết liên quan