wifi: wilc1000: validate assoc response length before subtracting header
- 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
- 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: wifi: wilc1000: validate assoc response length before subtracting header wilc_parse_assoc_resp_info() computes the trailing IE length as ies_len = buffer_len - sizeof(*res); without first checking that buffer_len is at least sizeof(struct wilc_assoc_resp) (6 bytes). buffer_len is the length reported for a received association response (host_int_parse_assoc_resp_info() passes hif_drv->assoc_resp / assoc_resp_info_len straight in) and must be validated before the driver accesses the fixed header. For a frame shorter than the 6-byte fixed header, the subtraction wraps. For a four-byte response the result is truncated to a u16 ies_len of 65534, so kmemdup() then attempts to copy 65534 bytes starting at buffer + sizeof(*res), beyond the valid association-response data (CWE-125). A response shorter than four bytes can also cause an out-of-bounds read of res->status_code at offsets 2 and 3. Reject frames too short to hold the fixed header before touching the header or computing ies_len. Also set the connection status to a failure on this path: the caller falls through to a "conn_info->status == WLAN_STATUS_SUCCESS" check after the parser returns, so leaving the status untouched could let a malformed short response be treated as a successful association.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
Version range not reported
- Linux Linux
4.2
References 8
git.kernel.org
- stable/c/d79b92417f33424ff23dad76716ed8f2cefb1083
- stable/c/b81d0ea9e1daa215b3da68c1f4f6fb07940c2f6a
- stable/c/8d50acf5420de0c4da99c2d634731c9d3164a755
- stable/c/584c8954ad55f8b09b475be6db710fe40ceb988c
- stable/c/4d410320e8ae5933e651660c9fadc1d380309e23
- stable/c/e511e93abd6eeedcd5b3c55516241f414fbde64a
- stable/c/8ccdf8c8de87a9580df37c3c1ec53ba88cedef65
- stable/c/4c4c97b60a5e978121d9ee8cb0ab3916e5d6a8de