CVE-2026-68100 in Linux
Tóm tắt
Bởi VulDB • 11/08/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
ksmbd: xác thực num_subauth khi sao chép ACE trong hàm set_ntacl_dacl
Hàm `set_ntacl_dacl()` sao chép từng ACE từ bộ mô tả bảo mật (security descriptor) do kẻ tấn công kiểm soát và lưu trữ sang DACL phản hồi một cách nguyên văn mà không kiểm tra `sid.num_subauth`. Các byte của ACE (bao gồm cả giá trị `num_subauth` chưa được xác thực) bắt nguồn từ lệnh SMB2_SET_INFO(SecInfo=DACL) đã được xác thực, dữ liệu này được lưu trữ thô thông qua hàm `ksmbd_vfs_set_sd_xattr()`; do đó, khi gặp một ACE không hợp lệ, hàm `parse_dacl()` sử dụng câu lệnh `break` thay vì trả về lỗi, khiến cho `parse_sec_desc()` vẫn trả về thành công và bộ mô tả bảo mật (SD) bị lỗi định dạng được chuyển đến xattr mà nguyên vẹn.
Trong yêu cầu SMB2_QUERY_INFO(SecInfo=DACL) tiếp theo đối với inode có chứa POSIX access ACL, hàm `build_sec_desc()` -> `set_ntacl_dacl()` -> `set_posix_acl_entries_dacl()` sẽ duyệt qua các ACE đã sao chép và đọc:
ntace->sid.sub_auth[ntace->sid.num_subauth - 1]
với giá trị `num_subauth` được lấy trực tiếp từ bộ mô tả bảo mật (SD) đã lưu trữ. Vì mảng `sub_auth[]` có kích thước cố định là SID_MAX_SUB_AUTHORITIES (15), việc một giá trị `num_subauth` do kẻ tấn công tạo ra (ví dụ: 255) sẽ gây ra lỗi đọc heap ngoài vùng cho phép (out-of-bounds heap read) khoảng ~1 KB với độ lệch hoàn toàn được kiểm soát bởi khách hàng đã xác thực.
Các hàm liên quan khác hiện tại đã chặn trường này: `parse_dacl()` -- num_subauth == 0 || > SID_MAX_SUB_AUTHORITIES `parse_sid()` -- num_subauth > SID_MAX_SUB_AUTHORITIES `smb_copy_sid()` -- min_t(u8, num_subauth, SID_MAX_SUB_AUTHORITIES)
Hàm `set_ntacl_dacl()` là đường dẫn duy nhất không đồng bộ do thiếu kiểm tra này.
Thêm xác thực tương tự cho `num_subauth` trong hàm `set_ntacl_dacl()` trước khi sao chép ACE, phù hợp với cơ chế chặn đã được áp dụng bởi `parse_dacl()`.
If you want to get best quality of vulnerability data, you may have to visit VulDB.