Vulnerability Details CVE-2021-47097
In the Linux kernel, the following vulnerability has been resolved:
Input: elantech - fix stack out of bound access in elantech_change_report_id()
The array param[] in elantech_change_report_id() must be at least 3
bytes, because elantech_read_reg_params() is calling ps2_command() with
PSMOUSE_CMD_GETINFO, that is going to access 3 bytes from param[], but
it's defined in the stack as an array of 2 bytes, therefore we have a
potential stack out-of-bounds access here, also confirmed by KASAN:
[ 6.512374] BUG: KASAN: stack-out-of-bounds in __ps2_command+0x372/0x7e0
[ 6.512397] Read of size 1 at addr ffff8881024d77c2 by task kworker/2:1/118
[ 6.512416] CPU: 2 PID: 118 Comm: kworker/2:1 Not tainted 5.13.0-22-generic #22+arighi20211110
[ 6.512428] Hardware name: LENOVO 20T8000QGE/20T8000QGE, BIOS R1AET32W (1.08 ) 08/14/2020
[ 6.512436] Workqueue: events_long serio_handle_event
[ 6.512453] Call Trace:
[ 6.512462] show_stack+0x52/0x58
[ 6.512474] dump_stack+0xa1/0xd3
[ 6.512487] print_address_description.constprop.0+0x1d/0x140
[ 6.512502] ? __ps2_command+0x372/0x7e0
[ 6.512516] __kasan_report.cold+0x7d/0x112
[ 6.512527] ? _raw_write_lock_irq+0x20/0xd0
[ 6.512539] ? __ps2_command+0x372/0x7e0
[ 6.512552] kasan_report+0x3c/0x50
[ 6.512564] __asan_load1+0x6a/0x70
[ 6.512575] __ps2_command+0x372/0x7e0
[ 6.512589] ? ps2_drain+0x240/0x240
[ 6.512601] ? dev_printk_emit+0xa2/0xd3
[ 6.512612] ? dev_vprintk_emit+0xc5/0xc5
[ 6.512621] ? __kasan_check_write+0x14/0x20
[ 6.512634] ? mutex_lock+0x8f/0xe0
[ 6.512643] ? __mutex_lock_slowpath+0x20/0x20
[ 6.512655] ps2_command+0x52/0x90
[ 6.512670] elantech_ps2_command+0x4f/0xc0 [psmouse]
[ 6.512734] elantech_change_report_id+0x1e6/0x256 [psmouse]
[ 6.512799] ? elantech_report_trackpoint.constprop.0.cold+0xd/0xd [psmouse]
[ 6.512863] ? ps2_command+0x7f/0x90
[ 6.512877] elantech_query_info.cold+0x6bd/0x9ed [psmouse]
[ 6.512943] ? elantech_setup_ps2+0x460/0x460 [psmouse]
[ 6.513005] ? psmouse_reset+0x69/0xb0 [psmouse]
[ 6.513064] ? psmouse_attr_set_helper+0x2a0/0x2a0 [psmouse]
[ 6.513122] ? phys_pmd_init+0x30e/0x521
[ 6.513137] elantech_init+0x8a/0x200 [psmouse]
[ 6.513200] ? elantech_init_ps2+0xf0/0xf0 [psmouse]
[ 6.513249] ? elantech_query_info+0x440/0x440 [psmouse]
[ 6.513296] ? synaptics_send_cmd+0x60/0x60 [psmouse]
[ 6.513342] ? elantech_query_info+0x440/0x440 [psmouse]
[ 6.513388] ? psmouse_try_protocol+0x11e/0x170 [psmouse]
[ 6.513432] psmouse_extensions+0x65d/0x6e0 [psmouse]
[ 6.513476] ? psmouse_try_protocol+0x170/0x170 [psmouse]
[ 6.513519] ? mutex_unlock+0x22/0x40
[ 6.513526] ? ps2_command+0x7f/0x90
[ 6.513536] ? psmouse_probe+0xa3/0xf0 [psmouse]
[ 6.513580] psmouse_switch_protocol+0x27d/0x2e0 [psmouse]
[ 6.513624] psmouse_connect+0x272/0x530 [psmouse]
[ 6.513669] serio_driver_probe+0x55/0x70
[ 6.513679] really_probe+0x190/0x720
[ 6.513689] driver_probe_device+0x160/0x1f0
[ 6.513697] device_driver_attach+0x119/0x130
[ 6.513705] ? device_driver_attach+0x130/0x130
[ 6.513713] __driver_attach+0xe7/0x1a0
[ 6.513720] ? device_driver_attach+0x130/0x130
[ 6.513728] bus_for_each_dev+0xfb/0x150
[ 6.513738] ? subsys_dev_iter_exit+0x10/0x10
[ 6.513748] ? _raw_write_unlock_bh+0x30/0x30
[ 6.513757] driver_attach+0x2d/0x40
[ 6.513764] serio_handle_event+0x199/0x3d0
[ 6.513775] process_one_work+0x471/0x740
[ 6.513785] worker_thread+0x2d2/0x790
[ 6.513794] ? process_one_work+0x740/0x740
[ 6.513802] kthread+0x1b4/0x1e0
[ 6.513809] ? set_kthread_struct+0x80/0x80
[ 6.513816] ret_from_fork+0x22/0x30
[ 6.513832] The buggy address belongs to the page:
[ 6.513838] page:00000000bc35e189 refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1024d7
[ 6.513847] flags: 0x17ffffc0000000(node=0|zone=2|lastcpupid=0x1fffff)
[ 6.513860] raw: 0
---truncated---
Exploit prediction scoring system (EPSS) score
EPSS Score 0.0
EPSS Ranking 4.4%
CVSS Severity
CVSS v3 Score 7.1
Products affected by CVE-2021-47097
-
cpe:2.3:o:linux:linux_kernel:5.10.21
-
cpe:2.3:o:linux:linux_kernel:5.10.22
-
cpe:2.3:o:linux:linux_kernel:5.10.23
-
cpe:2.3:o:linux:linux_kernel:5.10.24
-
cpe:2.3:o:linux:linux_kernel:5.10.25
-
cpe:2.3:o:linux:linux_kernel:5.10.26
-
cpe:2.3:o:linux:linux_kernel:5.10.27
-
cpe:2.3:o:linux:linux_kernel:5.10.28
-
cpe:2.3:o:linux:linux_kernel:5.10.29
-
cpe:2.3:o:linux:linux_kernel:5.10.30
-
cpe:2.3:o:linux:linux_kernel:5.10.31
-
cpe:2.3:o:linux:linux_kernel:5.10.32
-
cpe:2.3:o:linux:linux_kernel:5.10.33
-
cpe:2.3:o:linux:linux_kernel:5.10.34
-
cpe:2.3:o:linux:linux_kernel:5.10.35
-
cpe:2.3:o:linux:linux_kernel:5.10.36
-
cpe:2.3:o:linux:linux_kernel:5.10.37
-
cpe:2.3:o:linux:linux_kernel:5.10.38
-
cpe:2.3:o:linux:linux_kernel:5.10.39
-
cpe:2.3:o:linux:linux_kernel:5.10.40
-
cpe:2.3:o:linux:linux_kernel:5.10.41
-
cpe:2.3:o:linux:linux_kernel:5.10.42
-
cpe:2.3:o:linux:linux_kernel:5.10.43
-
cpe:2.3:o:linux:linux_kernel:5.10.44
-
cpe:2.3:o:linux:linux_kernel:5.10.45
-
cpe:2.3:o:linux:linux_kernel:5.10.46
-
cpe:2.3:o:linux:linux_kernel:5.10.47
-
cpe:2.3:o:linux:linux_kernel:5.10.48
-
cpe:2.3:o:linux:linux_kernel:5.10.49
-
cpe:2.3:o:linux:linux_kernel:5.10.50
-
cpe:2.3:o:linux:linux_kernel:5.10.51
-
cpe:2.3:o:linux:linux_kernel:5.10.52
-
cpe:2.3:o:linux:linux_kernel:5.10.53
-
cpe:2.3:o:linux:linux_kernel:5.10.54
-
cpe:2.3:o:linux:linux_kernel:5.10.55
-
cpe:2.3:o:linux:linux_kernel:5.10.56
-
cpe:2.3:o:linux:linux_kernel:5.10.57
-
cpe:2.3:o:linux:linux_kernel:5.10.58
-
cpe:2.3:o:linux:linux_kernel:5.10.59
-
cpe:2.3:o:linux:linux_kernel:5.10.60
-
cpe:2.3:o:linux:linux_kernel:5.10.61
-
cpe:2.3:o:linux:linux_kernel:5.10.62
-
cpe:2.3:o:linux:linux_kernel:5.10.63
-
cpe:2.3:o:linux:linux_kernel:5.10.64
-
cpe:2.3:o:linux:linux_kernel:5.10.65
-
cpe:2.3:o:linux:linux_kernel:5.10.66
-
cpe:2.3:o:linux:linux_kernel:5.10.67
-
cpe:2.3:o:linux:linux_kernel:5.10.68
-
cpe:2.3:o:linux:linux_kernel:5.10.69
-
cpe:2.3:o:linux:linux_kernel:5.10.70
-
cpe:2.3:o:linux:linux_kernel:5.10.71
-
cpe:2.3:o:linux:linux_kernel:5.10.72
-
cpe:2.3:o:linux:linux_kernel:5.10.73
-
cpe:2.3:o:linux:linux_kernel:5.10.74
-
cpe:2.3:o:linux:linux_kernel:5.10.75
-
cpe:2.3:o:linux:linux_kernel:5.10.76
-
cpe:2.3:o:linux:linux_kernel:5.10.77
-
cpe:2.3:o:linux:linux_kernel:5.10.78
-
cpe:2.3:o:linux:linux_kernel:5.10.79
-
cpe:2.3:o:linux:linux_kernel:5.10.80
-
cpe:2.3:o:linux:linux_kernel:5.10.81
-
cpe:2.3:o:linux:linux_kernel:5.10.82
-
cpe:2.3:o:linux:linux_kernel:5.10.83
-
cpe:2.3:o:linux:linux_kernel:5.10.84
-
cpe:2.3:o:linux:linux_kernel:5.10.85
-
cpe:2.3:o:linux:linux_kernel:5.10.86
-
cpe:2.3:o:linux:linux_kernel:5.10.87
-
cpe:2.3:o:linux:linux_kernel:5.10.88
-
cpe:2.3:o:linux:linux_kernel:5.11
-
cpe:2.3:o:linux:linux_kernel:5.11.1
-
cpe:2.3:o:linux:linux_kernel:5.11.10
-
cpe:2.3:o:linux:linux_kernel:5.11.11
-
cpe:2.3:o:linux:linux_kernel:5.11.12
-
cpe:2.3:o:linux:linux_kernel:5.11.13
-
cpe:2.3:o:linux:linux_kernel:5.11.14
-
cpe:2.3:o:linux:linux_kernel:5.11.15
-
cpe:2.3:o:linux:linux_kernel:5.11.16
-
cpe:2.3:o:linux:linux_kernel:5.11.17
-
cpe:2.3:o:linux:linux_kernel:5.11.18
-
cpe:2.3:o:linux:linux_kernel:5.11.19
-
cpe:2.3:o:linux:linux_kernel:5.11.2
-
cpe:2.3:o:linux:linux_kernel:5.11.20
-
cpe:2.3:o:linux:linux_kernel:5.11.21
-
cpe:2.3:o:linux:linux_kernel:5.11.22
-
cpe:2.3:o:linux:linux_kernel:5.11.3
-
cpe:2.3:o:linux:linux_kernel:5.11.4
-
cpe:2.3:o:linux:linux_kernel:5.11.5
-
cpe:2.3:o:linux:linux_kernel:5.11.6
-
cpe:2.3:o:linux:linux_kernel:5.11.7
-
cpe:2.3:o:linux:linux_kernel:5.11.8
-
cpe:2.3:o:linux:linux_kernel:5.11.9
-
cpe:2.3:o:linux:linux_kernel:5.12
-
cpe:2.3:o:linux:linux_kernel:5.12.1
-
cpe:2.3:o:linux:linux_kernel:5.12.10
-
cpe:2.3:o:linux:linux_kernel:5.12.11
-
cpe:2.3:o:linux:linux_kernel:5.12.12
-
cpe:2.3:o:linux:linux_kernel:5.12.13
-
cpe:2.3:o:linux:linux_kernel:5.12.14
-
cpe:2.3:o:linux:linux_kernel:5.12.15
-
cpe:2.3:o:linux:linux_kernel:5.12.16
-
cpe:2.3:o:linux:linux_kernel:5.12.17
-
cpe:2.3:o:linux:linux_kernel:5.12.18
-
cpe:2.3:o:linux:linux_kernel:5.12.19
-
cpe:2.3:o:linux:linux_kernel:5.12.2
-
cpe:2.3:o:linux:linux_kernel:5.12.25
-
cpe:2.3:o:linux:linux_kernel:5.12.3
-
cpe:2.3:o:linux:linux_kernel:5.12.4
-
cpe:2.3:o:linux:linux_kernel:5.12.5
-
cpe:2.3:o:linux:linux_kernel:5.12.6
-
cpe:2.3:o:linux:linux_kernel:5.12.7
-
cpe:2.3:o:linux:linux_kernel:5.12.8
-
cpe:2.3:o:linux:linux_kernel:5.12.9
-
cpe:2.3:o:linux:linux_kernel:5.13
-
cpe:2.3:o:linux:linux_kernel:5.13.0-52
-
cpe:2.3:o:linux:linux_kernel:5.13.1
-
cpe:2.3:o:linux:linux_kernel:5.13.10
-
cpe:2.3:o:linux:linux_kernel:5.13.11
-
cpe:2.3:o:linux:linux_kernel:5.13.12
-
cpe:2.3:o:linux:linux_kernel:5.13.13
-
cpe:2.3:o:linux:linux_kernel:5.13.14
-
cpe:2.3:o:linux:linux_kernel:5.13.15
-
cpe:2.3:o:linux:linux_kernel:5.13.16
-
cpe:2.3:o:linux:linux_kernel:5.13.17
-
cpe:2.3:o:linux:linux_kernel:5.13.18
-
cpe:2.3:o:linux:linux_kernel:5.13.19
-
cpe:2.3:o:linux:linux_kernel:5.13.2
-
cpe:2.3:o:linux:linux_kernel:5.13.3
-
cpe:2.3:o:linux:linux_kernel:5.13.4
-
cpe:2.3:o:linux:linux_kernel:5.13.5
-
cpe:2.3:o:linux:linux_kernel:5.13.6
-
cpe:2.3:o:linux:linux_kernel:5.13.7
-
cpe:2.3:o:linux:linux_kernel:5.13.8
-
cpe:2.3:o:linux:linux_kernel:5.13.9
-
cpe:2.3:o:linux:linux_kernel:5.14
-
cpe:2.3:o:linux:linux_kernel:5.14.1
-
cpe:2.3:o:linux:linux_kernel:5.14.10
-
cpe:2.3:o:linux:linux_kernel:5.14.11
-
cpe:2.3:o:linux:linux_kernel:5.14.12
-
cpe:2.3:o:linux:linux_kernel:5.14.13
-
cpe:2.3:o:linux:linux_kernel:5.14.14
-
cpe:2.3:o:linux:linux_kernel:5.14.15
-
cpe:2.3:o:linux:linux_kernel:5.14.16
-
cpe:2.3:o:linux:linux_kernel:5.14.17
-
cpe:2.3:o:linux:linux_kernel:5.14.18
-
cpe:2.3:o:linux:linux_kernel:5.14.19
-
cpe:2.3:o:linux:linux_kernel:5.14.2
-
cpe:2.3:o:linux:linux_kernel:5.14.20
-
cpe:2.3:o:linux:linux_kernel:5.14.21
-
cpe:2.3:o:linux:linux_kernel:5.14.3
-
cpe:2.3:o:linux:linux_kernel:5.14.4
-
cpe:2.3:o:linux:linux_kernel:5.14.5
-
cpe:2.3:o:linux:linux_kernel:5.14.6
-
cpe:2.3:o:linux:linux_kernel:5.14.7
-
cpe:2.3:o:linux:linux_kernel:5.14.8
-
cpe:2.3:o:linux:linux_kernel:5.14.9
-
cpe:2.3:o:linux:linux_kernel:5.15
-
cpe:2.3:o:linux:linux_kernel:5.15.0
-
cpe:2.3:o:linux:linux_kernel:5.15.0-58
-
cpe:2.3:o:linux:linux_kernel:5.15.1
-
cpe:2.3:o:linux:linux_kernel:5.15.10
-
cpe:2.3:o:linux:linux_kernel:5.15.11
-
cpe:2.3:o:linux:linux_kernel:5.15.2
-
cpe:2.3:o:linux:linux_kernel:5.15.3
-
cpe:2.3:o:linux:linux_kernel:5.15.4
-
cpe:2.3:o:linux:linux_kernel:5.15.5
-
cpe:2.3:o:linux:linux_kernel:5.15.6
-
cpe:2.3:o:linux:linux_kernel:5.15.7
-
cpe:2.3:o:linux:linux_kernel:5.15.8
-
cpe:2.3:o:linux:linux_kernel:5.15.9
-
cpe:2.3:o:linux:linux_kernel:5.16
-
cpe:2.3:o:linux:linux_kernel:5.4.103
-
cpe:2.3:o:linux:linux_kernel:5.4.104
-
cpe:2.3:o:linux:linux_kernel:5.4.105
-
cpe:2.3:o:linux:linux_kernel:5.4.106
-
cpe:2.3:o:linux:linux_kernel:5.4.107
-
cpe:2.3:o:linux:linux_kernel:5.4.108
-
cpe:2.3:o:linux:linux_kernel:5.4.109
-
cpe:2.3:o:linux:linux_kernel:5.4.110
-
cpe:2.3:o:linux:linux_kernel:5.4.111
-
cpe:2.3:o:linux:linux_kernel:5.4.112
-
cpe:2.3:o:linux:linux_kernel:5.4.113
-
cpe:2.3:o:linux:linux_kernel:5.4.114
-
cpe:2.3:o:linux:linux_kernel:5.4.115
-
cpe:2.3:o:linux:linux_kernel:5.4.116
-
cpe:2.3:o:linux:linux_kernel:5.4.117
-
cpe:2.3:o:linux:linux_kernel:5.4.118
-
cpe:2.3:o:linux:linux_kernel:5.4.119
-
cpe:2.3:o:linux:linux_kernel:5.4.120
-
cpe:2.3:o:linux:linux_kernel:5.4.121
-
cpe:2.3:o:linux:linux_kernel:5.4.122
-
cpe:2.3:o:linux:linux_kernel:5.4.123
-
cpe:2.3:o:linux:linux_kernel:5.4.124
-
cpe:2.3:o:linux:linux_kernel:5.4.125
-
cpe:2.3:o:linux:linux_kernel:5.4.126
-
cpe:2.3:o:linux:linux_kernel:5.4.127
-
cpe:2.3:o:linux:linux_kernel:5.4.128
-
cpe:2.3:o:linux:linux_kernel:5.4.129
-
cpe:2.3:o:linux:linux_kernel:5.4.130
-
cpe:2.3:o:linux:linux_kernel:5.4.131
-
cpe:2.3:o:linux:linux_kernel:5.4.132
-
cpe:2.3:o:linux:linux_kernel:5.4.133
-
cpe:2.3:o:linux:linux_kernel:5.4.134
-
cpe:2.3:o:linux:linux_kernel:5.4.135
-
cpe:2.3:o:linux:linux_kernel:5.4.136
-
cpe:2.3:o:linux:linux_kernel:5.4.137
-
cpe:2.3:o:linux:linux_kernel:5.4.138
-
cpe:2.3:o:linux:linux_kernel:5.4.139
-
cpe:2.3:o:linux:linux_kernel:5.4.140
-
cpe:2.3:o:linux:linux_kernel:5.4.141
-
cpe:2.3:o:linux:linux_kernel:5.4.142
-
cpe:2.3:o:linux:linux_kernel:5.4.143
-
cpe:2.3:o:linux:linux_kernel:5.4.144
-
cpe:2.3:o:linux:linux_kernel:5.4.145
-
cpe:2.3:o:linux:linux_kernel:5.4.146
-
cpe:2.3:o:linux:linux_kernel:5.4.147
-
cpe:2.3:o:linux:linux_kernel:5.4.148
-
cpe:2.3:o:linux:linux_kernel:5.4.149
-
cpe:2.3:o:linux:linux_kernel:5.4.150
-
cpe:2.3:o:linux:linux_kernel:5.4.151
-
cpe:2.3:o:linux:linux_kernel:5.4.152
-
cpe:2.3:o:linux:linux_kernel:5.4.153
-
cpe:2.3:o:linux:linux_kernel:5.4.154
-
cpe:2.3:o:linux:linux_kernel:5.4.155
-
cpe:2.3:o:linux:linux_kernel:5.4.156
-
cpe:2.3:o:linux:linux_kernel:5.4.157
-
cpe:2.3:o:linux:linux_kernel:5.4.158
-
cpe:2.3:o:linux:linux_kernel:5.4.159
-
cpe:2.3:o:linux:linux_kernel:5.4.160
-
cpe:2.3:o:linux:linux_kernel:5.4.161
-
cpe:2.3:o:linux:linux_kernel:5.4.162
-
cpe:2.3:o:linux:linux_kernel:5.4.163
-
cpe:2.3:o:linux:linux_kernel:5.4.164
-
cpe:2.3:o:linux:linux_kernel:5.4.165
-
cpe:2.3:o:linux:linux_kernel:5.4.166
-
cpe:2.3:o:linux:linux_kernel:5.4.167
-
cpe:2.3:o:linux:linux_kernel:5.4.168