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/seqfile.c:230) [ 132.873578][ T3644] ? _vmallocareanode (mm/vmalloc.c:3041) [ 132.874532][ T3644] kernfsfopreaditer (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] _dosysfinitmodule (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/entry64_compat.S:419)
To fix it, don't create the unneeded attribute for control device anymore.
[
{
"digest": {
"length": 1478.0,
"function_hash": "290145314286353659593954130668564034283"
},
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c",
"function": "vduse_init"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b27ee76c74dc831d6e092eaebc2dfc9c0beed1c9",
"signature_type": "Function",
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49329-27e9335a"
},
{
"digest": {
"line_hashes": [
"308844990922144810540136786217731286244",
"78727592968156024335127733845888685698",
"72165925716683476579993904346711336066",
"56902607507050464517566403065162929004",
"162676882754512384092902894130947820532",
"294841942702738696017636762448040431342",
"45546948161044185987065317789267131454",
"260217540697997907909538840598832455513",
"287587848873968936502686898212551705269",
"332779723074194184247295101518813446089"
],
"threshold": 0.9
},
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@30fd1b56621e187346f65d01fe34870634b15188",
"signature_type": "Line",
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49329-395a8aac"
},
{
"digest": {
"line_hashes": [
"308844990922144810540136786217731286244",
"78727592968156024335127733845888685698",
"72165925716683476579993904346711336066",
"56902607507050464517566403065162929004",
"162676882754512384092902894130947820532",
"294841942702738696017636762448040431342",
"45546948161044185987065317789267131454",
"260217540697997907909538840598832455513",
"287587848873968936502686898212551705269",
"332779723074194184247295101518813446089"
],
"threshold": 0.9
},
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3a7a81f4835dfda11f39fdd27586da14331896eb",
"signature_type": "Line",
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49329-595cd1dc"
},
{
"digest": {
"length": 1478.0,
"function_hash": "290145314286353659593954130668564034283"
},
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c",
"function": "vduse_init"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@30fd1b56621e187346f65d01fe34870634b15188",
"signature_type": "Function",
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49329-6440e414"
},
{
"digest": {
"length": 1478.0,
"function_hash": "290145314286353659593954130668564034283"
},
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c",
"function": "vduse_init"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b22fdee17ec62604060fb0fda5e1414b634666e1",
"signature_type": "Function",
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49329-84d3e835"
},
{
"digest": {
"line_hashes": [
"308844990922144810540136786217731286244",
"78727592968156024335127733845888685698",
"72165925716683476579993904346711336066",
"56902607507050464517566403065162929004",
"162676882754512384092902894130947820532",
"294841942702738696017636762448040431342",
"45546948161044185987065317789267131454",
"260217540697997907909538840598832455513",
"287587848873968936502686898212551705269",
"332779723074194184247295101518813446089"
],
"threshold": 0.9
},
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b27ee76c74dc831d6e092eaebc2dfc9c0beed1c9",
"signature_type": "Line",
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49329-9ea3f9ce"
},
{
"digest": {
"length": 1786.0,
"function_hash": "175360515707290529667927770489706962425"
},
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c",
"function": "vduse_create_dev"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b22fdee17ec62604060fb0fda5e1414b634666e1",
"signature_type": "Function",
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49329-b4ba33be"
},
{
"digest": {
"length": 1786.0,
"function_hash": "175360515707290529667927770489706962425"
},
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c",
"function": "vduse_create_dev"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b27ee76c74dc831d6e092eaebc2dfc9c0beed1c9",
"signature_type": "Function",
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49329-c3376a25"
},
{
"digest": {
"length": 1786.0,
"function_hash": "175360515707290529667927770489706962425"
},
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c",
"function": "vduse_create_dev"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@30fd1b56621e187346f65d01fe34870634b15188",
"signature_type": "Function",
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49329-d77b56dd"
},
{
"digest": {
"length": 1478.0,
"function_hash": "290145314286353659593954130668564034283"
},
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c",
"function": "vduse_init"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3a7a81f4835dfda11f39fdd27586da14331896eb",
"signature_type": "Function",
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49329-e40b0de7"
},
{
"digest": {
"line_hashes": [
"308844990922144810540136786217731286244",
"78727592968156024335127733845888685698",
"72165925716683476579993904346711336066",
"56902607507050464517566403065162929004",
"162676882754512384092902894130947820532",
"294841942702738696017636762448040431342",
"45546948161044185987065317789267131454",
"260217540697997907909538840598832455513",
"287587848873968936502686898212551705269",
"332779723074194184247295101518813446089"
],
"threshold": 0.9
},
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b22fdee17ec62604060fb0fda5e1414b634666e1",
"signature_type": "Line",
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49329-ed4dc48b"
},
{
"digest": {
"length": 1807.0,
"function_hash": "297240032096273043901541188826951697652"
},
"target": {
"file": "drivers/vdpa/vdpa_user/vduse_dev.c",
"function": "vduse_create_dev"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3a7a81f4835dfda11f39fdd27586da14331896eb",
"signature_type": "Function",
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49329-ff764a2c"
}
]