CVE-2026-90226: nfc: llcp: avoid userspace overflow on invalid optlen

Published Sep 17, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

nfc: llcp: avoid userspace overflow on invalid optlen

nfcllcpgetsockopt() casts optval to (u32 user ) for putuser(), so the kernel always stores 4 bytes regardless of the caller-supplied optlen. The existing mint(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 sizet and slip past the check; an explicit 'len < 0' test is added first to catch negative values before the size compare.

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Apply the kernel fix that rejects any getsockopt call with optlen < sizeof(u32) up front in nfc_llcp_getsockopt(), including an explicit 'len < 0' test before any plain size comparison to prevent negative optlen from being promoted to size_t. This prevents writing 4 bytes via put_user() past the user buffer when optlen < 4.

    Linux kernel getsockopt optlen validation in nfc_llcp_getsockopt() = Reject calls where optlen < sizeof(u32) (and add an explicit len < 0 test before size comparisons)

Event History

Sep 17, 2026
CVE Published
via MITRE·04:07 PM
Data Sourced
via MITRE·04:07 PM
Description

Frequently Asked Questions

1

What must an attacker be able to do to trigger this issue?

They must be able to invoke getsockopt(2) on an NFC LLCP socket and supply an output buffer length smaller than 4 bytes, including a negative length. The vulnerable code affects all five supported LLCP socket option names.

2

What is the impact of a malformed optlen value?

The kernel writes a 4-byte u32 value to the userspace buffer even when the supplied optlen is less than 4 bytes. This can write past the caller's buffer and violates the getsockopt(2) buffer-length contract.

3

What behavior indicates that the fix is present?

The corrected code rejects calls where optlen is negative or smaller than sizeof(u32) before writing the option value. A valid call must provide an output length of at least 4 bytes.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203