CVE-2026-53390 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:
ksmbd: sửa lỗi đọc vượt ra ngoài vùng nhớ (out-of-bounds read) trong smb_check_perm_dacl()
Việc duyệt qua các ACE kiểm tra quyền hạn trong hàm smb_check_perm_dacl() xác thực kích thước tiêu đề của ACE và giới hạn giá trị sid.num_subauth ở mức SID_MAX_SUB_AUTHORITIES, nhưng nó không bao giờ kiểm tra xem ace->size có đủ lớn để chứa num_subauth sub-authorities hay không trước khi compare_sids() giải tham chiếu chúng.
CIFS_SID_BASE_SIZE bao gồm phần tiêu đề của SID cho đến (nhưng không tính) mảng sub_auth[], và offsetof(struct smb_ace, sid) là tiêu đề ACE; do đó, các cơ chế bảo vệ hiện tại chỉ đảm bảo được 8 byte cơ sở của SID, tức là zero sub-authorities. Sau đó, compare_sids() đọc ace->sid.sub_auth[i] với i < min(local_sid->num_subauth, ace->sid.num_subauth). Các SIDs so sánh cục bộ (sid_everyone, sid_unix_NFS_mode và kết quả từ id_to_sid()) luôn có ít nhất một sub-authority, và kẻ tấn công kiểm soát các byte revision và authority của ACE (nằm trong vùng cơ sở SID hợp lệ), vì vậy chúng có thể khớp với một trong những SIDs đó và buộc việc đọc dữ liệu từ sub_auth.
Do đó, một ACE được tạo ra đặc biệt với size == 16 và num_subauth >= 1 đặt ở cuối mô tả bảo mật (security descriptor) sẽ gây ra lỗi đọc vượt ra ngoài vùng nhớ trên heap lên đến SID_MAX_SUB_AUTHORITIES * sizeof(__le32) byte sau phần phân bổ pntsd. Mô tả bảo mật được tải bởi ksmbd_vfs_get_sd_xattr() vào một bộ đệm có kích thước chính xác bằng dữ liệu trên đĩa (kzalloc(sd_size) trong ndr_decode_v4_ntacl()), nên việc đọc sẽ rơi ra ngoài vùng phân bổ. Mô tả không hợp lệ này có thể được lưu trữ nguyên văn thông qua SMB2_SET_INFO (DACL không được chuẩn hóa trước khi ghi vào xattr security.NTACL) và lỗi đọc xảy ra tại một lần kiểm tra truy cập SMB2_CREATE tiếp theo, khiến lỗ hổng này có thể khai thác bởi một client đã xác thực trên một share sử dụng ACL xattrs.
Thêm lệnh kiểm tra num_subauth so với ace_size bị thiếu, sao chép các cơ chế bảo vệ tương tự hiện có trong các trình phân tích con parse_dacl() và smb_inherit_dacl().
If you want to get best quality of vulnerability data, you may have to visit VulDB.