In the Linux kernel, the following vulnerability has been resolved:
bpf: fix recursive lock when verdict program return SK_PASS
When the streamverdict program returns SKPASS, it places the received skb into its own receive queue, but a recursive lock eventually occurs, leading to an operating system deadlock. This issue has been present since v6.9.
''' skpsockstrpdataready writelockbh(&sk->skcallbacklock) strpdataready strpreadsock readsock -> tcpreadsock strprecv cb.rcvmsg -> skpsockstrpread # now streamverdict return SKPASS without peer sock assign _SKPASS = skpsockmapverd(SKPASS, NULL) skpsockverdictapply skpsockskbingressself skpsockskbingressenqueue skpsockdataready readlockbh(&sk->skcallbacklock) <= dead lock
'''
This topic has been discussed before, but it has not been fixed. Previous discussion: https://lore.kernel.org/all/6684a5864ec86_403d20898@john.notmuch
{
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/56xxx/CVE-2024-56694.json"
}"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-56694.json"
[
{
"id": "CVE-2024-56694-093bf803",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"134306045722667955527207357750455164012",
"91831934410980966986435248677671162323",
"55231370448792961521949993574066205903",
"234149083254002698142270125569440211649",
"169961250969762815567487889520897983285",
"250330936311250429618323144363514596603"
]
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@01f1b88acfd79103da0610b45471f6c88ea98d72",
"target": {
"file": "net/core/skmsg.c"
},
"deprecated": false
},
{
"id": "CVE-2024-56694-246051d1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"134306045722667955527207357750455164012",
"91831934410980966986435248677671162323",
"55231370448792961521949993574066205903",
"234149083254002698142270125569440211649",
"169961250969762815567487889520897983285",
"250330936311250429618323144363514596603"
]
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f84c5ef6ca23cc2f72f3b830d74f67944684bb05",
"target": {
"file": "net/core/skmsg.c"
},
"deprecated": false
},
{
"id": "CVE-2024-56694-2817c277",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"134306045722667955527207357750455164012",
"91831934410980966986435248677671162323",
"55231370448792961521949993574066205903",
"234149083254002698142270125569440211649",
"169961250969762815567487889520897983285",
"250330936311250429618323144363514596603"
]
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@386efa339e08563dd33e83bc951aea5d407fe578",
"target": {
"file": "net/core/skmsg.c"
},
"deprecated": false
},
{
"id": "CVE-2024-56694-9120e1c4",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"134306045722667955527207357750455164012",
"91831934410980966986435248677671162323",
"55231370448792961521949993574066205903",
"234149083254002698142270125569440211649",
"169961250969762815567487889520897983285",
"250330936311250429618323144363514596603"
]
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6694f7acd625ed854bf6342926e771d65dad7f69",
"target": {
"file": "net/core/skmsg.c"
},
"deprecated": false
},
{
"id": "CVE-2024-56694-ca97fc0a",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"134306045722667955527207357750455164012",
"91831934410980966986435248677671162323",
"55231370448792961521949993574066205903",
"234149083254002698142270125569440211649",
"169961250969762815567487889520897983285",
"250330936311250429618323144363514596603"
]
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@da2bc8a0c8f3ac66fdf980fc59936f851a083561",
"target": {
"file": "net/core/skmsg.c"
},
"deprecated": false
},
{
"id": "CVE-2024-56694-fa2fdb63",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"207810710298880116858623454505930986673",
"150367198978842268699134260827386994065",
"322963406645353837434818015709644154704",
"155086369758027318712922044893649147433",
"134142439960108477849585754363739141980",
"250330936311250429618323144363514596603"
]
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@221109ba2127eabd0aa64718543638b58b15df56",
"target": {
"file": "net/core/skmsg.c"
},
"deprecated": false
},
{
"id": "CVE-2024-56694-fc5318a4",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"134306045722667955527207357750455164012",
"91831934410980966986435248677671162323",
"55231370448792961521949993574066205903",
"234149083254002698142270125569440211649",
"169961250969762815567487889520897983285",
"250330936311250429618323144363514596603"
]
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8ca2a1eeadf09862190b2810697702d803ceef2d",
"target": {
"file": "net/core/skmsg.c"
},
"deprecated": false
}
]