Tin tức

Giải mã bản vá im lặng của MikroTik: Từ tên người dùng SSH '-2' đến toàn quyền quản trị RouterOS

Một phân tích sâu về RouterOS 7.23.4 hé lộ bản vá bảo mật im lặng biến phiên SSH chỉ đọc thành toàn quyền quản trị thông qua giao thức đăng nhập kế thừa dựa trên file descriptor.

September 5, 2026· 4 min read· Nguồn: Nick Pratley
Giải mã bản vá im lặng của MikroTik: Từ tên người dùng SSH '-2' đến toàn quyền quản trị RouterOS

Vào ngày 3 tháng 9 năm 2026, MikroTik phát hành RouterOS 7.23.4, 7.24.2 và 6.49.21 kèm thông báo ngắn gọn: "bản cập nhật bảo mật quan trọng... hiện chưa công bố thông tin chi tiết." Dịch nghĩa: họ tìm thấy thứ gì đó nguy hiểm và giữ kín chi tiết cho đến khi toàn bộ thiết bị được vá. Nhưng Nick Pratley chỉ ra rằng việc phát hành bản vá cho tất cả mọi người khiến sự khác biệt giữa hai phiên bản chính là thông tin tiết lộ. Anh đã tải cả hai phiên bản và đảo ngược sự khác biệt—trong sáu giờ, với sự hỗ trợ của AI.

Dòng thay đổi duy nhất quan trọng

Trên cả ba nhánh, một mục phối hợp duy nhất nổi bật: *) ssh - refactor SSH internal processes and improved system stability; Có mặt trong các bản vá, vắng mặt trong 7.23.3. Đó là dấu vân tay của một bản sửa lỗi nghiêm trọng.

Giải nén NPK

RouterOS phân phối dưới dạng tệp NPK. Gói cơ sở x86 khoảng 20MB, không cần xác thực. Bên trong là squashfs 4.0 với nén xz. Tách nó ra và giải nén—một container Alpine dùng một lần xử lý phần unsquashfs bị thiếu.

RouterOS là một bầy các tiến trình 'nova' nhỏ dưới /nova/bin/, được điều phối bởi một loader chính. Máy chủ SSH nằm trong một bundle, và client và server là cùng một binary. Các tệp chính: sshd (giống hệt byte với ssh), libucrypto.so (mã hóa), và libumsg.so (bus tin nhắn + xử lý đăng nhập).

So sánh ở mức ký hiệu tốt hơn nhiễu ở mức byte

Một cmp ngây thơ báo cáo 170KB khác biệt vì các byte chèn làm dịch chuyển địa chỉ. Tín hiệu nằm trong bảng ký hiệu. So sánh các ký hiệu động trên các ELF thay đổi hé lộ câu chuyện: libumsg.so thêm validLoginParamInput, libucrypto.so thay đổi parseHashFromDerEncoded, và mtget thêm snprintf và lỗi 'Filename too long'.

Mảnh ghép một: '-2' là file descriptor, không phải tên người dùng

validLoginParamInput mới từ chối các giá trị bắt đầu bằng - hoặc khoảng trắng, kết thúc bằng khoảng trắng, hoặc chứa byte điều khiển. Nhưng điểm chìm thực sự là /nova/bin/login, nơi có giao thức kế thừa: nếu một đối số vị trí bắt đầu bằng -, nó bỏ dấu gạch ngang, phân tích phần còn lại bằng atoi, và đọc tối đa 4096 byte từ file descriptor đó. Với SSH tương tác, fd 0, 1 và 2 là bản sao của PTY slave. Vì vậy, tên người dùng -2 có nghĩa là 'đọc các tham số đăng nhập tin cậy từ stderr/PTY fd 2'.

Trường thứ hai trở thành mặt nạ chính sách ủy quyền qua strtoul. Một PTY ở chế độ canonical làm phức tạp việc phân khung: bạn cần hai trường kết thúc bằng NUL, sau đó là hai byte VEOF (0x04 0x04) để kết thúc việc đọc một cách sạch sẽ.

0\x00 654958\x00 \x04\x04

Điều này tạo ra mặt nạ chính sách đầy đủ 0x9fe6e (654958), tập hợp quyền quản trị đầy đủ chuẩn hóa của RouterOS.

Tái hiện: từ chỉ đọc đến toàn quyền quản trị

Sử dụng một bộ phản hồi RADIUS dùng một lần giới hạn ở tên người dùng -2, phiên bên ngoài được ghi nhận thuộc nhóm read. Sau khối fd-2, console mở với toàn quyền. Bằng chứng: :put [/system identity get name] trả về CHR, sau đó một thao tác ghi đổi identity thành minus2-proof và đổi lại.

Trình xác thực không chỉ mang tính hình thức—nó đóng lỗ hổng tiêm argv/chính sách tin cậy này. Tràn mtget là một lỗi riêng biệt, có thể truy cập độc lập, là nguyên thủy hỏng bộ nhớ. Việc giả mạo chữ ký RSA số mũ thấp vào mtget vẫn là lỗi thứ ba, chưa được tái hiện hoàn toàn theo cách không cần thông tin xác thực.

Nếu bạn phát hành bản vá cho toàn hành tinh, thì sự khác biệt giữa cũ và mới chính là thông tin tiết lộ.
Ban biên tập Manul X
Các bản phát hành RouterOS và tình trạng bảo mật của chúng
So sánh nhanh
Bản phát hànhNgàyBản vá SSHCác bản sửa khác
7.23.4 (dài hạn)2026-09-03Tràn mtget, giả mạo chữ ký RSA
7.24.2 (ổn định)2026-09-03Giống như trên
6.49.21 (v6)2026-09-03Chỉ vá SSH được backport
7.23.3 (trước đó)Trước 2026-09-03KhôngDễ bị tấn công