UK — The Register
Giành quyền root trên hệ thống Linux musl bằng mật khẩu quá dài
Bảo mật2 phút đọc
Một lỗ hổng bảo mật trong OpenSSH có thể cho kẻ tấn công quyền root (quyền quản trị cao nhất) trên một số hệ thống Linux dùng musl libc. Cách tấn công là nhập một mật khẩu rất dài. Lỗi này đã được vá.
Chuyện gì đã xảy ra?
Nhà nghiên cứu Özgün Kültekin, thuộc công ty Wakefield, tìm ra một lỗi có tên *sshole. Trên một số máy Linux, kẻ tấn công có thể vào tài khoản root nếu nhập mật khẩu dài hơn 256 byte. Lỗi chỉ xảy ra trong điều kiện rất cụ thể. Hệ thống phải dùng musl libc thay vì thư viện GNU C thông thường. Ngoài ra, máy phải chạy OpenSSH mà không dùng PAM và có bật đăng nhập bằng mật khẩu.
Các con số và sự kiện chính
- Mật khẩu dài từ 257 đến 1.024 ký tự có thể mở khóa tài khoản.
- Lỗi bắt nguồn từ năm 2016, nhưng gốc rễ của nó còn xa hơn, từ thời BSD Unix.
- Musl giới hạn mật khẩu ở 256 byte.
- Tài khoản bị ảnh hưởng phải có dấu sao (*) trong trường mật khẩu.
Vì sao lỗi này có từ lâu?
Dấu sao (*) từng được dùng để chặn đăng nhập bằng mật khẩu cho một số tài khoản. Musl libc khi gặp lỗi lại trả về dấu sao thay vì báo lỗi rõ ràng. Đến khi OpenSSH thêm bước băm giả để tránh lộ tên tài khoản, lỗi mới xuất hiện. Musl lại cắt mật khẩu ở 256 byte, nên các mật khẩu dài bị xử lý theo cách không ngờ tới.
Vì sao điều này quan trọng?
Musl libc khá phổ biến trong các thiết bị nhúng nhờ nhẹ. Quan trọng hơn, nó là thư viện chuẩn của Alpine Linux, hệ điều hành có ảnh hưởng lớn trên các ảnh máy chủ đám mây của AWS và Azure. Vì vậy, một số máy Alpine chạy trên đám mây có thể đang gặp rủi ro, tùy theo cách chúng được cấu hình.
Cần theo dõi điều gì?
- Cập nhật OpenSSH lên bản đã vá.
- Kiểm tra xem máy có dùng musl libc, Alpine Linux, hoặc OpenSSH không dùng PAM hay không.
- Rà soát các tài khoản có dấu sao trong trường mật khẩu.
Chú giải
- OpenSSH
- Phần mềm cho phép đăng nhập và điều khiển máy chủ từ xa một cách an toàn.
- musl libc
- Một thư viện chuẩn nhỏ gọn cho ngôn ngữ C, dùng trong Linux, nhất là trên thiết bị nhúng.
- Alpine Linux
- Một bản phân phối Linux nhỏ gọn, thường dùng trong container và máy chủ đám mây.
- PAM
- Pluggable Authentication Modules, hệ thống giúp Linux kiểm tra danh tính người dùng khi đăng nhập.
- root
- Tài khoản quản trị cao nhất trên Linux, có quyền kiểm soát toàn bộ hệ thống.
- BSD Unix
- Một họ hệ điều hành Unix đời đầu, là nền tảng của nhiều hệ thống sau này.