CVE-2021-47288

Severity CVSS v4.0:
Pending analysis
Type:
CWE-125 Out-of-bounds Read
Publication date:
21/05/2024
Last modified:
23/12/2024

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> media: ngene: Fix out-of-bounds bug in ngene_command_config_free_buf()<br /> <br /> Fix an 11-year old bug in ngene_command_config_free_buf() while<br /> addressing the following warnings caught with -Warray-bounds:<br /> <br /> arch/alpha/include/asm/string.h:22:16: warning: &amp;#39;__builtin_memcpy&amp;#39; offset [12, 16] from the object at &amp;#39;com&amp;#39; is out of the bounds of referenced subobject &amp;#39;config&amp;#39; with type &amp;#39;unsigned char&amp;#39; at offset 10 [-Warray-bounds]<br /> arch/x86/include/asm/string_32.h:182:25: warning: &amp;#39;__builtin_memcpy&amp;#39; offset [12, 16] from the object at &amp;#39;com&amp;#39; is out of the bounds of referenced subobject &amp;#39;config&amp;#39; with type &amp;#39;unsigned char&amp;#39; at offset 10 [-Warray-bounds]<br /> <br /> The problem is that the original code is trying to copy 6 bytes of<br /> data into a one-byte size member _config_ of the wrong structue<br /> FW_CONFIGURE_BUFFERS, in a single call to memcpy(). This causes a<br /> legitimate compiler warning because memcpy() overruns the length<br /> of &amp;com.cmd.ConfigureBuffers.config. It seems that the right<br /> structure is FW_CONFIGURE_FREE_BUFFERS, instead, because it contains<br /> 6 more members apart from the header _hdr_. Also, the name of<br /> the function ngene_command_config_free_buf() suggests that the actual<br /> intention is to ConfigureFreeBuffers, instead of ConfigureBuffers<br /> (which takes place in the function ngene_command_config_buf(), above).<br /> <br /> Fix this by enclosing those 6 members of struct FW_CONFIGURE_FREE_BUFFERS<br /> into new struct config, and use &amp;com.cmd.ConfigureFreeBuffers.config as<br /> the destination address, instead of &amp;com.cmd.ConfigureBuffers.config,<br /> when calling memcpy().<br /> <br /> This also helps with the ongoing efforts to globally enable<br /> -Warray-bounds and get us closer to being able to tighten the<br /> FORTIFY_SOURCE routines on memcpy().

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 2.6.34 (including) 4.4.277 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.5 (including) 4.9.277 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.10 (including) 4.14.241 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.15 (including) 4.19.199 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.20 (including) 5.4.136 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.5 (including) 5.10.54 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (including) 5.13.6 (excluding)
cpe:2.3:o:linux:linux_kernel:5.14:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.14:rc2:*:*:*:*:*:*