Một chuỗi lỗ hổng nghiêm trọng trong phần mềm UniFi OS Server đang đặt hàng nghìn tổ chức vào tình trạng rủi ro bảo mật cao. Kẻ tấn công có thể giành quyền truy cập root đầy đủ vào các thiết bị bị ảnh hưởng mà không cần bất kỳ thông tin xác thực nào, chỉ với một yêu cầu không xác thực duy nhất, dẫn đến việc chiếm quyền kiểm soát hệ thống hoàn toàn.
Tổng quan về Lỗ hổng UniFi OS Server
UniFi OS Server là nền tảng quản lý cho hệ sinh thái ứng dụng UniFi, bao gồm Network, Protect, cùng các dịch vụ nhận dạng và cập nhật đi kèm.
Nó hoạt động như một tập hợp các dịch vụ backend, đứng sau một dịch vụ Nginx duy nhất có nhiệm vụ xử lý TLS, xác thực yêu cầu và chuyển tiếp chúng đến các dịch vụ nội bộ phù hợp. Chức năng chuyển tiếp này là trung tâm của mô hình bảo mật, và đây chính là điểm khởi đầu của chuỗi tấn công này.
Chi tiết chuỗi tấn công RCE
Các nhà nghiên cứu bảo mật đã xác định và xác nhận chuỗi tấn công hoàn chỉnh, chứng minh rằng một yêu cầu duy nhất đến UniFi OS Server có thể dẫn đến một reverse shell với đầy đủ quyền root.
Sự nghiêm trọng của lỗ hổng này xuất phát từ khả năng kiểm soát của thiết bị: nó là mặt phẳng quản lý cho toàn bộ mạng mà nó vận hành. Quyền truy cập root cho phép kẻ tấn công truy cập mọi bí mật được lưu trữ, tạo các phiên quản trị giả mạo có thể tồn tại ngay cả sau khi vá lỗi, và trong các triển khai vật lý, có thể xâm phạm cả hệ thống kiểm soát cửa ra vào và camera an ninh.
Vào ngày 13 tháng 5 năm 2025, Ubiquiti đã công bố Bản tin Bảo mật SAB-013, bao gồm năm lỗ hổng trên dòng thiết bị UniFi OS. Các lỗ hổng này có thể liên kết với nhau để tạo thành một chuỗi tấn công thực thi mã từ xa không xác thực (unauthenticated remote code execution).
Phân tích các lỗ hổng chính
Ba lỗ hổng đóng vai trò quan trọng nhất trong chuỗi tấn công này:
- Một lỗ hổng kiểm soát truy cập không phù hợp (improper access control flaw) trong cổng xác thực.
- Một lỗ hổng vượt qua đường dẫn (path traversal flaw) trong cổng xác thực.
- Một lỗ hổng xác thực đầu vào không phù hợp (improper input validation flaw) trong dịch vụ cập nhật gói (package-update service).
Cả hai lỗ hổng đầu tiên đều được xếp hạng CVSS 10.0 Critical, tương tự như lỗ hổng thứ ba. Điều này cho thấy mức độ nghiêm trọng cao nhất của các lỗ hổng này.
Điều kiện tiên quyết để khai thác
Điều kiện duy nhất để khai thác thành công là khả năng truy cập vào giao diện quản trị. Giao diện này thường lắng nghe trên cổng TCP 443, làm cho chuỗi tấn công có thể tiếp cận được từ bất kỳ đâu có thể kết nối đến bảng điều khiển quản lý web.
Chi tiết kỹ thuật về Chuỗi Tấn công
Chuỗi tấn công bao gồm ba phần chính:
Phần 1: Vượt qua Cổng Xác thực
Nginx thực thi xác thực thông qua một yêu cầu phụ (auth_request subrequest) tới dịch vụ Node unifi-core. Dịch vụ này quyết định xem một yêu cầu là công khai hay cần xác thực.
Nguyên nhân gốc rễ nằm ở sự khác biệt giữa hai cách diễn giải cùng một URI: kiểm tra miễn trừ yêu cầu công khai (auth-exempt check) hoạt động trên tiêu đề x-original-uri gốc đã được mã hóa phần trăm (percent-encoded), trong khi Nginx định tuyến yêu cầu dựa trên URI đã được chuẩn hóa và giải mã.
Một yêu cầu được chế tạo cẩn thận, có dạng gốc bắt đầu bằng tiền tố auth-exempt /api/auth/validate-sso/, nhưng dạng chuẩn hóa của nó lại phân giải thành một tuyến nội bộ /proxy/, sẽ vượt qua cổng xác thực mà không cần bất kỳ thông tin xác thực nào.
Phần 2: Truy cập Điểm Nhấn Lệnh
Phía sau cổng xác thực là một tuyến package-update trong backend dịch vụ nhận dạng và cập nhật chung.
Bộ xử lý (handler) xây dựng một chuỗi lệnh bằng cách sử dụng fmt.Sprintf theo một định dạng như sudo /usr/bin/ uos runnable latest-versions % v, trong đó % v là tên gói do người gọi cung cấp được nội suy nguyên văn.
Trong phiên bản 3.1.16, không có cơ chế xác thực tên gói, và chuỗi này được truyền đến một hàm trợ giúp chạy nó thông qua trình bao bọc shell sh -c. Các ký tự đặc biệt của shell (shell metacharacters) trong đầu vào được diễn giải thay vì được coi là dữ liệu, cho phép thực thi lệnh tùy ý (arbitrary command injection).
Một ví dụ về yêu cầu có thể gây ra lỗ hổng này:
POST /api/auth/validate-sso/;%20echo%20$(id)%20>%20/tmp/hello HTTP/1.1
Host: vulnerable.uni.fi
...
{ ... "uri": "/proxy/network/api/v1/system/users/$(id)" ... }Phần 3: Leo thang Quyền lực lên Root
Lệnh bị chèn được thực thi với tư cách là tài khoản dịch vụ ucs-update. Tài khoản này có quyền sudo không cần mật khẩu (passwordless sudo entitlements) đối với các lệnh /usr/bin/dpkg, /bin/chmod, /bin/systemctl và /usr/bin/uos.
Các nhà nghiên cứu đã sử dụng đường dẫn dpkg trên một mục tiêu thực tế, cài đặt một gói .deb có tập lệnh hậu cài đặt đọc tệp /etc/shadow, xác nhận khả năng thực thi quyền root đầy đủ.
Một ví dụ về payload có thể được sử dụng để đạt được quyền root:
POST /api/auth/validate-sso/;%20echo%20'test:%246%24........................:18978:0:99999:7:::'%20|%20sudo%20chpasswd%20-c HTTP/1.1
Host: vulnerable.uni.fi
...
{ ... "uri": "/proxy/network/api/v1/system/users/test" ... }Payload này thay đổi mật khẩu của người dùng test, cho phép đăng nhập sau đó với tư cách người dùng root.
Biện pháp Khắc phục và Bảo vệ
Ubiquiti đã khắc phục cả ba phần của lỗ hổng trong phiên bản UniFi OS Server 3.2.12.
- Một cơ chế chuẩn hóa URI trong Nginx đã được triển khai để đóng lỗ hổng bypass cổng xác thực.
- Backend
package-updateđã được cập nhật với danh sách cho phép và cơ chế xác thực tên gói để ngăn chặn tấn công injection. - Quyền sudo của tài khoản
ucs-updateđã bị loại bỏ đối với/usr/bin/dpkgvà/bin/chmod, giảm thiểu bề mặt leo thang đặc quyền.
Các biện pháp phòng ngừa bổ sung:
- Cập nhật bản vá ngay lập tức lên phiên bản UniFi OS Server 3.2.12 hoặc mới hơn.
- Xoay vòng khóa ký JWT (JWT signing key).
- Buộc đăng xuất tất cả các phiên hiện tại.
- Đặt lại mật khẩu cho các cơ sở dữ liệu.
Do chuỗi tấn công này có thể đạt được quyền root mà không cần thông tin xác thực hoặc tương tác người dùng, nên sẽ không có dấu vết đăng nhập thất bại trong nhật ký. Do đó, cần thực hiện các biện pháp bảo mật bổ sung như hạn chế quyền truy cập bên ngoài vào giao diện web và giới hạn nó trong một mạng quản lý để ngăn chặn các yêu cầu không xác thực từ Internet có thể tiếp cận cổng xác thực.
Tóm tắt các lỗ hổng chính:
- CVE: Không được chỉ định cụ thể trong nguồn, nhưng các lỗ hổng được báo cáo liên quan đến các vấn đề kiểm soát truy cập, vượt qua đường dẫn và xác thực đầu vào.
- CVSS: 10.0 Critical cho các lỗ hổng chính trong chuỗi.
- IOC: Không có IOC cụ thể về mã độc hoặc nhóm tấn công được đề cập.
Để có thêm thông tin chi tiết, vui lòng tham khảo báo cáo của Bishop Fox tại bishopfox.com.










