In the Linux kernel, the following vulnerability has been resolved:
ksmbd: validate num_aces and harden ACE walk in smb_inherit_dacl()
smb_inherit_dacl() trusts the on-disk num_aces value from the parent directory's DACL xattr and uses it to size a heap allocation:
aces_base = kmalloc(sizeof(struct smb_ace) * num_aces * 2, ...);
num_aces is a u16 read from le16_to_cpu(parent_pdacl->num_aces) without checking that it is consistent with the declared pdacl_size. An authenticated client whose parent directory's security.NTACL is tampered (e.g. via offline xattr corruption or a concurrent path that bypasses parse_dacl()) can present num_aces = 65535 with minimal actual ACE data. This causes a ~8 MB allocation (not kzalloc, so uninitialized) that the subsequent loop only partially populates, and may also overflow the three-way size_t multiply on 32-bit kernels.
Additionally, the ACE walk loop uses the weaker offsetof(struct smb_ace, access_req) minimum size check rather than the minimum valid on-wire ACE size, and does not reject ACEs whose declared size is below the minimum.
Reproduced on UML + KASAN + LOCKDEP against the real ksmbd code path. A legitimate mount.cifs client creates a parent directory over SMB (ksmbd writes a valid security.NTACL xattr), then the NTACL blob on the backing filesystem is rewritten to set num_aces = 0xFFFF while keeping the posix_acl_hash bytes intact so ksmbd_vfs_get_sd_xattr()'s hash check still passes. A subsequent SMB2 CREATE of a child under that parent drives smb2_open() into smb_inherit_dacl() (share has "vfs objects = acl_xattr" set), which fails the page allocator:
WARNING: mm/page_alloc.c:5226 at __alloc_frozen_pages_noprof+0x46c/0x9c0 Workqueue: ksmbd-io handle_ksmbd_work __alloc_frozen_pages_noprof+0x46c/0x9c0 ___kmalloc_large_node+0x68/0x130 __kmalloc_large_node_noprof+0x24/0x70 __kmalloc_noprof+0x4c9/0x690 smb_inherit_dacl+0x394/0x2430 smb2_open+0x595d/0xabe0 handle_ksmbd_work+0x3d3/0x1140
With the patch applied the added guard rejects the tampered value with -EINVAL before any large allocation runs, smb2_open() falls back to smb2_create_sd_buffer(), and the child is created with a default SD. No warning, no splat.
Fix by:
1. Validating num_aces against pdacl_size using the same formula applied in parse_dacl().
2. Replacing the raw kmalloc(sizeof * num_aces * 2) with kmalloc_array(num_aces * 2, sizeof(...)) for overflow-safe allocation.
3. Tightening the per-ACE loop guard to require the minimum valid ACE size (offsetof(smb_ace, sid) + CIFS_SID_BASE_SIZE) and rejecting under-sized ACEs, matching the hardening in smb_check_perm_dacl() and parse_dacl().
v1 -> v2: - Replace the synthetic test-module splat in the changelog with a real-path UML + KASAN reproduction driven through mount.cifs and SMB2 CREATE; Namjae flagged the kcifs3_test_inherit_dacl_old name in v1 since it does not exist in ksmbd. - Drop the commit-hash citation from the code comment per Namjae's review; keep the parse_dacl() pointer.
CVSS Details
- CVSS 3.1 Base Score: 8.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jul 23, 2026 | Jul 23, 2026 |
| Ubuntu | — | Upgrade linux-image-7.0.0-1007-oracleUpgrade linux-image-7.0.0-27-generic-64kUpgrade linux-image-azure-fipsUpgrade linux-image-oem-22.04aUpgrade linux-image-6.8.0-1061-awsUpgrade linux-image-7.0.0-1013-nvidiaUpgrade linux-image-oracle-64kUpgrade linux-image-aws-lts-24.04Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-oracle-7.0Upgrade linux-image-aws-fips-6.8Upgrade linux-image-kvmUpgrade linux-image-7.0.0-1014-raspiUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-6.8.0-1064-gcp-fipsUpgrade linux-image-6.8.0-136-genericUpgrade linux-image-7.0.0-1008-awsUpgrade linux-image-7.0.0-1007-gcp-64kUpgrade linux-image-oracle-64k-6.8Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-ibm-classicUpgrade linux-image-raspi-realtimeUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-generic-6.8Upgrade linux-image-6.8.0-1063-azureUpgrade linux-image-6.8.0-1059-nvidia-lowlatencyUpgrade linux-image-7.0.0-1007-oracle-64kUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-virtual-7.0Upgrade linux-image-fips-6.8Upgrade linux-image-generic-7.0Upgrade linux-image-oem-20.04cUpgrade linux-image-oem-24.04bUpgrade linux-image-oem-22.04bUpgrade linux-image-ibmUpgrade linux-image-ibm-6.8Upgrade linux-image-nvidia-64kUpgrade linux-image-nvidia-7.0Upgrade linux-image-realtime-hwe-22.04Upgrade linux-image-6.8.0-1061-aws-fipsUpgrade linux-image-gke-64kUpgrade linux-image-realtime-64k-hwe-26.04Upgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-6.8.0-1033-xilinxUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-oem-20.04dUpgrade linux-image-xilinxUpgrade linux-image-oracle-64k-7.0Upgrade linux-image-azure-lts-24.04Upgrade linux-image-gcp-7.0Upgrade linux-image-azure-7.0Upgrade linux-image-gcp-fipsUpgrade linux-image-aws-64k-6.8Upgrade linux-image-azure-fde-7.0Upgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-virtual-hwe-26.04Upgrade linux-image-oem-24.04cUpgrade linux-image-raspi-7.0Upgrade linux-image-oem-24.04dUpgrade linux-image-6.8.0-1030-nvidia-tegraUpgrade linux-image-realtime-hwe-26.04Upgrade linux-image-generic-hwe-26.04Upgrade linux-image-nvidia-64k-7.0Upgrade linux-image-6.8.0-1059-gkeUpgrade linux-image-6.8.0-1059-nvidia-64kUpgrade linux-image-7.0.0-1009-azure-fdeUpgrade linux-image-6.8.0-1058-oracleUpgrade linux-image-gcpUpgrade linux-image-lowlatencyUpgrade linux-image-generic-64k-6.8Upgrade linux-image-7.0.0-1008-aws-64kUpgrade linux-image-6.8.0-1061-raspiUpgrade linux-image-azure-fips-6.8Upgrade linux-image-azure-fdeUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-awsUpgrade linux-image-6.8.0-1059-nvidia-lowlatency-64kUpgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-6.8.0-1059-gke-64kUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-aws-6.8Upgrade linux-image-gkeop-6.8Upgrade linux-image-oem-24.04aUpgrade linux-image-virtualUpgrade linux-image-6.8.0-1058-oracle-64kUpgrade linux-image-6.8.0-1046-gkeopUpgrade linux-image-6.8.0-136-lowlatencyUpgrade linux-image-gke-6.8Upgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-7.0.0-1013-nvidia-64kUpgrade linux-image-7.0.0-28-generic-64kUpgrade linux-image-azureUpgrade linux-image-6.8.0-1063-azure-fipsUpgrade linux-image-6.8.0-1030-nvidia-tegra-rtUpgrade linux-image-realtime-6.8.1Upgrade linux-image-nvidia-tegra-rtUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-nvidia-6.8Upgrade linux-image-oem-22.04cUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-6.8.0-136-fipsUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-6.8.0-1061-ibmUpgrade linux-image-oem-22.04Upgrade linux-image-oem-20.04Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-intel-iotgUpgrade linux-image-7.0.0-27-realtime-64kUpgrade linux-image-xilinx-6.8Upgrade linux-image-realtime-64k-7.0Upgrade linux-image-7.0.0-27-genericUpgrade linux-image-virtual-6.8Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-gkeopUpgrade linux-image-raspi-6.8Upgrade linux-image-oracle-lts-24.04Upgrade linux-image-gke-64k-6.8Upgrade linux-image-gcp-64k-7.0Upgrade linux-image-7.0.0-27-realtimeUpgrade linux-image-6.8.0-136-generic-64kUpgrade linux-image-6.8.0-1059-nvidiaUpgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-laptop-23.10Upgrade linux-image-generic-64k-hwe-26.04Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-oracle-6.8Upgrade linux-image-realtime-64kUpgrade linux-image-7.0.0-1007-gcpUpgrade linux-image-6.8.0-1061-aws-64kUpgrade linux-image-6.8.0-1064-gcpUpgrade linux-image-raspi-realtime-7.0Upgrade linux-image-azure-fde-6.8Upgrade linux-image-lowlatency-64kUpgrade linux-image-realtimeUpgrade linux-image-generic-64k-7.0Upgrade linux-image-raspiUpgrade linux-image-fipsUpgrade linux-image-oracleUpgrade linux-image-6.8.0-136-lowlatency-64kUpgrade linux-image-7.0.0-1014-raspi-realtimeUpgrade linux-image-aws-7.0Upgrade linux-image-oem-24.04Upgrade linux-image-nvidia-tegraUpgrade linux-image-generic-lpaeUpgrade linux-image-6.8.0-1064-gcp-64kUpgrade linux-image-7.0.0-28-genericUpgrade linux-image-6.8.1-1056-realtimeUpgrade linux-image-gkeUpgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-realtime-7.0Upgrade linux-image-6.8.0-1062-azure-fdeUpgrade linux-image-azure-6.8Upgrade linux-image-7.0.0-1010-azureUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-oem-22.04dUpgrade linux-image-ibm-7.0Upgrade linux-image-gcp-6.8Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-7.0.0-1009-ibmUpgrade linux-image-oem-20.04bUpgrade linux-image-nvidiaUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-intel-iot-realtimeUpgrade linux-image-aws-fipsUpgrade linux-image-gcp-fips-6.8Upgrade linux-image-gcp-64k-6.8Upgrade linux-image-aws-64kUpgrade linux-image-6.8.0-2050-raspi-realtimeUpgrade linux-image-lowlatency-6.8Upgrade linux-image-generic-64kUpgrade linux-image-aws-64k-7.0Upgrade linux-image-genericUpgrade linux-image-gcp-64k | Jul 1, 2026 | May 1, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jul 10, 2026 | May 1, 2026 |
Prioritize with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub