Lỗ hổng có thể khai thác từ xa trong ngăn xếp TCP của nhân hệ điều hành. Linux

Anthropic đã công bố một lỗ hổng bảo mật nghiêm trọng (CVE-2026-98432) trong ngăn xếp TCP của nhân hệ điều hành. LinuxLỗ hổng này cho phép thực thi mã từ xa bằng cách gửi các gói dữ liệu được tạo ra đặc biệt. Một lỗ hổng khai thác đã được báo cáo, cho phép thực thi mã ở cấp độ nhân hệ điều hành và giành quyền truy cập root từ xa trên hệ thống. Lỗ hổng này phù hợp để tấn công các hệ thống có tiến trình máy chủ chấp nhận kết nối thông qua các socket mạng hỗ trợ giao thức Multipath TCP (MPTCP). Hỗ trợ MPTCP có thể được bật trên cơ sở từng socket mạng, đây là mặc định trong thư viện chuẩn Go, bắt đầu từ Go 1.24 (tháng 2 năm 2025).

Mã khai thác đã chuẩn bị có thể được sử dụng với bất kỳ ứng dụng máy chủ nào được viết bằng Go, bao gồm cả máy chủ HTTP Caddy, miễn là nó có thể gửi các gói mạng đến socket lắng nghe mà nó tạo ra. Vì lỗ hổng này tồn tại trực tiếp trong ngăn xếp IPv4 và không đặc thù cho MPTCP, nên có thể tạo ra các mã khai thác hoạt động mà không cần dựa vào MPTCP, nhưng các mã khai thác như vậy vẫn chưa được chứng minh. Ví dụ, có thể khai thác lỗ hổng khi xử lý các yêu cầu di chuyển socket, có sẵn trong các cấu hình với tham số net.ipv4.tcp_migrate_req=1 hoặc khi sử dụng các chương trình eBPF với tùy chọn BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.

Lỗ hổng này do tình trạng tranh chấp xảy ra trong quá trình xử lý đồng thời các yêu cầu SYN được truyền lại trong quá trình thiết lập kết nối TCP. Vì hàm tcp_v4_syn_recv_sock() truyền các tham số từ cấu trúc ireq->ireq_opt đến socket con thông qua tham chiếu thay vì sao chép chúng, nên trong một số trường hợp nhất định, tình huống xảy ra là bộ nhớ dành cho các cấu trúc inet_opt và ireq_opt chứa các tham số socket đã được giải phóng, nhưng các tùy chọn socket liên quan vẫn tiếp tục được sử dụng (sử dụng sau khi giải phóng).

Việc khai thác từ xa được thực hiện bằng cách gửi một loạt các yêu cầu mạng được đồng bộ hóa theo thời gian. Phương pháp khai thác này áp dụng thành công cho các nhân hệ điều hành sử dụng cơ chế ngẫu nhiên hóa địa chỉ (KASLR), nhưng việc chạm đến cửa sổ điều kiện tranh chấp (race condition window) mất một lượng thời gian đáng kể và yêu cầu rất nhiều lần thử lại. Việc khai thác được đơn giản hóa bởi thực tế là việc bỏ lỡ cửa sổ điều kiện tranh chấp chỉ dẫn đến một quá trình bắt tay (handshake), chứ không phải là sự cố sập nhân hệ điều hành, cho phép thực hiện các lần thử không giới hạn. Trong nguyên mẫu khai thác, cuộc tấn công mất khoảng một giờ — 48 phút để xác định cấu trúc bộ nhớ và thêm 5 phút để tổ chức thực thi mã.

Hiện chưa có giải pháp nào đảm bảo khắc phục được lỗ hổng này — cài đặt bản cập nhật kernel là lựa chọn đáng tin cậy duy nhất. Vấn đề bắt đầu xuất hiện từ kernel. Linux Lỗi này xuất hiện ở phiên bản 4.4 và đã được khắc phục trong các bản phát hành 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 và 7.3. Bạn có thể xem trạng thái khắc phục lỗ hổng trong các bản phân phối trên các trang này: Debian, UbuntuSUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora.

