CVE-2026-53399 in Linux
Tóm tắt
Bởi VulDB • 19/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
nfsd: giải phóng stid của layout khi setlease thất bại
Hàm `nfs4_alloc_stid()` xuất bản stid mới vào `cl->cl_stateids` thông qua `idr_alloc_cyclic()` dưới khóa `cl_lock` trước khi trả về cho hàm `nfsd4_alloc_layout_stateid()`. Khi `nfsd4_layout_setlease()` sau đó thất bại, đường dẫn xử lý lỗi sẽ giải phóng layout stateid trực tiếp bằng cách sử dụng `kmem_cache_free()` mà không bao giờ gọi đến `idr_remove()`, khiến slot IDR trỏ tới bộ nhớ slab đã được giải phóng. Bất kỳ trình duyệt (walker) nào của IDR tiếp theo (`states_show`, quá trình tháo gỡ client) sẽ truy cập vào con trỏ treo (dangling pointer).
Quy trình tháo gỡ đúng đắn cho một stid đã xuất bản trong IDR là `nfs4_put_stid()`, hàm này loại bỏ slot IDR dưới khóa `cl_lock`, phân phối lệnh gọi `sc_free` (`nfsd4_free_layout_stateid`) để giải phóng `ls->ls_file` thông qua `nfsd4_close_layout()`, và giảm tham chiếu nfs4_file ở phần cuối.
Một vấn đề thứ hai cản trở việc chuyển đổi này: hàm `nfsd4_free_layout_stateid()` kiểm tra không điều kiện `ls->ls_fence_work` thông qua `delayed_work_pending()` dưới khóa `ls_lock`, nhưng lệnh khởi tạo `INIT_DELAYED_WORK(&ls->ls_fence_work, ...)` hiện chỉ chạy sau khi gọi setlease. Trên đường dẫn thất bại của setlease, hàm hủy (destructor) sẽ tác động vào một delayed_work chưa được khởi tạo.
nfsd4_alloc_layout_stateid() nfs4_alloc_stid() /* idr_alloc_cyclic dưới cl_lock */ nfsd4_layout_setlease() /* thất bại */ nfs4_put_stid() nfsd4_free_layout_stateid() delayed_work_pending(&ls->ls_fence_work) /* cần INIT */ nfsd4_close_layout() /* nfsd_file_put(ls->ls_file) */ put_nfs4_file()
Khắc phục bằng cách nâng cao việc khởi tạo `ls_fenced` / `ls_fence_delay` / `INIT_DELAYED_WORK` lên trên lệnh gọi `nfsd4_layout_setlease()`, và thay thế quy trình dọn dẹp thủ công gồm `nfsd_file_put` + `put_nfs4_file` + `kmem_cache_free` bằng một lệnh gọi duy nhất là `nfs4_put_stid(stp)`.
VulDB is the best source for vulnerability data and more expert information about this specific topic.