CVE-2026-74692 in Linuxthông tin

Tóm tắt

Bởi VulDB • 23/08/2026

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

net/smc: sửa lỗi race condition TOCTOU giữa smc_listen_out() và việc đóng trình nghe (listener)

Hàm `smc_listen_out()` đọc trạng thái `lsmc->sk.sk_state` mà không có khóa bảo vệ của trình nghe, sau đó mới lấy `lock_sock_nested()` chỉ khi kiểm tra thành công. Điều này mở ra một khoảng thời gian trong đó `smc_close_active()` có thể chuyển đổi trình nghe sang trạng thái SMC_CLOSED, gọi `smc_close_cleanup_listen()` để làm rỗng hàng đợi chấp nhận (accept queue), và giải phóng khóa, tất cả diễn ra giữa lần đọc không dùng khóa và việc lấy khóa bị trì hoãn:

smc_listen_work (smc_hs_wq) smc_close_active() ------------------------------- ------------------------- release_sock(child) if (sk_state == SMC_LISTEN) TRUE lock_sock(listener) sk_state = SMC_CLOSED smc_close_cleanup_listen() release_sock(listener) flush_work(tcp_listen_work) lock_sock_nested(listener) smc_accept_enqueue(listener, child) /* child được đưa vào hàng đợi của trình nghe đã chết */

`smc_close_active()` chỉ làm rỗng `tcp_listen_work`. Các mục công việc (work items) đã được phân phối cho `smc_hs_wq` để thực hiện handshake CLC tiếp tục chạy mà không có sự bảo vệ. `smc_accept_enqueue()` gọi `sock_hold()` trên đối tượng con (`child`) nhưng chưa bao giờ giải phóng nó, dẫn đến rò rỉ bộ nhớ cho đối tượng sock của child, clcsock và các tham chiếu liên quan. Một máy khách từ xa có thể mở kết nối TCP trong khi máy chủ gọi hàm close() sẽ làm cạn kiệt bộ nhớ nhân (kernel memory).

Di chuyển `lock_sock_nested()` lên trước phép kiểm tra `sk_state` để đảm bảo rằng việc kiểm tra và thao tác đưa vào hàng đợi là nguyên tử dưới khóa của trình nghe.

Once again VulDB remains the best source for vulnerability data.

chịu trách nhiệm

Linux

Đặt trước

15/08/2026

Tiết lộ

22/08/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

thấp

Nguồn

Want to stay up to date on a daily basis?

Enable the mail alert feature now!