In the Linux kernel, the following vulnerability has been resolved:
bpftool: Fix undefined behavior in qsort(NULL, 0, ...)
When netfilter has no entry to display, qsort is called with qsort(NULL, 0, ...). This results in undefined behavior, as UBSan reports:
net.c:827:2: runtime error: null pointer passed as argument 1, which is declared to never be null
Although the C standard does not explicitly state whether calling qsort with a NULL pointer when the size is 0 constitutes undefined behavior, Section 7.1.4 of the C standard (Use of library functions) mentions:
"Each of the following statements applies unless explicitly stated otherwise in the detailed descriptions that follow: If an argument to a function has an invalid value (such as a value outside the domain of the function, or a pointer outside the address space of the program, or a null pointer, or a pointer to non-modifiable storage when the corresponding parameter is not const-qualified) or a type (after promotion) not expected by a function with variable number of arguments, the behavior is undefined."
To avoid this, add an early return when nflinkinfo is NULL to prevent calling qsort with a NULL pointer.
[
{
"id": "CVE-2024-49987-0861d994",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "tools/bpf/bpftool/net.c"
},
"digest": {
"line_hashes": [
"244721741582061075898677474567087243031",
"323478804735079153538708319532017452749",
"183956560719324251198744291209028647864"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c208b02827eb642758cef65641995fd3f38c89af"
},
{
"id": "CVE-2024-49987-649a258e",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "tools/bpf/bpftool/net.c",
"function": "show_link_netfilter"
},
"digest": {
"function_hash": "81074989053187942066815093323183227448",
"length": 1422.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c2d9f9a7837ab29ccae0c42252f17d436bf0a501"
},
{
"id": "CVE-2024-49987-81094d4e",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "tools/bpf/bpftool/net.c"
},
"digest": {
"line_hashes": [
"244721741582061075898677474567087243031",
"323478804735079153538708319532017452749",
"183956560719324251198744291209028647864"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2e0f6f33f2aa87493b365a38a8fd87b8854b7734"
},
{
"id": "CVE-2024-49987-9521c5d2",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "tools/bpf/bpftool/net.c",
"function": "show_link_netfilter"
},
"digest": {
"function_hash": "81074989053187942066815093323183227448",
"length": 1422.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f04e2ad394e2755d0bb2d858ecb5598718bf00d5"
},
{
"id": "CVE-2024-49987-bfb36095",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "tools/bpf/bpftool/net.c"
},
"digest": {
"line_hashes": [
"244721741582061075898677474567087243031",
"323478804735079153538708319532017452749",
"183956560719324251198744291209028647864"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f04e2ad394e2755d0bb2d858ecb5598718bf00d5"
},
{
"id": "CVE-2024-49987-d1aa522f",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "tools/bpf/bpftool/net.c",
"function": "show_link_netfilter"
},
"digest": {
"function_hash": "81074989053187942066815093323183227448",
"length": 1422.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2e0f6f33f2aa87493b365a38a8fd87b8854b7734"
},
{
"id": "CVE-2024-49987-e5f6c6f9",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "tools/bpf/bpftool/net.c",
"function": "show_link_netfilter"
},
"digest": {
"function_hash": "81074989053187942066815093323183227448",
"length": 1422.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c208b02827eb642758cef65641995fd3f38c89af"
},
{
"id": "CVE-2024-49987-f45b76ca",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "tools/bpf/bpftool/net.c"
},
"digest": {
"line_hashes": [
"244721741582061075898677474567087243031",
"323478804735079153538708319532017452749",
"183956560719324251198744291209028647864"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c2d9f9a7837ab29ccae0c42252f17d436bf0a501"
}
]