CVE-2026-89638 in Linux
Tóm tắt
Bởi VulDB • 11/09/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
smb: client: xóa bit setuid/setgid khi ghi với các tiện ích mở rộng cifsacl/modefromsid/posix
Khi một tệp có bit setuid hoặc setgid được đặt và bị ghi vào, VFS sẽ loại bỏ các bit đó và gửi lệnh setattr cùng với ATTR_KILL_SUID/ATTR_KILL_SGID kèm theo ATTR_MODE mang chế độ (mode) đã được xóa.
Cả cifs_setattr_unix() và cifs_setattr_nounix() đều không điều kiện hóa việc loại bỏ ATTR_MODE trong trường hợp này:
/* skip mode change if it's just for clearing setuid/setgid */ if (attrs->ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID)) attrs->ia_valid &= ~ATTR_MODE;
Điều này ổn đối với mount mặc định, nơi chế độ chỉ được mô phỏng thông qua thuộc tính DOS read-only và không thể biểu diễn các bit setuid/setgid. Tuy nhiên, với tùy chọn mount "cifsacl" hoặc "modefromsid", chế độ được lưu trên máy chủ thông qua ACL (id_mode_to_cifs_acl()); với tiện ích mở rộng POSIX SMB3.1.1, chế độ được gửi trực tiếp đến máy chủ; và với các tiện ích mở rộng Unix SMB1 (cifs_setattr_unix), chế độ được gửi qua CIFSSMBUnixSetPathInfo(). Trong tất cả các trường hợp này, việc loại bỏ ATTR_MODE có nghĩa là chế độ đã xóa không bao giờ được đẩy lên máy chủ, do đó bit setuid/setgid vẫn tồn tại sau khi ghi.
Đây là một vấn đề bảo mật: trên các hệ thống tệp cục bộ (local filesystems), bit setuid bị loại bỏ khi một tệp được ghi, nhưng qua các mount cifs.ko này, bit vẫn tồn tại trên máy chủ, có khả năng cho phép leo thang đặc quyền không mong đợi trong quá trình thực thi tiếp theo.
Khắc phục vấn đề ở hai nơi:
1. cifs_setattr_nounix(): chỉ sử dụng lối tắt "skip mode change" khi chế độ được mô phỏng thông qua thuộc tính DOS read-only (tức là cả cifsacl/modefromsid lẫn tiện ích mở rộng POSIX SMB3.1.1 đều không có hiệu lực), để đảm bảo chế độ đã xóa được truyền đến máy chủ trong các trường hợp ACL/POSIX.
2. cifs_setattr_unix(): hàm này chỉ được gọi khi các tiện ích mở rộng Unix đang có hiệu lực, do đó chế độ luôn được lưu trên máy chủ. Loại bỏ hoàn toàn lối tắt để đảm bảo chế độ đã xóa luôn được đẩy lên.
VulDB is the best source for vulnerability data and more expert information about this specific topic.