Các khuyến nghị để chống lại các phương pháp khai thác cụ thể mà không ngăn chặn được lỗ hổng nói chung bao gồm vô hiệu hóa hỗ trợ MPTCP và đặt tham số sysctl của nhân hệ điều hành net.ipv4.tcp_migrate_req thành 0:

sysctl -w net.mptcp.enabled=0
sysctl -w net.ipv4.tcp_migrate_req=0

Để xác định xem có tiến trình nào trong hệ thống sử dụng socket hay không.
Bạn có thể sử dụng các lệnh sau cho MPTCP:

hiển thị điểm cuối ip mptcp
giới hạn ip mptcp hiển thị

Để vô hiệu hóa hỗ trợ MPTCP trong các chương trình Go, hãy sử dụng cờ "multipathtcp=0", có thể được thiết lập bằng cách đặt biến môi trường "GODEBUG=multipathtcp=0". Để vô hiệu hóa hỗ trợ MPTCP trong quá trình biên dịch, hãy thêm "godebug multipathtcp=0" vào tệp go.mod. Trong mã ứng dụng của bạn, bạn có thể vô hiệu hóa MPTCP bằng cách sử dụng các hàm net.Dialer.SetMultipathTCP và net.ListenConfig.SetMultipathTCP.

Ngoài vấn đề đã thảo luận, Anthropic cũng công bố một loạt các lỗ hổng có thể khai thác cục bộ trong nhân hệ điều hành. LinuxCác lỗ hổng trong OpenBSD và FreeBSD cho phép truy cập quyền root vào hệ thống và thoát khỏi các container biệt lập; các lỗ hổng trong Chrome và Safari dẫn đến việc thực thi mã trên hệ thống khi mở các trang web được thiết kế đặc biệt; một lỗ hổng trong nhân hệ điều hành. Windows, dẫn đến sự cố sập hệ thống; lỗ hổng bảo mật của nền tảng AndroidLỗ hổng này cho phép bạn vượt qua khóa màn hình và truy cập thông tin cá nhân cũng như ảnh mà không cần mở khóa thiết bị (cuộc tấn công đã được chứng minh trên điện thoại thông minh Google Pixel 9).

Ngoài ra:

  • Trong nginx, khả năng bật tùy chọn IPPROTO_MPTCP cho socket mạng lắng nghe đã có từ phiên bản 1.29.7, nhưng không được sử dụng theo mặc định.
  • Trong Lighttpd, tùy chọn bật MPTCP đã có sẵn từ phiên bản 1.4.76.
  • Trong Apache httpd, các bản vá để hỗ trợ MPTCP đã được thêm vào nhánh Apache httpd 2.5-HEAD vào năm 2024.
  • Trong systemd, tính năng hỗ trợ bật MPTCP khi được kích hoạt qua socket đã được thêm vào ở phiên bản 257.
  • Trong Apache Traffic Server, tùy chọn bật MPTCP được hỗ trợ từ phiên bản 9.2.4 trở lên.
  • Trong HAProxy, bắt đầu từ phiên bản 3.1.0, tùy chọn "mptcp{,4,6}@" khả dụng. "
  • Trong Traefik, việc thiết lập cờ IPPROTO_MPTCP được bật theo mặc định kể từ các phiên bản 2.11.26, 3.4.2 và v3.5.0-rc1.
  • Trong hệ quản trị cơ sở dữ liệu Valkey, bắt đầu từ phiên bản 9.0.0, tùy chọn "--mptcp" và các thiết lập "mptcp yes" và "repl-mptcp yes" đã có sẵn.

Nguồn: opennet.ru

Mua dịch vụ lưu trữ đáng tin cậy cho các trang web có bảo vệ DDoS, máy chủ VPS VDS 🔥 Mua dịch vụ hosting website đáng tin cậy với bảo vệ DDoS, máy chủ VPS VDS | ProHoster