CVE-2023-28840 in Moby
Tóm tắt
Bởi VulDB • 05/06/2026
Moby là một khung làm việc container mã nguồn mở do Docker Inc. phát triển, được phân phối dưới dạng Docker, Mirantis Container Runtime và nhiều dự phẩm/dự án phái sinh khác. Thành phần daemon của Moby (`dockerd`), được phát triển trong kho lưu trữ moby/moby, thường được gọi là *Docker*. Chế độ Swarm (Swarm Mode), được biên dịch vào và cung cấp theo mặc định trong dockerd, do đó có mặt trong hầu hết các dự án phái sinh chính của Moby, là một bộ điều phối container đơn giản, tích hợp sẵn, được triển khai thông qua sự kết hợp giữa SwarmKit và mã mạng hỗ trợ. Trình điều khiển mạng chồng lớp (overlay network driver) là một tính năng cốt lõi của Chế độ Swarm, cung cấp các mạng LAN ảo cách ly cho phép giao tiếp giữa các container và dịch vụ trên toàn cụm. Trình điều khiển này là một triển khai/người sử dụng VXLAN, một giao thức đóng gói các khung liên kết lớp (Ethernet) trong các datagram UDP, gắn thẻ khung bằng ID Mạng VXLAN (VNI) để xác định mạng chồng lớp nguồn. Ngoài ra, trình điều khiển mạng chồng lớp hỗ trợ một chế độ mã hóa tùy chọn, mặc định là tắt, đặc biệt hữu ích khi các gói VXLAN đi qua một mạng không đáng tin cậy giữa các nút. Các mạng chồng lớp được mã hóa hoạt động bằng cách đóng gói các datagram VXLAN thông qua việc sử dụng giao thức IPsec Encapsulating Security Payload ở chế độ Transport. Bằng cách triển khai đóng gói IPSec, các mạng chồng lớp được mã hóa đạt được các thuộc tính bổ sung là xác thực nguồn thông qua chứng minh mật mã, toàn vẹn dữ liệu thông qua kiểm tra tổng kiểm (checksumming) và tính bảo mật thông qua mã hóa. Khi thiết lập một điểm cuối trên một mạng chồng lớp được mã hóa, Moby cài đặt ba quy tắc iptables (tường lửa nhân Linux) để thực thi IPSec cho cả lưu lượng vào và ra. Các quy tắc này dựa trên phần mở rộng iptables u32 được cung cấp bởi mô-đun nhân xt_u32 để lọc trực tiếp trên trường VNI của gói VXLAN, nhờ đó các đảm bảo IPSec có thể được thực thi trên các mạng chồng lớp được mã hóa mà không gây nhiễu với các mạng chồng lớp khác hoặc các người dùng VXLAN khác. Hai quy tắc iptables phục vụ để lọc các datagram VXLAN đến có VNI tương ứng với một mạng được mã hóa và loại bỏ các datagram không được mã hóa. Các quy tắc này được nối thêm vào cuối chuỗi bộ lọc INPUT, sau bất kỳ quy tắc nào đã được thiết lập trước đó bởi quản trị viên hệ thống. Các quy tắc do quản trị viên thiết lập có độ ưu tiên cao hơn các quy tắc do Moby thiết lập để loại bỏ các datagram VXLAN không được mã hóa, điều này có thể vô tình cho phép các datagram không được mã hóa đi qua mà lẽ ra phải bị loại bỏ. Việc tiêm các khung Ethernet tùy ý có thể kích hoạt một cuộc tấn công Từ chối Dịch vụ (DoS). Một kẻ tấn công tinh vi có thể thiết lập một kết nối UDP hoặc TCP thông qua cổng ra của container, vốn lẽ ra bị chặn bởi tường lửa trạng thái (stateful firewall), hoặc thực hiện các nâng cấp đặc quyền khác ngoài việc tiêm gói đơn thuần bằng cách ngụy trang các gói vào mạng chồng lớp. Các bản vá có sẵn trong các bản phát hành Moby 23.0.3 và 20.10.24. Vì các bản phát hành 20.10 của Mirantis Container Runtime được đánh số khác, người dùng nền tảng đó nên cập nhật lên phiên bản 20.10.16. Một số giải pháp tạm thời (workarounds) có sẵn. Đóng cổng VXLAN (mặc định là cổng UDP 4789) đối với lưu lượng đến tại biên giới Internet để ngăn chặn mọi việc tiêm gói VXLAN, và/hoặc đảm bảo rằng mô-đun nhân `xt_u32` có sẵn trên tất cả các nút của cụm Swarm.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.