← Back to CVE List
CVE-2026-90221NVD
Vulnerability Summary
In the Linux kernel, the following vulnerability has been resolved:
nfc: nci: fix use of uninitialized memory in CORE_INIT_RSP parsing
nci_core_init_rsp_packet_v1() and nci_core_init_rsp_packet_v2() parse
the CORE_INIT_RSP packet without validating that the skb contains
enough data. A malformed response (e.g. injected via virtual_ncidev)
can declare a large num_supported_rf_interfaces while providing
insufficient data, causing reads of uninitialized slab memory. This
is later used in nci_init_complete_req(), triggering a KMSAN
uninit-value warning.
Add skb length checks before accessing packet fields:
- Validate the skb has at least 1 byte for the status field.
- Validate the skb can hold the fixed-size header before parsing.
- In v2, bounds-check each variable-length rf_interface entry and its
extension parameters within the parsing loop.
- In v1, verify the skb is large enough for both the variable-length
rf_interfaces array and the trailing rsp_2 structure.
nfc: nci: fix use of uninitialized memory in CORE_INIT_RSP parsing
nci_core_init_rsp_packet_v1() and nci_core_init_rsp_packet_v2() parse
the CORE_INIT_RSP packet without validating that the skb contains
enough data. A malformed response (e.g. injected via virtual_ncidev)
can declare a large num_supported_rf_interfaces while providing
insufficient data, causing reads of uninitialized slab memory. This
is later used in nci_init_complete_req(), triggering a KMSAN
uninit-value warning.
Add skb length checks before accessing packet fields:
- Validate the skb has at least 1 byte for the status field.
- Validate the skb can hold the fixed-size header before parsing.
- In v2, bounds-check each variable-length rf_interface entry and its
extension parameters within the parsing loop.
- In v1, verify the skb is large enough for both the variable-length
rf_interfaces array and the trailing rsp_2 structure.
Affected & Patched Versions
- Linux Linux >= bcd684aace34fedbd473fbd9b21ed06b0c2d2212 and < baed3fdf6ed2195c56f25ae18a086b938dcd3983
- Linux Linux >= bcd684aace34fedbd473fbd9b21ed06b0c2d2212 and < 2f434478771a4ebdd535033561c0590bcde39753
- Linux Linux >= bcd684aace34fedbd473fbd9b21ed06b0c2d2212 and < 5487f04c1ccbfa15aa6e531eb1ec9c9ec9c7bf31
- Linux Linux >= bcd684aace34fedbd473fbd9b21ed06b0c2d2212 and < bbe68e8249e2c76d65adfd9224fa95f1ca0fbe4e
- Linux Linux >= bcd684aace34fedbd473fbd9b21ed06b0c2d2212 and < 4f0483bbcdaccc9d4aee30df7351863334cecfa7
- Linux Linux >= bcd684aace34fedbd473fbd9b21ed06b0c2d2212 and < 7d44b897bff84edcd4814899314d661ad4956a8e
- Linux Linux >= bcd684aace34fedbd473fbd9b21ed06b0c2d2212 and < d56575a2595ee1f597f39e8a1cfb67ed3501678d
- Linux Linux >= 5.11
- Linux Linux baed3fdf6ed2195c56f25ae18a086b938dcd3983
- Linux Linux 2f434478771a4ebdd535033561c0590bcde39753
- Linux Linux 5487f04c1ccbfa15aa6e531eb1ec9c9ec9c7bf31
- Linux Linux bbe68e8249e2c76d65adfd9224fa95f1ca0fbe4e
- Linux Linux 4f0483bbcdaccc9d4aee30df7351863334cecfa7
- Linux Linux 7d44b897bff84edcd4814899314d661ad4956a8e
- Linux Linux d56575a2595ee1f597f39e8a1cfb67ed3501678d
External References
- https://git.kernel.org/stable/c/baed3fdf6ed2195c56f25ae18a086b938dcd3983
- https://git.kernel.org/stable/c/2f434478771a4ebdd535033561c0590bcde39753
- https://git.kernel.org/stable/c/5487f04c1ccbfa15aa6e531eb1ec9c9ec9c7bf31
- https://git.kernel.org/stable/c/bbe68e8249e2c76d65adfd9224fa95f1ca0fbe4e
- https://git.kernel.org/stable/c/4f0483bbcdaccc9d4aee30df7351863334cecfa7
- https://git.kernel.org/stable/c/7d44b897bff84edcd4814899314d661ad4956a8e
- https://git.kernel.org/stable/c/d56575a2595ee1f597f39e8a1cfb67ed3501678d