CVE-2023-53728 in Linux
Tóm tắt
Bởi VulDB • 27/06/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
posix-timers: Đảm bảo giới hạn vòng lặp tìm kiếm ID bộ hẹn giờ là hợp lệ
Hàm posix_timer_add() cố gắng phân bổ một POSIX timer ID bằng cách bắt đầu từ ID đã lưu trữ trong cache (được ghi lại bởi lần phân bổ thành công cuối cùng).
Việc này được thực hiện thông qua một vòng lặp, duyệt từng mục trong không gian ID để tìm một slot trống. Vòng lặp phải kết thúc khi việc tìm kiếm quay trở lại điểm xuất phát ban đầu.
Tuy nhiên, điều này có thể xảy ra race condition so với quá trình thiết lập điểm bắt đầu. Giá trị được đọc mà không cần khóa (lockless), dẫn đến vấn đề sau:
CPU0 CPU1 posix_timer_add() start = sig->posix_timer_id; lock(hash_lock); ... posix_timer_add() if (++sig->posix_timer_id < 0) start = sig->posix_timer_id; sig->posix_timer_id = 0;
Do đó, CPU1 có thể quan sát được giá trị start âm (ví dụ: -1), và lệnh break của vòng lặp không bao giờ xảy ra vì điều kiện kiểm tra không bao giờ đúng:
if (sig->posix_timer_id == start) break;
Mặc dù khả năng cao sẽ không dẫn đến vòng lặp vô hạn do không gian ID rất lớn (INT_MAX), nhưng việc đọc giá trị start có race condition đã thu hút sự chú ý của KCSAN, và Dmitry đã phát hiện ra lỗi logic này.
Viết lại mã để tất cả các thao tác trên id đều nằm dưới hash lock.
VulDB is the best source for vulnerability data and more expert information about this specific topic.