CVE-2022-48762CWE-476

CVE-2022-48762

High · published June 20, 2024

CVSS v3.1
7.8
EPSS
0%
Percentile
8.3
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

arm64: extable: fix load_unaligned_zeropad() reg indices

In ex_handler_load_unaligned_zeropad() we erroneously extract the data and

addr register indices from ex->type rather than ex->data. As ex->type will

contain EX_TYPE_LOAD_UNALIGNED_ZEROPAD (i.e. 4):

* We'll always treat X0 as the address register, since EX_DATA_REG_ADDR is

extracted from bits [9:5]. Thus, we may attempt to dereference an

arbitrary address as X0 may hold an arbitrary value.

* We'll always treat X4 as the data register, since EX_DATA_REG_DATA is

extracted from bits [4:0]. Thus we will corrupt X4 and cause arbitrary

behaviour within load_unaligned_zeropad() and its caller.

Fix this by extracting both values from ex->data as originally intended.

On an MTE-enabled QEMU image we are hitting the following crash:

Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000

Call trace:

fixup_exception+0xc4/0x108

__do_kernel_fault+0x3c/0x268

do_tag_check_fault+0x3c/0x104

do_mem_abort+0x44/0xf4

el1_abort+0x40/0x64

el1h_64_sync_handler+0x60/0xa0

el1h_64_sync+0x7c/0x80

link_path_walk+0x150/0x344

path_openat+0xa0/0x7dc

do_filp_open+0xb8/0x168

do_sys_openat2+0x88/0x17c

__arm64_sys_openat+0x74/0xa0

invoke_syscall+0x48/0x148

el0_svc_common+0xb8/0xf8

do_el0_svc+0x28/0x88

el0_svc+0x24/0x84

el0t_64_sync_handler+0x88/0xec

el0t_64_sync+0x1b4/0x1b8

Code: f8695a69 71007d1f 540000e0 927df12a (f940014a)

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00191 · 8.3th percentile
Weakness
CWE-476 · NULL Pointer Dereference
Published
2024-06-20T16:15Z
Affected products (2)
ProductVersionsFixed in
linux/linux_kernel≥ 5.16, < 5.16.55.16.5
linux/linux_kernelall versions—
References (4)
EPSS history
Timeline
  • 20 JUN 11:13Z
    arm64: extable: fix load_unaligned_zeropad() reg indices
    cvelistv5