nfc: llcp: avoid userspace overflow on invalid optlen
- 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.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.110, and 2 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
Summary
In the Linux kernel, the following vulnerability has been resolved: nfc: llcp: avoid userspace overflow on invalid optlen nfc_llcp_getsockopt() casts optval to (u32 __user *) for put_user(), so the kernel always stores 4 bytes regardless of the caller-supplied optlen. The existing min_t(u32, len, sizeof(u32)) only clamps the length reported back to userspace; it does not constrain the store. A call with optlen < 4 therefore writes past the user buffer, violating the getsockopt(2) contract for all five supported optnames. Reject any call with optlen < sizeof(u32) up front. 'len' is int, so a plain size comparison would promote a negative optlen to size_t and slip past the check; an explicit 'len < 0' test is added first to catch negative values before the size compare.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 26fd76cab2e61cedc5c25f7151fb31b57ddc53c7 · fixed in 42859562b7cc4313a84a584f338118edb7087066; From 26fd76cab2e61cedc5c25f7151fb31b57ddc53c7 · fixed in 598dcd53c52f8eeb9dd5382198c03960d5d40fcd; From 26fd76cab2e61cedc5c25f7151fb31b57ddc53c7 · fixed in 7e40f2f5e7bc06c3ddef781180ce4f7994176547; From 26fd76cab2e61cedc5c25f7151fb31b57ddc53c7 · fixed in 35573c6cb081af2f4a7caeea291302aca5484526; From 26fd76cab2e61cedc5c25f7151fb31b57ddc53c7 · fixed in b4c5abaea06292e1dddb70eac1b51589b32c77a3; From 26fd76cab2e61cedc5c25f7151fb31b57ddc53c7 · fixed in 8bf228fa02b1ed8ce622fb81fa8edc42be9aeb67; From 26fd76cab2e61cedc5c25f7151fb31b57ddc53c7 · fixed in bd6f1277b62bc1df348ca21739df2bc546fcd493; From 26fd76cab2e61cedc5c25f7151fb31b57ddc53c7 · fixed in 99985bfa8336fadcc69190ba2dcbd5386af3d661
- Linux Linux
3.10
- KernelLinux
From 3.10.0 · fixed in 5.10.270; From 5.11.0 · fixed in 5.15.221; From 5.16.0 · fixed in 6.1.188; From 6.2.0 · fixed in 6.6.157; From 6.7.0 · fixed in 6.12.110; From 6.13.0 · fixed in 6.18.52; From 6.19.0 · fixed in 7.2.6
References 8
git.kernel.org
- stable/c/42859562b7cc4313a84a584f338118edb7087066
- stable/c/598dcd53c52f8eeb9dd5382198c03960d5d40fcd
- stable/c/7e40f2f5e7bc06c3ddef781180ce4f7994176547
- stable/c/35573c6cb081af2f4a7caeea291302aca5484526
- stable/c/b4c5abaea06292e1dddb70eac1b51589b32c77a3
- stable/c/8bf228fa02b1ed8ce622fb81fa8edc42be9aeb67
- stable/c/bd6f1277b62bc1df348ca21739df2bc546fcd493
- stable/c/99985bfa8336fadcc69190ba2dcbd5386af3d661