In the Linux kernel, the following vulnerability has been resolved:
vduse: Fix NULL pointer dereference on sysfs access
The control device has no drvdata. So we will get a NULL pointer dereference when accessing control device's msg_timeout attribute via sysfs:
[ 132.841881][ T3644] BUG: kernel NULL pointer dereference, address: 00000000000000f8 [ 132.850619][ T3644] RIP: 0010:msgtimeoutshow (drivers/vdpa/vdpauser/vdusedev.c:1271) [ 132.869447][ T3644] devattrshow (drivers/base/core.c:2094) [ 132.870215][ T3644] sysfskfseqshow (fs/sysfs/file.c:59) [ 132.871164][ T3644] ? deviceremovebinfile (drivers/base/core.c:2088) [ 132.872082][ T3644] kernfsseqshow (fs/kernfs/file.c:164) [ 132.872838][ T3644] seqreaditer (fs/seq_file.c:230) [ 132.873578][ T3644] ? __vmallocareanode (mm/vmalloc.c:3041) [ 132.874532][ T3644] kernfsfopread_iter (fs/kernfs/file.c:238) [ 132.875513][ T3644] __kernelread (fs/readwrite.c:440 (discriminator 1)) [ 132.876319][ T3644] kernelread (fs/readwrite.c:459) [ 132.877129][ T3644] kernelreadfile (fs/kernelreadfile.c:94) [ 132.877978][ T3644] kernelreadfilefromfd (include/linux/file.h:45 fs/kernelreadfile.c:186) [ 132.879019][ T3644] __dosysfinit_module (kernel/module.c:4207) [ 132.879930][ T3644] __ia32sysfinitmodule (kernel/module.c:4189) [ 132.880930][ T3644] doint80syscall32 (arch/x86/entry/common.c:112 arch/x86/entry/common.c:132) [ 132.881847][ T3644] entryINT80compat (arch/x86/entry/entry64compat.S:419)
To fix it, don't create the unneeded attribute for control device anymore.
{
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/49xxx/CVE-2022-49329.json"
}"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-49329.json"
[
{
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c"
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@30fd1b56621e187346f65d01fe34870634b15188",
"digest": {
"line_hashes": [
"308844990922144810540136786217731286244",
"78727592968156024335127733845888685698",
"72165925716683476579993904346711336066",
"56902607507050464517566403065162929004",
"162676882754512384092902894130947820532",
"294841942702738696017636762448040431342",
"45546948161044185987065317789267131454",
"260217540697997907909538840598832455513",
"287587848873968936502686898212551705269",
"332779723074194184247295101518813446089"
],
"threshold": 0.9
},
"id": "CVE-2022-49329-395a8aac"
},
{
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c",
"function": "vduse_init"
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@30fd1b56621e187346f65d01fe34870634b15188",
"digest": {
"length": 1478.0,
"function_hash": "290145314286353659593954130668564034283"
},
"id": "CVE-2022-49329-6440e414"
},
{
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c",
"function": "vduse_create_dev"
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@30fd1b56621e187346f65d01fe34870634b15188",
"digest": {
"length": 1786.0,
"function_hash": "175360515707290529667927770489706962425"
},
"id": "CVE-2022-49329-d77b56dd"
}
]