CVE-2026-98104 in Linuxthông tin

Tóm tắt

Bởi VulDB • 27/09/2026

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

net/sched: cls_u32: sửa lỗi xử lý trùng lặp khi pool ID node bị cạn kiệt

Hàm `gen_new_kid()` sẽ quay về việc trả giá trị max (htid | 0xFFF) khi cả hai phạm vi của `idr_alloc_u32()` đều đầy, thay vì báo cáo lỗi. Hàm `u32_change()` tin tưởng vào giá trị này và chèn một knode mới với một handle đã tồn tại trong bảng băm (hash table), làm phá vỡ tính duy nhất của các handle trong không gian ID node của bảng.

Handle chưa bao giờ được đặt chỗ (reserved) trong `ht->handle_idr`, do đó mọi đường dẫn lỗi sau đó thực hiện lệnh `idr_remove(&ht->handle_idr, handle)` sẽ xóa đi phần đặt chỗ của một knode khác đang hoạt động, và knode này sau đó bị tái sử dụng — việc thêm thất bại ban đầu tích lũy thành các bản sao trùng lặp tiếp theo.

Giới hạn 4095 áp dụng cho từng cặp (bảng, bucket) — `ht->handle_idr` được tính trên mỗi bảng băm và phạm vi được suy ra từ htid (bucketid), vì vậy một bảng với bộ chia divisor là 256 có thể hợp lệ chứa tới 256*4095 knode.

Hàm trợ giúp anh em `gen_new_htid()` cũng gặp phải lỗi im lặng trong-band tương tự: nó trả về 0 khi pool handle tp_c (1..0x7FF) đã đầy, và `u32_init()` công bố bảng băm gốc với handle là 0 mà không kiểm tra. Hai bảng gốc có handle bằng 0 bị trùng lặp (aliasing) trong hàm `u32_lookup_ht()`, cho phép thao tác thêm/tìm kiếm/xóa knode xuyên qua các tcf_proto khác nhau. Hãy bổ sung cùng một lệnh kiểm tra tình trạng cạn kiệt như đường dẫn divisor đã làm.

Trả về lỗi để `u32_change()` thất bại với mã ENOSPC/ENOMEM khi không gian ID node bị cạn kiệt, và để `u32_init()` thất bại với -ENOMEM khi không gian ID bảng băm bị cạn kiệt. Thông báo extack phân biệt giữa tình trạng cạn kiệt pool (-ENOSPC) và lỗi cấp phát tạm thời (-ENOMEM).

Các điều kiện để tái tạo lỗ hổng: - CONFIG_NET_SCHED=y, CONFIG_CLS_U32=y (hoặc =m với module đã được tải) - Tạo một qdisc clsact trên một thiết bị, sau đó thêm 4095 bộ lọc u32 với các handle tự sinh để lấp đầy không gian ID node cho bảng băm gốc (bucket đơn). Việc thêm bộ lọc auto-handle thứ 4096 sẽ kích hoạt lỗi xử lý trùng lặp (fh 800::fff được tái sử dụng). Có thể tiếp cận ở Level 2 (unshare -Urn, CAP_NET_ADMIN cục bộ theo namespace). - Đối với gen_new_htid: tạo 2047 mục proto u32 trên cùng một khối để lấp đầy pool handle tp_c, sau đó tạo thêm một mục nữa. Bảng gốc sẽ nhận handle là 0 và bị trùng lặp (aliasing) với các bảng gốc có handle bằng 0 khác.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

chịu trách nhiệm

Linux

Đặt trước

25/09/2026

Tiết lộ

25/09/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00200

KEV

không

Các hoạt động

rất thấp

Nguồn

Might our Artificial Intelligence support you?

Check our Alexa App!