CVE-2022-49626

Severity CVSS v4.0:
Pending analysis
Type:
CWE-416 Use After Free
Publication date:
26/02/2025
Last modified:
24/03/2025

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> sfc: fix use after free when disabling sriov<br /> <br /> Use after free is detected by kfence when disabling sriov. What was read<br /> after being freed was vf-&gt;pci_dev: it was freed from pci_disable_sriov<br /> and later read in efx_ef10_sriov_free_vf_vports, called from<br /> efx_ef10_sriov_free_vf_vswitching.<br /> <br /> Set the pointer to NULL at release time to not trying to read it later.<br /> <br /> Reproducer and dmesg log (note that kfence doesn&amp;#39;t detect it every time):<br /> $ echo 1 &gt; /sys/class/net/enp65s0f0np0/device/sriov_numvfs<br /> $ echo 0 &gt; /sys/class/net/enp65s0f0np0/device/sriov_numvfs<br /> <br /> BUG: KFENCE: use-after-free read in efx_ef10_sriov_free_vf_vswitching+0x82/0x170 [sfc]<br /> <br /> Use-after-free read at 0x00000000ff3c1ba5 (in kfence-#224):<br /> efx_ef10_sriov_free_vf_vswitching+0x82/0x170 [sfc]<br /> efx_ef10_pci_sriov_disable+0x38/0x70 [sfc]<br /> efx_pci_sriov_configure+0x24/0x40 [sfc]<br /> sriov_numvfs_store+0xfe/0x140<br /> kernfs_fop_write_iter+0x11c/0x1b0<br /> new_sync_write+0x11f/0x1b0<br /> vfs_write+0x1eb/0x280<br /> ksys_write+0x5f/0xe0<br /> do_syscall_64+0x5c/0x80<br /> entry_SYSCALL_64_after_hwframe+0x44/0xae<br /> <br /> kfence-#224: 0x00000000edb8ef95-0x00000000671f5ce1, size=2792, cache=kmalloc-4k<br /> <br /> allocated by task 6771 on cpu 10 at 3137.860196s:<br /> pci_alloc_dev+0x21/0x60<br /> pci_iov_add_virtfn+0x2a2/0x320<br /> sriov_enable+0x212/0x3e0<br /> efx_ef10_sriov_configure+0x67/0x80 [sfc]<br /> efx_pci_sriov_configure+0x24/0x40 [sfc]<br /> sriov_numvfs_store+0xba/0x140<br /> kernfs_fop_write_iter+0x11c/0x1b0<br /> new_sync_write+0x11f/0x1b0<br /> vfs_write+0x1eb/0x280<br /> ksys_write+0x5f/0xe0<br /> do_syscall_64+0x5c/0x80<br /> entry_SYSCALL_64_after_hwframe+0x44/0xae<br /> <br /> freed by task 6771 on cpu 12 at 3170.991309s:<br /> device_release+0x34/0x90<br /> kobject_cleanup+0x3a/0x130<br /> pci_iov_remove_virtfn+0xd9/0x120<br /> sriov_disable+0x30/0xe0<br /> efx_ef10_pci_sriov_disable+0x57/0x70 [sfc]<br /> efx_pci_sriov_configure+0x24/0x40 [sfc]<br /> sriov_numvfs_store+0xfe/0x140<br /> kernfs_fop_write_iter+0x11c/0x1b0<br /> new_sync_write+0x11f/0x1b0<br /> vfs_write+0x1eb/0x280<br /> ksys_write+0x5f/0xe0<br /> do_syscall_64+0x5c/0x80<br /> entry_SYSCALL_64_after_hwframe+0x44/0xae

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.2 (including) 4.9.324 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.10 (including) 4.14.289 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.15 (including) 4.19.253 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.20 (including) 5.4.207 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.5 (including) 5.10.132 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (including) 5.15.56 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (including) 5.18.13 (excluding)
cpe:2.3:o:linux:linux_kernel:5.19:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.19:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.19:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.19:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.19:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.19:rc6:*:*:*:*:*:*