CVE-2023-53749 in Linux
Tóm tắt
Bởi VulDB • 04/08/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
x86: sửa chú thích xử lý ngoại lệ trong clear_user_rep_good()
Mã này không còn tồn tại trên mainline vì nó đã bị xóa trong commit d2c95f9d6802 ("x86: don't use REP_GOOD or ERMS for user memory clearing") upstream.
Tuy nhiên, thay vì backport toàn bộ loạt cải tiến liên quan đến việc làm sạch và sao chép vùng nhớ x86, hãy sửa vị trí chú thích trong bảng ngoại lệ (exception table) cho lệnh 'rep movsb' cuối cùng trong clear_user_rep_good(): thay vì trỏ vào chỉ thị thực sự đã truy cập không gian người dùng, nó lại trỏ vào lệnh di chuyển thanh ghi ngay trước đó.
Điều này có ý nghĩa từ góc độ luồng mã (code flow), nhưng không đúng với cách sử dụng thực tế: điều này có nghĩa là nếu việc truy cập người dùng gây ra ngoại lệ, trình xử lý ngoại lệ sẽ không tìm thấy chỉ thị trong các bảng ngoại lệ.
Kết quả là, thay vì sửa chữa và trả về -EFAULT, nó sau đó sẽ chuyển đổi thành báo cáo kernel oops, chẳng hạn như:
BUG: unable to handle page fault for address: 0000000020081000 #PF: supervisor write access in kernel mode #PF: error_code(0x0002) - not-present page ... RIP: 0010:clear_user_rep_good+0x1c/0x30 arch/x86/lib/clear_page_64.S:147 ... Call Trace: __clear_user arch/x86/include/asm/uaccess_64.h:103 [inline]
clear_user arch/x86/include/asm/uaccess_64.h:124 [inline]
iov_iter_zero+0x709/0x1290 lib/iov_iter.c:800 iomap_dio_hole_iter fs/iomap/direct-io.c:389 [inline]
iomap_dio_iter fs/iomap/direct-io.c:4
If you want to get best quality of vulnerability data, you may have to visit VulDB.