In the Linux kernel, the following vulnerability has been resolved:
cpumap: Zero-initialise xdprxqinfo struct before running XDP program
When running an XDP program that is attached to a cpumap entry, we don't initialise the xdprxqinfo data structure being used in the xdpbuff that backs the XDP program invocation. Tobias noticed that this leads to random values being returned as the xdpmd->rxqueueindex value for XDP programs running in a cpumap.
This means we're basically returning the contents of the uninitialised memory, which is bad. Fix this by zero-initialising the rxq data structure before running the XDP program.
[
{
"id": "CVE-2024-27431-30049035",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "kernel/bpf/cpumap.c",
"function": "cpu_map_bpf_prog_run_xdp"
},
"digest": {
"function_hash": "186747111102215396539091832030306423404",
"length": 1004.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5f4e51abfbe6eb444fa91906a5cd083044278297"
},
{
"id": "CVE-2024-27431-8656f09f",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "kernel/bpf/cpumap.c"
},
"digest": {
"line_hashes": [
"35258017689575273682127653165364277838",
"259284800030778100489580447781189762072",
"184780483380078698407023952974104137729",
"10688597580186053466568019741082778767"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f562e4c4aab00986dde3093c4be919c3f2b85a4a"
},
{
"id": "CVE-2024-27431-8ccf2b7d",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "kernel/bpf/cpumap.c",
"function": "cpu_map_bpf_prog_run_xdp"
},
"digest": {
"function_hash": "290714890177132857326842190674405317902",
"length": 919.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2487007aa3b9fafbd2cb14068f49791ce1d7ede5"
},
{
"id": "CVE-2024-27431-94b6af8f",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "kernel/bpf/cpumap.c",
"function": "cpu_map_bpf_prog_run_xdp"
},
"digest": {
"function_hash": "290714890177132857326842190674405317902",
"length": 919.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f562e4c4aab00986dde3093c4be919c3f2b85a4a"
},
{
"id": "CVE-2024-27431-9cc09a6d",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "kernel/bpf/cpumap.c"
},
"digest": {
"line_hashes": [
"35258017689575273682127653165364277838",
"259284800030778100489580447781189762072",
"184780483380078698407023952974104137729",
"96934875425779168446317587054498636185"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5f4e51abfbe6eb444fa91906a5cd083044278297"
},
{
"id": "CVE-2024-27431-b18b097f",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "kernel/bpf/cpumap.c",
"function": "cpu_map_bpf_prog_run_xdp"
},
"digest": {
"function_hash": "290714890177132857326842190674405317902",
"length": 919.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@eaa7cb836659ced2d9f814ac32aa3ec193803ed6"
},
{
"id": "CVE-2024-27431-c275f8ef",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "kernel/bpf/cpumap.c"
},
"digest": {
"line_hashes": [
"35258017689575273682127653165364277838",
"259284800030778100489580447781189762072",
"184780483380078698407023952974104137729",
"10688597580186053466568019741082778767"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@eaa7cb836659ced2d9f814ac32aa3ec193803ed6"
},
{
"id": "CVE-2024-27431-c9333ce9",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "kernel/bpf/cpumap.c"
},
"digest": {
"line_hashes": [
"35258017689575273682127653165364277838",
"259284800030778100489580447781189762072",
"184780483380078698407023952974104137729",
"10688597580186053466568019741082778767"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2487007aa3b9fafbd2cb14068f49791ce1d7ede5"
},
{
"id": "CVE-2024-27431-d676aa08",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "kernel/bpf/cpumap.c"
},
"digest": {
"line_hashes": [
"35258017689575273682127653165364277838",
"259284800030778100489580447781189762072",
"184780483380078698407023952974104137729",
"10688597580186053466568019741082778767"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3420b3ff1ff489c177ea1cb7bd9fbbc4e9a0be95"
},
{
"id": "CVE-2024-27431-e8cb87e3",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "kernel/bpf/cpumap.c"
},
"digest": {
"line_hashes": [
"35258017689575273682127653165364277838",
"259284800030778100489580447781189762072",
"184780483380078698407023952974104137729",
"10688597580186053466568019741082778767"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f0363af9619c77730764f10360e36c6445c12f7b"
},
{
"id": "CVE-2024-27431-efcbbb9e",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "kernel/bpf/cpumap.c",
"function": "cpu_map_bpf_prog_run_xdp"
},
"digest": {
"function_hash": "292060520382419576871794196397155197227",
"length": 896.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f0363af9619c77730764f10360e36c6445c12f7b"
},
{
"id": "CVE-2024-27431-f57c008f",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "kernel/bpf/cpumap.c",
"function": "cpu_map_bpf_prog_run_xdp"
},
"digest": {
"function_hash": "290714890177132857326842190674405317902",
"length": 919.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3420b3ff1ff489c177ea1cb7bd9fbbc4e9a0be95"
}
]