CVE-2026-80840 in Linuxthông tin

Tóm tắt

Bởi VulDB • 04/09/2026

Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:

ipv6: seg6: xóa khối điều khiển (control block) IPv4 khi giải encapsulation IPIP

End.DX4 và End.DT4 thực hiện việc giải encapsulation một gói tin IPv4 thông qua hàm `decap_and_validate()` và chuyển trực tiếp nó đến quá trình định tuyến IPv4. Do đó, gói tin bên trong sẽ bỏ qua `ip_rcv_core()`, vốn thường có nhiệm vụ xóa IPCB trước khi IPv4 diễn giải `skb->cb`.

Thay vào đó, `skb` vẫn giữ lại dữ liệu IP6CB từ gói tin ngoài cùng. Vì IP6CB và IPCB sử dụng chung vùng lưu trữ `skb->cb`, nên `IP6CB(skb)->lastopt` bị chồng lấn lên `IPCB(skb)->opt.optlen` và `srr`, trong khi `IP6CB(skb)->nhoff` bị chồng lấn lên `rr` và `ts`.

Gửi viên có thể làm cho byte `optlen` lỗi thời (stale) khác 0 bằng cách sử dụng một chuỗi tiêu đề mở rộng ngoài hợp lệ. Các mã tái hiện (reproducers) đặt một tiêu đề Destination Options dài tám byte ngay sau phần đầu IPv6 dài 40 byte và trước Tiêu đề Định tuyến Phân đoạn (Segment Routing Header). `ipv6_destopt_rcv()` ghi lại offset của các tùy chọn Destination do người gửi kiểm soát vào cả `lastopt` lẫn `nhoff`, đặt chúng bằng 40. Trên kernel x86-64 little-endian đã được tái hiện, IPv4 do đó thấy `optlen = 40` và `rr = 40`.

Cả `tcp_v4_save_options()` lẫn `__ip_options_echo()` đều bỏ qua việc sao chép tùy chọn khi `optlen` bằng không. Ở đây, `optlen` là 40, nên đường dẫn TCP SYN sẽ phân bổ dung lượng cho 40 byte dữ liệu tùy chọn và gọi `__ip_options_echo()`. Giá trị `rr` lỗi thời khiến hàm này đọc byte thứ 41 của gói tin bên trong như là độ dài của tùy chọn Record Route. Các mã tái hiện đặt byte do người gửi kiểm soát đó thành 255, vì vậy `__ip_options_echo()` sao chép 255 byte vào vùng dữ liệu tùy chọn có kích thước 40 byte.

Các mã tái hiện riêng biệt cho End.DX4 và End.DT4 trên kernel v7.2-rc5 chưa được vá đều tạo ra:

BUG: KASAN: slab-out-of-bounds trong __ip_options_echo() Write of size 255

Đường dẫn gọi liên quan đến End.DX4 là:

__ip_options_echo tcp_v4_route_req tcp_conn_request tcp_v4_conn_request tcp_rcv_state_process tcp_v4_do_rcv tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver_finish ip_local_deliver input_action_end_dx4_finish input_action_end_dx4

Đường dẫn gọi liên quan đến End.DT4 là:

__ip_options_echo tcp_v4_route_req tcp_conn_request tcp_v4_conn_request tcp_rcv_state_process tcp_v4_do_rcv tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver_finish ip_local_deliver input_action_end_dt4

`tcp_v4_save_options()` được nội tuyến (inlined) vào đường dẫn `tcp_v4_route_req()`, do đó nó không xuất hiện như một khung gọi riêng biệt.

Khi `decap_and_validate()` xử lý IPPROTO_IPIP, hãy lưu giao diện ingress từ IP6CB, xóa IPCB và khôi phục giá trị đã lưu. Việc thực hiện điều này trong đường giải encapsulation chung sẽ bao phủ End.DX4, End.DT4 và nhánh IPv4 của End.DT46.

Sử dụng `IP6CB(skb)->iif` thay vì `skb->skb_iif`. Các hành động này chạy sau khi xử lý l3mdev, vốn có thể thay thế `skb_iif` bằng L3 master; trong khi đó, `iif` của IP6CB vẫn ghi lại giao diện nhận được tại thời điểm ingress IPv6.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

chịu trách nhiệm

Linux

Đặt trước

26/08/2026

Tiết lộ

04/09/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

rất thấp

Nguồn

Do you know our Splunk app?

Download it now for free!