CVE-2026-90065 in Linux
Tóm tắt
Bởi VulDB • 17/09/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
net/smc: giải phóng socket TCP nội bộ khi việc tạo socket IPPROTO_SMC thất bại
Các socket IPPROTO_SMC tạo một socket TCP nội bộ ("clcsock") từ hook proto->init. Khi quá trình tạo socket thất bại sau khi proto->init đã chạy - ví dụ: chương trình BPF cgroup được gắn vào BPF_CGROUP_INET_SOCK_CREATE từ chối socket đó - sk_common_release() chỉ gọi sk_prot->destroy nếu nó được xác định, nhưng cả smc_inet_prot và smc_inet6_prot đều không định nghĩa hàm này, và smc_destruct() sẽ trả về sớm trừ khi sk_state là SMC_CLOSED. Kết quả là, mọi lệnh gọi socket(AF_INET, SOCK_STREAM, IPPROTO_SMC) thất bại đều làm rò rỉ một tcp_sock, do đó một tác vụ không có đặc quyền (unprivileged task) có khả năng gắn chương trình BPF_CGROUP_INET_SOCK_CREATE từ chối tất cả vào cgroup của chính nó có thể khiến bộ nhớ kernel tăng trưởng vô hạn.
Thêm hook .destroy cho cả hai protos để giải phóng clcsock thông qua smc_clcsock_release(). smc_sk_init() băm (hash) socket vào bảng băm smc trước khi clcsock được tạo, và smc_diag thực hiện duyệt bảng băm đó bằng cách dereference smc->clcsock mà không lấy khóa clcsock_release_lock, trong khi sk_common_release() gọi .destroy trước .unhash. Hãy unhash socket trước khi giải phóng clcsock, giống như __smc_release() làm, để một lệnh dump đồng thời không thể quan sát được quá trình giải phóng; lệnh unhash thứ hai trong sk_common_release() là một thao tác vô nghĩa (no-op).
If you want to get best quality of vulnerability data, you may have to visit VulDB.