In the Linux kernel, the following vulnerability has been resolved:
af_unix: fix struct pid leaks in OOB support
syzbot reported struct pid leak [1].
Issue is that queueoob() calls maybeadd_creds() which potentially holds a reference on a pid.
But skb->destructor is not set (either directly or by calling unixscmto_skb())
This means that subsequent kfreeskb() or consumeskb() would leak this reference.
In this fix, I chose to fully support scm even for the OOB message.
[1] BUG: memory leak unreferenced object 0xffff8881053e7f80 (size 128): comm "syz-executor242", pid 5066, jiffies 4294946079 (age 13.220s) hex dump (first 32 bytes): 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace: [<ffffffff812ae26a>] allocpid+0x6a/0x560 kernel/pid.c:180 [<ffffffff812718df>] copyprocess+0x169f/0x26c0 kernel/fork.c:2285 [<ffffffff81272b37>] kernelclone+0xf7/0x610 kernel/fork.c:2684 [<ffffffff812730cc>] _dosysclone+0x7c/0xb0 kernel/fork.c:2825 [<ffffffff849ad699>] dosyscallx64 arch/x86/entry/common.c:50 [inline] [<ffffffff849ad699>] dosyscall64+0x39/0xb0 arch/x86/entry/common.c:80 [<ffffffff84a0008b>] entrySYSCALL64afterhwframe+0x63/0xcd
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/53xxx/CVE-2023-53136.json",
"cna_assigner": "Linux"
}"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-53136.json"
[
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ac1968ac399205fda9ee3b18f7de7416cb3a5d0d",
"deprecated": false,
"id": "CVE-2023-53136-091acd77",
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "net/unix/af_unix.c",
"function": "queue_oob"
},
"digest": {
"length": 843.0,
"function_hash": "195224884817885892865789093256100923801"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f3969427fb06a2c3cd6efd7faab63505cfa76e76",
"deprecated": false,
"id": "CVE-2023-53136-1ca2d206",
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "net/unix/af_unix.c",
"function": "queue_oob"
},
"digest": {
"length": 843.0,
"function_hash": "195224884817885892865789093256100923801"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2aab4b96900272885bc157f8b236abf1cdc02e08",
"deprecated": false,
"id": "CVE-2023-53136-46f55168",
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "net/unix/af_unix.c",
"function": "queue_oob"
},
"digest": {
"length": 843.0,
"function_hash": "195224884817885892865789093256100923801"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f3969427fb06a2c3cd6efd7faab63505cfa76e76",
"deprecated": false,
"id": "CVE-2023-53136-4f9754f5",
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "net/unix/af_unix.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"81348050270006932021977937519945086823",
"217693913963504953218974230713285796727",
"226896636254906371634141726258206316218",
"61409076765612131048487929524383789141",
"17641746177260824185579246679213660995",
"107139432707521396305185279128126532125",
"38691333907698314596488639353712032603",
"178119828524547653945100818903874236696",
"41794879452778902079596930980288005476",
"35712327960724921428771617726824635671",
"237601838780133328348111879118705067271"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a59d6306263c38e5c0592ea4451ca26a0778c947",
"deprecated": false,
"id": "CVE-2023-53136-524e5b3b",
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "net/unix/af_unix.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"81348050270006932021977937519945086823",
"217693913963504953218974230713285796727",
"226896636254906371634141726258206316218",
"61409076765612131048487929524383789141",
"17641746177260824185579246679213660995",
"107139432707521396305185279128126532125",
"38691333907698314596488639353712032603",
"178119828524547653945100818903874236696",
"41794879452778902079596930980288005476",
"35712327960724921428771617726824635671",
"237601838780133328348111879118705067271"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ac1968ac399205fda9ee3b18f7de7416cb3a5d0d",
"deprecated": false,
"id": "CVE-2023-53136-687c3de8",
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "net/unix/af_unix.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"81348050270006932021977937519945086823",
"217693913963504953218974230713285796727",
"226896636254906371634141726258206316218",
"61409076765612131048487929524383789141",
"17641746177260824185579246679213660995",
"107139432707521396305185279128126532125",
"38691333907698314596488639353712032603",
"178119828524547653945100818903874236696",
"41794879452778902079596930980288005476",
"35712327960724921428771617726824635671",
"237601838780133328348111879118705067271"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a59d6306263c38e5c0592ea4451ca26a0778c947",
"deprecated": false,
"id": "CVE-2023-53136-8e9ef179",
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "net/unix/af_unix.c",
"function": "unix_stream_sendmsg"
},
"digest": {
"length": 2142.0,
"function_hash": "202689327568358058759480450938336573962"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a59d6306263c38e5c0592ea4451ca26a0778c947",
"deprecated": false,
"id": "CVE-2023-53136-a3087c3f",
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "net/unix/af_unix.c",
"function": "queue_oob"
},
"digest": {
"length": 843.0,
"function_hash": "195224884817885892865789093256100923801"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f3969427fb06a2c3cd6efd7faab63505cfa76e76",
"deprecated": false,
"id": "CVE-2023-53136-bbfb7998",
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "net/unix/af_unix.c",
"function": "unix_stream_sendmsg"
},
"digest": {
"length": 2142.0,
"function_hash": "202689327568358058759480450938336573962"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2aab4b96900272885bc157f8b236abf1cdc02e08",
"deprecated": false,
"id": "CVE-2023-53136-c4ece719",
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "net/unix/af_unix.c",
"function": "unix_stream_sendmsg"
},
"digest": {
"length": 2142.0,
"function_hash": "202689327568358058759480450938336573962"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ac1968ac399205fda9ee3b18f7de7416cb3a5d0d",
"deprecated": false,
"id": "CVE-2023-53136-d2003486",
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "net/unix/af_unix.c",
"function": "unix_stream_sendmsg"
},
"digest": {
"length": 2142.0,
"function_hash": "202689327568358058759480450938336573962"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2aab4b96900272885bc157f8b236abf1cdc02e08",
"deprecated": false,
"id": "CVE-2023-53136-fd7796a0",
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "net/unix/af_unix.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"81348050270006932021977937519945086823",
"217693913963504953218974230713285796727",
"226896636254906371634141726258206316218",
"61409076765612131048487929524383789141",
"17641746177260824185579246679213660995",
"107139432707521396305185279128126532125",
"38691333907698314596488639353712032603",
"178119828524547653945100818903874236696",
"41794879452778902079596930980288005476",
"35712327960724921428771617726824635671",
"237601838780133328348111879118705067271"
]
}
}
]