Lỗ hổng trong ngăn xếp IPv6 của nhân Linux cho phép thực thi mã từ xa

Thông tin đã được tiết lộ về lỗ hổng CVE-2023-6200) trong ngăn xếp mạng của nhân Linux, trong một số trường hợp nhất định, lỗ hổng này cho phép kẻ tấn công từ mạng cục bộ thực thi mã của mình bằng cách gửi gói ICMPv6 được thiết kế đặc biệt với một thông báo RA (Quảng cáo bộ định tuyến) nhằm mục đích quảng cáo thông tin về bộ định tuyến.

Lỗ hổng chỉ có thể bị khai thác từ mạng cục bộ và xuất hiện trên các hệ thống có hỗ trợ IPv6 và tham số sysctl “net.ipv6.conf.<network_interface_name>.accept_ra” đang hoạt động (có thể kiểm tra bằng lệnh “sysctl net.ipv6.conf | grep Accept_ra”) , theo mặc định bị tắt trong RHEL và Ubuntu đối với các giao diện mạng bên ngoài, nhưng được bật cho giao diện loopback, cho phép tấn công từ cùng một hệ thống.

Lỗ hổng này xảy ra do tình trạng dồn đuổi khi trình thu gom rác xử lý các bản ghi fib6_info cũ, điều này có thể dẫn đến quyền truy cập vào vùng bộ nhớ đã được giải phóng (use-after-free). Khi nhận được gói ICMPv6 có thông báo quảng cáo bộ định tuyến (RA, Quảng cáo bộ định tuyến), ngăn xếp mạng gọi hàm ndisc_router_discovery(), nếu thông báo RA chứa thông tin về thời gian tồn tại của tuyến, hãy gọi hàm fib6_set_expires() và điền vào gc_link kết cấu. Để dọn sạch các mục nhập lỗi thời, hãy sử dụng hàm fib6_clean_expires() để tách mục nhập trong gc_link và xóa bộ nhớ được sử dụng bởi cấu trúc fib6_info. Trong trường hợp này, có một thời điểm nhất định khi bộ nhớ dành cho cấu trúc fib6_info đã được giải phóng, nhưng liên kết đến nó vẫn tiếp tục ở cấu trúc gc_link.

Lỗ hổng xuất hiện bắt đầu từ nhánh 6.6 và đã được sửa trong phiên bản 6.6.9 và 6.7. Tình trạng sửa lỗ hổng trong các bản phân phối có thể được đánh giá trên các trang này: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Trong số các bản phân phối gửi gói có nhân 6.6, chúng ta có thể lưu ý Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva và Manjaro; trong các bản phân phối khác, có thể thay đổi có lỗi sẽ được chuyển ngược vào các gói có nhánh hạt nhân cũ hơn (ví dụ: Ví dụ: trong Debian có đề cập rằng gói có kernel 6.5.13 dễ bị tấn công, trong khi thay đổi có vấn đề xuất hiện ở nhánh 6.6). Để giải quyết vấn đề bảo mật, bạn có thể tắt IPv6 hoặc đặt tham số “net.ipv0.conf.*.accept_ra” thành 6.

Nguồn: opennet.ru

Thêm một lời nhận xét