CVE-2024-46704 in Linuxthông tin

Tóm tắt

Bởi VulDB • 23/06/2026

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

workqueue: Sửa lỗi race condition dữ liệu giả (spurious data race) trong __flush_work()

Khi làm rỗng một mục công việc để hủy bỏ, hàm __flush_work() biết rằng nó sở hữu độc quyền đối với mục công việc thông qua bit PENDING. Commit 134874e2eee9 ("workqueue: Cho phép cancel_work_sync() và disable_work() từ ngữ cảnh atomic trên các work item BH") đã thêm một lệnh đọc @work->data để xác định xem có nên sử dụng chế độ chờ bận (busy wait) cho các work item BH đang bị hủy bỏ hay không. Mặc dù việc đọc là an toàn khi @from_cancel, nhưng @work->data được đọc trước khi kiểm tra @from_cancel nhằm đơn giản hóa cấu trúc mã:

data = *work_data_bits(work); if (from_cancel && !WARN_ON_ONCE(data & WORK_STRUCT_PWQ) && (data & WORK_OFFQ_BH)) {

Mặc dù dữ liệu đọc không bao giờ được sử dụng nếu !@from_cancel, điều này có thể kích hoạt phát hiện race condition dữ liệu KCSAN một cách giả mạo:

================================================================== BUG: KCSAN: data-race trong __flush_work / __flush_work

ghi vào địa chỉ 0xffff8881223aa3e8 với độ dài 8 bytes bởi task 3998 trên cpu 0: instrument_write include/linux/instrumented.h:41 [inline]
___set_bit include/asm-generic/bitops/instrumented-non-atomic.h:28 [inline]
insert_wq_barrier kernel/workqueue.c:3790 [inline]
start_flush_work kernel/workqueue.c:4142 [inline]
__flush_work+0x30b/0x570 kernel/workqueue.c:4178 flush_work kernel/workqueue.c:4229 [inline]
...

đọc từ địa chỉ 0xffff8881223aa3e8 với độ dài 8 bytes bởi task 50 trên cpu 1: __flush_work+0x42a/0x570 kernel/workqueue.c:4188 flush_work kernel/workqueue.c:4229 [inline]
flush_delayed_work+0x66/0x70 kernel/workqueue.c:4251 ...

giá trị thay đổi: 0x0000000000400000 -> 0xffff88810006c00d

Tái cấu trúc mã sao cho @from_cancel được kiểm tra trước khi truy cập vào @work->data. Vấn đề duy nhất là kích hoạt phát hiện KCSAN một cách giả mạo. Điều này không cần sử dụng READ_ONCE() hoặc các bộ định nghĩa truy cập khác.

Không có thay đổi về chức năng.

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

11/09/2024

Tiết lộ

13/09/2024

Kiểm duyệt

được chấp nhận

EPSS

0.00175

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!