In the Linux kernel, the following vulnerability has been resolved:
spmi: trace: fix stack-out-of-bound access in SPMI tracing functions
tracespmiwritebegin() and tracespmireadend() both call memcpy() with a length of "len + 1". This leads to one extra byte being read beyond the end of the specified buffer. Fix this out-of-bound memory access by using a length of "len" instead.
Here is a KASAN log showing the issue:
BUG: KASAN: stack-out-of-bounds in traceeventraweventspmireadend+0x1d0/0x234 Read of size 2 at addr ffffffc0265b7540 by task thermal@2.0-ser/1314 ... Call trace: dumpbacktrace+0x0/0x3e8 showstack+0x2c/0x3c dumpstacklvl+0xdc/0x11c printaddressdescription+0x74/0x384 kasanreport+0x188/0x268 kasancheckrange+0x270/0x2b0 memcpy+0x90/0xe8 traceeventraweventspmireadend+0x1d0/0x234 spmireadcmd+0x294/0x3ac spmiextregisterreadl+0x84/0x9c regmapspmiextread+0x144/0x1b0 [regmapspmi] regmaprawread+0x40c/0x754 regmaprawread+0x3a0/0x514 regmapbulkread+0x418/0x494 adc5gen3pollwaiths+0xe8/0x1e0 [qcomspmiadc5gen3] ... _arm64sysread+0x4c/0x60 invokesyscall+0x80/0x218 el0svccommon+0xec/0x1c8 ...
addr ffffffc0265b7540 is located in stack of task thermal@2.0-ser/1314 at offset 32 in frame: adc5gen3pollwaiths+0x0/0x1e0 [qcomspmiadc5_gen3]
this frame has 1 object: [32, 33) 'status'
Memory state around the buggy address: ffffffc0265b7400: 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1 ffffffc0265b7480: 04 f3 f3 f3 00 00 00 00 00 00 00 00 00 00 00 00
ffffffc0265b7500: 00 00 00 00 f1 f1 f1 f1 01 f3 f3 f3 00 00 00 00 ^ ffffffc0265b7580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffffffc0265b7600: f1 f1 f1 f1 01 f2 07 f2 f2 f2 01 f3 00 00 00 00
[
{
"id": "CVE-2022-50094-044511e5",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2af28b241eea816e6f7668d1954f15894b45d7e3",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"339111813352622371450272645163465895137",
"55750961821286756206827233746205993131",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"207983169492408042748612157666541108869",
"57716567354524624907648523559581298236",
"66147977206879892209338483183236022115",
"217068876733270183184489332493514123090",
"181619803550440392769185884020976930666",
"222102020123815489338862710194259656454",
"188212167298060782927011997583847654452",
"70701096313259281821073305424951312386",
"49090693661113167935222704029654326333",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"143858942682341602534503318316404753335",
"217031847315044216534747577055643755099",
"310548218166635876137337744034890461640",
"295723979568875331381957011927624702538",
"91977331638933129189127411353699334701"
]
},
"target": {
"file": "include/trace/events/spmi.h"
}
},
{
"id": "CVE-2022-50094-0c66c82e",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@dc6033a7761254e5a5ba7df36b64db787a53313c",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"339111813352622371450272645163465895137",
"55750961821286756206827233746205993131",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"207983169492408042748612157666541108869",
"57716567354524624907648523559581298236",
"66147977206879892209338483183236022115",
"217068876733270183184489332493514123090",
"181619803550440392769185884020976930666",
"222102020123815489338862710194259656454",
"188212167298060782927011997583847654452",
"70701096313259281821073305424951312386",
"49090693661113167935222704029654326333",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"143858942682341602534503318316404753335",
"217031847315044216534747577055643755099",
"310548218166635876137337744034890461640",
"295723979568875331381957011927624702538",
"91977331638933129189127411353699334701"
]
},
"target": {
"file": "include/trace/events/spmi.h"
}
},
{
"id": "CVE-2022-50094-1b5dcfb4",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1e0ca3d809c36ad3d1f542917718fc22ec6316e7",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"339111813352622371450272645163465895137",
"55750961821286756206827233746205993131",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"207983169492408042748612157666541108869",
"57716567354524624907648523559581298236",
"66147977206879892209338483183236022115",
"217068876733270183184489332493514123090",
"181619803550440392769185884020976930666",
"222102020123815489338862710194259656454",
"188212167298060782927011997583847654452",
"70701096313259281821073305424951312386",
"49090693661113167935222704029654326333",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"143858942682341602534503318316404753335",
"217031847315044216534747577055643755099",
"310548218166635876137337744034890461640",
"295723979568875331381957011927624702538",
"91977331638933129189127411353699334701"
]
},
"target": {
"file": "include/trace/events/spmi.h"
}
},
{
"id": "CVE-2022-50094-2c615db5",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@37690cb8662cec672cacda19e6e4fd2ca7b13f0b",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"339111813352622371450272645163465895137",
"55750961821286756206827233746205993131",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"207983169492408042748612157666541108869",
"57716567354524624907648523559581298236",
"66147977206879892209338483183236022115",
"217068876733270183184489332493514123090",
"181619803550440392769185884020976930666",
"222102020123815489338862710194259656454",
"188212167298060782927011997583847654452",
"70701096313259281821073305424951312386",
"49090693661113167935222704029654326333",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"143858942682341602534503318316404753335",
"217031847315044216534747577055643755099",
"310548218166635876137337744034890461640",
"295723979568875331381957011927624702538",
"91977331638933129189127411353699334701"
]
},
"target": {
"file": "include/trace/events/spmi.h"
}
},
{
"id": "CVE-2022-50094-2cab0f60",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@504090815c1ad3fd3fa34618b54d706727f8911c",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"339111813352622371450272645163465895137",
"55750961821286756206827233746205993131",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"207983169492408042748612157666541108869",
"57716567354524624907648523559581298236",
"66147977206879892209338483183236022115",
"217068876733270183184489332493514123090",
"181619803550440392769185884020976930666",
"222102020123815489338862710194259656454",
"188212167298060782927011997583847654452",
"70701096313259281821073305424951312386",
"49090693661113167935222704029654326333",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"143858942682341602534503318316404753335",
"217031847315044216534747577055643755099",
"310548218166635876137337744034890461640",
"295723979568875331381957011927624702538",
"91977331638933129189127411353699334701"
]
},
"target": {
"file": "include/trace/events/spmi.h"
}
},
{
"id": "CVE-2022-50094-3770de3c",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@80f7c93e573ea9f524924bb529c2af8cb28b1c43",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"339111813352622371450272645163465895137",
"55750961821286756206827233746205993131",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"207983169492408042748612157666541108869",
"57716567354524624907648523559581298236",
"66147977206879892209338483183236022115",
"217068876733270183184489332493514123090",
"181619803550440392769185884020976930666",
"222102020123815489338862710194259656454",
"188212167298060782927011997583847654452",
"70701096313259281821073305424951312386",
"49090693661113167935222704029654326333",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"143858942682341602534503318316404753335",
"217031847315044216534747577055643755099",
"310548218166635876137337744034890461640",
"295723979568875331381957011927624702538",
"91977331638933129189127411353699334701"
]
},
"target": {
"file": "include/trace/events/spmi.h"
}
},
{
"id": "CVE-2022-50094-469f363d",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ac730c72bddc889f5610d51d8a7abf425e08da1a",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"339111813352622371450272645163465895137",
"55750961821286756206827233746205993131",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"207983169492408042748612157666541108869",
"57716567354524624907648523559581298236",
"66147977206879892209338483183236022115",
"217068876733270183184489332493514123090",
"181619803550440392769185884020976930666",
"222102020123815489338862710194259656454",
"188212167298060782927011997583847654452",
"70701096313259281821073305424951312386",
"49090693661113167935222704029654326333",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"143858942682341602534503318316404753335",
"217031847315044216534747577055643755099",
"310548218166635876137337744034890461640",
"295723979568875331381957011927624702538",
"91977331638933129189127411353699334701"
]
},
"target": {
"file": "include/trace/events/spmi.h"
}
},
{
"id": "CVE-2022-50094-c99ae30c",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bcc1b6b1ed3f42ed25858c1f1eb24a2f741db93f",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"339111813352622371450272645163465895137",
"55750961821286756206827233746205993131",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"207983169492408042748612157666541108869",
"57716567354524624907648523559581298236",
"66147977206879892209338483183236022115",
"217068876733270183184489332493514123090",
"181619803550440392769185884020976930666",
"222102020123815489338862710194259656454",
"188212167298060782927011997583847654452",
"70701096313259281821073305424951312386",
"49090693661113167935222704029654326333",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"143858942682341602534503318316404753335",
"217031847315044216534747577055643755099",
"310548218166635876137337744034890461640",
"295723979568875331381957011927624702538",
"91977331638933129189127411353699334701"
]
},
"target": {
"file": "include/trace/events/spmi.h"
}
},
{
"id": "CVE-2022-50094-d98dfb29",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@dd02510fb43168310abfd0b9ccf49993a722fb91",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"339111813352622371450272645163465895137",
"55750961821286756206827233746205993131",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"207983169492408042748612157666541108869",
"57716567354524624907648523559581298236",
"66147977206879892209338483183236022115",
"217068876733270183184489332493514123090",
"181619803550440392769185884020976930666",
"222102020123815489338862710194259656454",
"188212167298060782927011997583847654452",
"70701096313259281821073305424951312386",
"49090693661113167935222704029654326333",
"13537932652199850232573846954872540521",
"335269868838370478786789585801700243994",
"143858942682341602534503318316404753335",
"217031847315044216534747577055643755099",
"310548218166635876137337744034890461640",
"295723979568875331381957011927624702538",
"91977331638933129189127411353699334701"
]
},
"target": {
"file": "include/trace/events/spmi.h"
}
}
]