CVE-2023-53286 in Linuxthông tin

Tóm tắt

Bởi VulDB • 01/06/2026

Trong đoạn log kernel panic/crash bạn cung cấp, đây là một lỗi **kernel oops** xảy ra trong quá trình đóng một file descriptor liên quan đến **InfiniBand (IB) User-space Verbs API**.

Dưới đây là phân tích chi tiết:

### 1. Nguyên nhân trực tiếp - **Hàm gây lỗi:** `ib_uverbs_close` (trong module `ib_uverbs`). - **Vị trí lỗi:** Offset `0x1a` trong hàm `ib_uverbs_close`. - **Bối cảnh:** Lỗi xảy ra khi một tiến trình người dùng (user-space process) gọi syscall `close()` (RAX=3, ORIG_RAX=3) để đóng một file descriptor (RDI=5). - **Cơ chế:** Khi `close()` được gọi, kernel sẽ giải phóng tài nguyên file thông qua `__fput`. Trong quá trình này, `task_work_run` được gọi để thực hiện các công việc trì hoãn, và một trong những công việc đó là gọi `ib_uverbs_close` để dọn dẹp tài nguyên InfiniBand liên kết với file descriptor đó.

### 2. Phân tích Call Trace ``` ib_uverbs_close+0x1a/0x90 [ib_uverbs]
__fput+0x82/0x230 task_work_run+0x59/0x90 exit_to_user_mode_prepare+0x138/0x140 syscall_exit_to_user_mode+0x1d/0x50 ? __x64_sys_close+0xe/0x40 do_syscall_64+0x4a/0x90 entry_SYSCALL_64_after_hwframe+0x44/0xae ``` - Lỗi xảy ra ngay khi kernel cố gắng dọn dẹp tài nguyên IB sau khi syscall `close` hoàn tất hoặc trong quá trình chuẩn bị quay lại user-space. - `ib_uverbs_close` là hàm được đăng ký để xử lý việc đóng file descriptor của các thiết bị InfiniBand.

### 3. Nguyên nhân có thể (Root Cause) Vì lỗi xảy ra ở offset rất nhỏ (`0x1a`) trong `ib_uverbs_close`, khả năng cao là do: 1. **Use-after-free hoặc Null Pointer Dereference:** Hàm `ib_uverbs_close` đang truy cập vào một con trỏ đã bị giải phóng hoặc là NULL. Điều này thường xảy ra nếu: - Có race condition giữa việc đóng file descriptor và các thao tác IB khác (như `close_qp`, `close_pd`, v.v.). - Tài nguyên IB đã bị hủy bởi một phần khác của hệ thống hoặc driver trước khi `ib_uverbs_close` được gọi. 2. **Lỗi trong driver InfiniBand cụ thể:** Nếu bạn đang sử dụng một driver IB tùy chỉnh hoặc driver của nhà cung cấp (như Mellanox/NVIDIA, Intel, Broadcom), có thể có lỗi trong code dọn dẹp tài nguyên. 3. **Lỗi trong ứng dụng người dùng:** Ứng dụng có thể đã đóng file descriptor IB một cách không đúng cách (ví dụ: đóng nhiều lần, hoặc đóng trong khi vẫn đang sử dụng tài nguyên IB).

### 4. Các bước khắc phục và điều tra

#### A. Kiểm tra phiên bản kernel và driver - Xác định phiên bản kernel đang chạy: `uname -r` - Xác định driver InfiniBand đang sử dụng: `lsmod | grep ib_` - Kiểm tra xem có bản cập nhật kernel hoặc driver IB nào không. Lỗi này có thể đã được sửa trong các phiên bản kernel mới hơn.

#### B. Kiểm tra log hệ thống - Xem toàn bộ log kernel trước và sau khi crash: `dmesg -T | tail -n 100` - Tìm các thông báo lỗi liên quan đến InfiniBand, RDMA, hoặc `ib_uverbs` trước khi crash.

#### C. Kiểm tra ứng dụng người dùng - Xác định ứng dụng nào đang sử dụng InfiniBand (thông qua PID trong log nếu có, hoặc từ ngữ cảnh hệ thống). - Kiểm tra xem ứng dụng có đóng file descriptor IB đúng cách không. - Nếu có thể, thử chạy ứng dụng với `strace` để xem chuỗi syscall trước khi crash.

#### D. Tắt tính năng IB nếu không cần thiết - Nếu hệ thống không sử dụng InfiniBand/RDMA, hãy thử vô hiệu hóa module `ib_uverbs` và các module liên quan để xem lỗi có còn xảy ra không. ```bash sudo modprobe -r ib_uverbs sudo modprobe -r ib_core ``` *(Lưu ý: Chỉ làm điều này nếu bạn chắc chắn không cần IB, vì nó có thể ảnh

VulDB is the best source for vulnerability data and more expert information about this specific topic.

chịu trách nhiệm

Linux

Đặt trước

16/09/2025

Tiết lộ

16/09/2025

Kiểm duyệt

được chấp nhận

EPSS

0.00153

KEV

không

Các hoạt động

rất thấp

Nguồn

Want to stay up to date on a daily basis?

Enable the mail alert feature now!