Một lỗ hổng Termix Docker nghiêm trọng đã được phát hiện trong Docker image chính thức của Termix, khiến người dùng đối mặt với nguy cơ rò rỉ dữ liệu nhạy cảm thông tin xác thực SSH. Lỗ hổng này cho phép bất kỳ ai có quyền truy cập mạng có thể trích xuất địa chỉ máy chủ, tên người dùng và mật khẩu SSH đã lưu trữ mà không cần xác thực.
Termix cung cấp một Docker image chạy một backend Node.js phía sau proxy ngược Nginx. Sự cố này xuất phát từ cách ứng dụng xác định nguồn gốc yêu cầu, gây ra một điểm yếu nghiêm trọng trong hệ thống.
Chi tiết kỹ thuật Lỗ hổng Termix Docker
Theo báo cáo của các nhà nghiên cứu bảo mật (GHSA-92cw-877q-6r94), backend của Termix sử dụng phương thức req.ip
để xác định xem một yêu cầu có đến từ máy cục bộ hay không. Đây là một phương pháp thường dùng để kiểm tra quyền truy cập nội bộ.
Tuy nhiên, trong một môi trường Docker điển hình, Nginx và Termix thường chạy trong cùng một container hoặc mạng nội bộ. Khi Nginx hoạt động như một proxy ngược, nó sẽ chuyển tiếp các yêu cầu đến backend Termix.
Trong trường hợp này, req.ip
luôn trả về địa chỉ IP của proxy (thường là 127.0.0.1). Điều này khiến ứng dụng Termix hiểu lầm rằng mọi yêu cầu đều đến từ localhost, bỏ qua các cơ chế xác thực thông thường.
Hậu quả là, bất kỳ ai cũng có thể gọi endpoint /ssh/db/host/internal
và trích xuất chi tiết máy chủ SSH mà không cần bất kỳ sự xác thực nào. Thông tin chi tiết về lỗ hổng có thể được tìm thấy trên GitHub Security Advisory.
Cơ chế khai thác lỗ hổng
Trong một triển khai điển hình, dịch vụ Termix thường nằm trong một máy ảo hoặc môi trường container. Kẻ tấn công có thể quét các tài sản mạng để tìm kiếm các phiên bản Termix bị lộ.
Chỉ cần gửi một yêu cầu GET đơn giản đến endpoint dễ bị tấn công, chúng sẽ nhận được danh sách các máy chủ SSH đã lưu bởi dịch vụ, bao gồm cả thông tin xác thực cần thiết để kết nối với các máy chủ upstream.
Ví dụ về yêu cầu HTTP để khai thác:
GET /ssh/db/host/internal HTTP/1.1
Host: <IP_hoặc_hostname_của_Termix>
User-Agent: curl/7.64.1
Accept: */*
Với yêu cầu HTTP tiêu chuẩn này, backend Termix sẽ trả về toàn bộ dữ liệu cấu hình SSH. Các công cụ quét mạng và nền tảng lập bản đồ tài sản giúp kẻ tấn công dễ dàng xác định vị trí các máy chủ dễ bị tổn thương.
Ảnh hưởng và Rủi ro bảo mật
Khi kẻ tấn công có được quyền truy cập vào thông tin xác thực SSH, chúng có thể dễ dàng di chuyển ngang (lateral movement) trong mạng nội bộ hoặc thu thập thêm thông tin đăng nhập cho các cuộc tấn công tiếp theo. Đây là một rủi ro bảo mật nghiêm trọng, có thể dẫn đến việc kiểm soát hoàn toàn các hệ thống khác.
Dữ liệu bị lộ có thể bao gồm:
- Địa chỉ máy chủ SSH (host addresses)
- Tên người dùng (usernames)
- Mật khẩu (passwords)
- Các thông tin cấu hình SSH nhạy cảm khác
Các phiên bản Termix Docker bị ảnh hưởng
Lỗ hổng Termix Docker này ảnh hưởng đến tất cả các bản phát hành Docker chính thức của Termix, từ release-0.1.1-tag đến release-1.6.0-tag. Hiện tại, chưa có phiên bản vá lỗi nào được phát hành tại thời điểm viết bài này.
Các hệ thống sử dụng Docker image chính thức hoặc các image tùy chỉnh được xây dựng từ Dockerfile chính thức đều dễ bị tấn công, đặc biệt nếu chúng sử dụng proxy ngược Nginx với các cài đặt mặc định.
Biện pháp Giảm thiểu và Khuyến nghị Khẩn cấp
Để bảo vệ chống lại lỗ hổng Termix Docker này, cần thực hiện các biện pháp giảm thiểu ngay lập tức. Các nhóm bảo mật có thể thực hiện những thay đổi sau:
- Chỉnh sửa logic xác thực backend: Thay đổi logic xác thực để sử dụng header
X-Real-IP
thay vì phương thứcreq.ip
hoặc IP được chuyển tiếp mặc định từ proxy. Điều này đảm bảo ứng dụng xác định chính xác địa chỉ IP của máy khách thực tế. - Hạn chế truy cập mạng: Cấu hình tường lửa và nhóm bảo mật (security groups) để chỉ cho phép các IP đáng tin cậy hoặc các dịch vụ nội bộ cần thiết truy cập vào endpoint Termix.
- Giám sát lưu lượng mạng: Triển khai các giải pháp giám sát mạng để phát hiện các yêu cầu đáng ngờ hoặc truy cập trái phép vào các endpoint nhạy cảm của Termix.
Ngoài ra, cho đến khi một bản vá bảo mật chính thức cho Termix Docker image được phát hành, việc áp dụng các biện pháp này có thể giảm thiểu đáng kể khả năng tiếp xúc và hạn chế thiệt hại tiềm tàng. Chúng tôi cũng cần theo dõi các cảnh báo CVE và khuyến nghị từ nhà cung cấp.
Người dùng Termix Docker image nên áp dụng các biện pháp giảm thiểu được khuyến nghị ngay lập tức và chờ đợi một bản vá chính thức để đảm bảo thông tin xác thực SSH của họ luôn được an toàn. Sự chủ động là chìa khóa để bảo vệ hệ thống trước các mối đe dọa tiềm ẩn.