smb: client: validate dacloffset before building DACL pointers
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.15.210, 6.1.176, 6.6.140, 6.12.88, 6.18.30, and 1 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: yes
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: smb: client: validate dacloffset before building DACL pointers parse_sec_desc(), build_sec_desc(), and the chown path in id_mode_to_cifs_acl() all add the server-supplied dacloffset to pntsd before proving a DACL header fits inside the returned security descriptor. On 32-bit builds a malicious server can return dacloffset near U32_MAX, wrap the derived DACL pointer below end_of_acl, and then slip past the later pointer-based bounds checks. build_sec_desc() and id_mode_to_cifs_acl() can then dereference DACL fields from the wrapped pointer in the chmod/chown rewrite paths. Validate dacloffset numerically before building any DACL pointer and reuse the same helper at the three DACL entry points.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: yes · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 · fixed in 5de2665e913a10ad70aaeecf736b97276e83d995; From bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 · fixed in f9dc3be8f403c1216df73e57221f44b045e7ee0b; From bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 · fixed in ba7f71b6161c0943dafc367565e5843d16b7d505; From bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 · fixed in 3b1ddba19e77ee35241cd27f16dc3e8d14e08db7; From bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 · fixed in c688f3ed73d31943334ad2139cb02ec49664322a; From bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 · fixed in 8bd07e417b6bda67e317920584e48cb6ee442a8a; From bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 · fixed in f98b48151cc502ada59d9778f0112d21f2586ca3
- Linux Linux
5.12
- KernelLinux
From 5.12.0 · fixed in 5.15.210; From 5.16.0 · fixed in 6.1.176; From 6.2.0 · fixed in 6.6.140; From 6.7.0 · fixed in 6.12.88; From 6.13.0 · fixed in 6.18.30; From 6.19.0 · fixed in 7.0.7
References 7
git.kernel.org
- stable/c/5de2665e913a10ad70aaeecf736b97276e83d995
- stable/c/f9dc3be8f403c1216df73e57221f44b045e7ee0b
- stable/c/ba7f71b6161c0943dafc367565e5843d16b7d505
- stable/c/3b1ddba19e77ee35241cd27f16dc3e8d14e08db7
- stable/c/c688f3ed73d31943334ad2139cb02ec49664322a
- stable/c/8bd07e417b6bda67e317920584e48cb6ee442a8a
- stable/c/f98b48151cc502ada59d9778f0112d21f2586ca3