In the Linux kernel, the following vulnerability has been resolved:
vsock: fix recursive ->recvmsg calls
After a vsock socket has been added to a BPF sockmap, its prot->recvmsg has been replaced with vsockbpfrecvmsg(). Thus the following recursiion could happen:
vsockbpfrecvmsg() -> _vsockrecvmsg() -> vsockconnectiblerecvmsg() -> prot->recvmsg() -> vsockbpfrecvmsg() again
We need to fix it by calling the original ->recvmsg() without any BPF sockmap logic in _vsockrecvmsg().
[
{
"id": "CVE-2024-44996-3e980045",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@921f1acf0c3cf6b1260ab57a8a6e8b3d5f3023d5",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"128860280642145350645752562179539970733",
"55478285112227836276034339815340402513",
"308059600082892821167699805205564883260",
"221511927253214635126021554512374870861",
"336115117073454192717572958300007254790",
"93991646514107432378629067121203990193"
]
},
"target": {
"file": "net/vmw_vsock/vsock_bpf.c"
}
},
{
"id": "CVE-2024-44996-451f2e90",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b4ee8cf1acc5018ed1369150d7bb3e0d0f79e135",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"59236642425677821751979603751391738311",
"278853603633200769525502477943996882246",
"81688370813018336599449244269170836354",
"261685198984509737770460151314422766113",
"61067832539532215793822970214181891876",
"106284922463137599685492063232182933758",
"211144469731806593792682243692166253691",
"289611586244112640450598684609484281252",
"104489630150260981164890303019320353927",
"211212609927651323978438840844651511850",
"282019150594078192559071852219754516859",
"71260199927285220508711426370421978774",
"301183473015327660466665798300032559099",
"10498330931172270519030512322891119318",
"264938764760982655903365683139533297543",
"158960966069480759672674214111768016389",
"153117013643512308761536853515911062934",
"33423650085153849131073414288024345405",
"312545189495249435004698882609460371437",
"157651980301333024258605461288868584691",
"288495035627839611327521500171790299735",
"224335550704433863489288429241259201668",
"101969192940196634152087362920517822530",
"314959867941290228747703921616259127911",
"259952755809451893796465631847918380686",
"122425431355592536663402811190769277462",
"194196285110925726103992629810138551583",
"156402450936481681406333210926653461276",
"118811743101424409072323411023391609591",
"40159507290802510753757603943995151177",
"194060776183253728603593064675192558523",
"43166086781140189404847407236946825422",
"104217587524918745888069134486648044746",
"45302638300478648431547059542473956846",
"168424342334473476812418181279346854627",
"206813381151653510109473652120118974129",
"317628144964806205968490731136489576785",
"283383732300378315916366754630252392442",
"292738590093067298582131388464904441325",
"277982920946601154656337003285920807925",
"106436413119072516696969741110068361936",
"265964500759853688338409531776453563210",
"181546343269341306229084078700411639904",
"117041695734506075043876663345261506150",
"285351646071383213831005526994177142215"
]
},
"target": {
"file": "net/vmw_vsock/af_vsock.c"
}
},
{
"id": "CVE-2024-44996-4e936d18",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b4ee8cf1acc5018ed1369150d7bb3e0d0f79e135",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "276551209420439942709037618971767123918",
"length": 1064.0
},
"target": {
"function": "vsock_connectible_recvmsg",
"file": "net/vmw_vsock/af_vsock.c"
}
},
{
"id": "CVE-2024-44996-56e1a58e",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@921f1acf0c3cf6b1260ab57a8a6e8b3d5f3023d5",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "6661726330648093431404571527675010358",
"length": 446.0
},
"target": {
"function": "vsock_dgram_recvmsg",
"file": "net/vmw_vsock/af_vsock.c"
}
},
{
"id": "CVE-2024-44996-88ad7ce9",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@921f1acf0c3cf6b1260ab57a8a6e8b3d5f3023d5",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"45434425357707231045048114830954346722",
"188438544569418338111836527356872909070",
"306389827481464289066483808848878284281",
"303656916714751079175408487380853113207",
"190359070558906911513810625540416181600",
"326138947246245016350282855007093001661"
]
},
"target": {
"file": "include/net/af_vsock.h"
}
},
{
"id": "CVE-2024-44996-901eba60",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@921f1acf0c3cf6b1260ab57a8a6e8b3d5f3023d5",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"59236642425677821751979603751391738311",
"278853603633200769525502477943996882246",
"81688370813018336599449244269170836354",
"261685198984509737770460151314422766113",
"61067832539532215793822970214181891876",
"106284922463137599685492063232182933758",
"211144469731806593792682243692166253691",
"289611586244112640450598684609484281252",
"104489630150260981164890303019320353927",
"211212609927651323978438840844651511850",
"282019150594078192559071852219754516859",
"71260199927285220508711426370421978774",
"301183473015327660466665798300032559099",
"10498330931172270519030512322891119318",
"264938764760982655903365683139533297543",
"158960966069480759672674214111768016389",
"153117013643512308761536853515911062934",
"33423650085153849131073414288024345405",
"312545189495249435004698882609460371437",
"157651980301333024258605461288868584691",
"288495035627839611327521500171790299735",
"224335550704433863489288429241259201668",
"101969192940196634152087362920517822530",
"314959867941290228747703921616259127911",
"259952755809451893796465631847918380686",
"122425431355592536663402811190769277462",
"194196285110925726103992629810138551583",
"156402450936481681406333210926653461276",
"118811743101424409072323411023391609591",
"40159507290802510753757603943995151177",
"194060776183253728603593064675192558523",
"43166086781140189404847407236946825422",
"104217587524918745888069134486648044746",
"45302638300478648431547059542473956846",
"168424342334473476812418181279346854627",
"206813381151653510109473652120118974129",
"317628144964806205968490731136489576785",
"283383732300378315916366754630252392442",
"292738590093067298582131388464904441325",
"277982920946601154656337003285920807925",
"106436413119072516696969741110068361936",
"265964500759853688338409531776453563210",
"181546343269341306229084078700411639904",
"117041695734506075043876663345261506150",
"285351646071383213831005526994177142215"
]
},
"target": {
"file": "net/vmw_vsock/af_vsock.c"
}
},
{
"id": "CVE-2024-44996-9c4d0a24",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@69139d2919dd4aa9a553c8245e7c63e82613e3fc",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"59236642425677821751979603751391738311",
"278853603633200769525502477943996882246",
"81688370813018336599449244269170836354",
"261685198984509737770460151314422766113",
"61067832539532215793822970214181891876",
"106284922463137599685492063232182933758",
"211144469731806593792682243692166253691",
"289611586244112640450598684609484281252",
"104489630150260981164890303019320353927",
"211212609927651323978438840844651511850",
"282019150594078192559071852219754516859",
"71260199927285220508711426370421978774",
"301183473015327660466665798300032559099",
"10498330931172270519030512322891119318",
"264938764760982655903365683139533297543",
"158960966069480759672674214111768016389",
"153117013643512308761536853515911062934",
"33423650085153849131073414288024345405",
"312545189495249435004698882609460371437",
"157651980301333024258605461288868584691",
"288495035627839611327521500171790299735",
"224335550704433863489288429241259201668",
"101969192940196634152087362920517822530",
"314959867941290228747703921616259127911",
"259952755809451893796465631847918380686",
"122425431355592536663402811190769277462",
"194196285110925726103992629810138551583",
"156402450936481681406333210926653461276",
"118811743101424409072323411023391609591",
"40159507290802510753757603943995151177",
"194060776183253728603593064675192558523",
"43166086781140189404847407236946825422",
"104217587524918745888069134486648044746",
"45302638300478648431547059542473956846",
"168424342334473476812418181279346854627",
"206813381151653510109473652120118974129",
"317628144964806205968490731136489576785",
"283383732300378315916366754630252392442",
"292738590093067298582131388464904441325",
"277982920946601154656337003285920807925",
"106436413119072516696969741110068361936",
"265964500759853688338409531776453563210",
"181546343269341306229084078700411639904",
"117041695734506075043876663345261506150",
"285351646071383213831005526994177142215"
]
},
"target": {
"file": "net/vmw_vsock/af_vsock.c"
}
},
{
"id": "CVE-2024-44996-9dbb150b",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@69139d2919dd4aa9a553c8245e7c63e82613e3fc",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"128860280642145350645752562179539970733",
"55478285112227836276034339815340402513",
"308059600082892821167699805205564883260",
"221511927253214635126021554512374870861",
"336115117073454192717572958300007254790",
"93991646514107432378629067121203990193"
]
},
"target": {
"file": "net/vmw_vsock/vsock_bpf.c"
}
},
{
"id": "CVE-2024-44996-a32865e6",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b4ee8cf1acc5018ed1369150d7bb3e0d0f79e135",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"128860280642145350645752562179539970733",
"55478285112227836276034339815340402513",
"308059600082892821167699805205564883260",
"221511927253214635126021554512374870861",
"336115117073454192717572958300007254790",
"93991646514107432378629067121203990193"
]
},
"target": {
"file": "net/vmw_vsock/vsock_bpf.c"
}
},
{
"id": "CVE-2024-44996-b25de387",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@921f1acf0c3cf6b1260ab57a8a6e8b3d5f3023d5",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "276551209420439942709037618971767123918",
"length": 1064.0
},
"target": {
"function": "vsock_connectible_recvmsg",
"file": "net/vmw_vsock/af_vsock.c"
}
},
{
"id": "CVE-2024-44996-b8363c51",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@69139d2919dd4aa9a553c8245e7c63e82613e3fc",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "276551209420439942709037618971767123918",
"length": 1064.0
},
"target": {
"function": "vsock_connectible_recvmsg",
"file": "net/vmw_vsock/af_vsock.c"
}
},
{
"id": "CVE-2024-44996-ce7ce10d",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b4ee8cf1acc5018ed1369150d7bb3e0d0f79e135",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "6661726330648093431404571527675010358",
"length": 446.0
},
"target": {
"function": "vsock_dgram_recvmsg",
"file": "net/vmw_vsock/af_vsock.c"
}
},
{
"id": "CVE-2024-44996-d1c91d2a",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@69139d2919dd4aa9a553c8245e7c63e82613e3fc",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "6661726330648093431404571527675010358",
"length": 446.0
},
"target": {
"function": "vsock_dgram_recvmsg",
"file": "net/vmw_vsock/af_vsock.c"
}
},
{
"id": "CVE-2024-44996-dd961115",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@69139d2919dd4aa9a553c8245e7c63e82613e3fc",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"45434425357707231045048114830954346722",
"188438544569418338111836527356872909070",
"306389827481464289066483808848878284281",
"303656916714751079175408487380853113207",
"190359070558906911513810625540416181600",
"326138947246245016350282855007093001661"
]
},
"target": {
"file": "include/net/af_vsock.h"
}
},
{
"id": "CVE-2024-44996-e1c5c30b",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b4ee8cf1acc5018ed1369150d7bb3e0d0f79e135",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"45434425357707231045048114830954346722",
"188438544569418338111836527356872909070",
"306389827481464289066483808848878284281",
"303656916714751079175408487380853113207",
"190359070558906911513810625540416181600",
"326138947246245016350282855007093001661"
]
},
"target": {
"file": "include/net/af_vsock.h"
}
}
]