CVE-2021-47613

CVE-2021-47613

High · published June 19, 2024

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

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

i2c: virtio: fix completion handling

The driver currently assumes that the notify callback is only received

when the device is done with all the queued buffers.

However, this is not true, since the notify callback could be called

without any of the queued buffers being completed (for example, with

virtio-pci and shared interrupts) or with only some of the buffers being

completed (since the driver makes them available to the device in

multiple separate virtqueue_add_sgs() calls).

This can lead to incorrect data on the I2C bus or memory corruption in

the guest if the device operates on buffers which are have been freed by

the driver. (The WARN_ON in the driver is also triggered.)

BUG kmalloc-128 (Tainted: G W ): Poison overwritten

First byte 0x0 instead of 0x6b

Allocated in i2cdev_ioctl_rdwr+0x9d/0x1de age=243 cpu=0 pid=28

memdup_user+0x2e/0xbd

i2cdev_ioctl_rdwr+0x9d/0x1de

i2cdev_ioctl+0x247/0x2ed

vfs_ioctl+0x21/0x30

sys_ioctl+0xb18/0xb41

Freed in i2cdev_ioctl_rdwr+0x1bb/0x1de age=68 cpu=0 pid=28

kfree+0x1bd/0x1cc

i2cdev_ioctl_rdwr+0x1bb/0x1de

i2cdev_ioctl+0x247/0x2ed

vfs_ioctl+0x21/0x30

sys_ioctl+0xb18/0xb41

Fix this by calling virtio_get_buf() from the notify handler like other

virtio drivers and by actually waiting for all the buffers to be

completed.

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.00214 · 11.1th percentile
Published
2024-06-19T19:15Z
Affected products (5)
ProductVersionsFixed in
linux/linux_kernel≥ 5.15, < 5.15.105.15.10
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (4)
EPSS history
Timeline
  • 19 JUN 14:58Z
    i2c: virtio: fix completion handling
    cvelistv5