| From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2024-53222: zram: fix NULL pointer in comp_algorithm_show() |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| zram: fix NULL pointer in comp_algorithm_show() |
| |
| LTP reported a NULL pointer dereference as followed: |
| |
| CPU: 7 UID: 0 PID: 5995 Comm: cat Kdump: loaded Not tainted 6.12.0-rc6+ #3 |
| Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015 |
| pstate: 40400005 (nZcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) |
| pc : __pi_strcmp+0x24/0x140 |
| lr : zcomp_available_show+0x60/0x100 [zram] |
| sp : ffff800088b93b90 |
| x29: ffff800088b93b90 x28: 0000000000000001 x27: 0000000000400cc0 |
| x26: 0000000000000ffe x25: ffff80007b3e2388 x24: 0000000000000000 |
| x23: ffff80007b3e2390 x22: ffff0004041a9000 x21: ffff80007b3e2900 |
| x20: 0000000000000000 x19: 0000000000000000 x18: 0000000000000000 |
| x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000 |
| x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000 |
| x11: 0000000000000000 x10: ffff80007b3e2900 x9 : ffff80007b3cb280 |
| x8 : 0101010101010101 x7 : 0000000000000000 x6 : 0000000000000000 |
| x5 : 0000000000000040 x4 : 0000000000000000 x3 : 00656c722d6f7a6c |
| x2 : 0000000000000000 x1 : ffff80007b3e2900 x0 : 0000000000000000 |
| Call trace: |
| __pi_strcmp+0x24/0x140 |
| comp_algorithm_show+0x40/0x70 [zram] |
| dev_attr_show+0x28/0x80 |
| sysfs_kf_seq_show+0x90/0x140 |
| kernfs_seq_show+0x34/0x48 |
| seq_read_iter+0x1d4/0x4e8 |
| kernfs_fop_read_iter+0x40/0x58 |
| new_sync_read+0x9c/0x168 |
| vfs_read+0x1a8/0x1f8 |
| ksys_read+0x74/0x108 |
| __arm64_sys_read+0x24/0x38 |
| invoke_syscall+0x50/0x120 |
| el0_svc_common.constprop.0+0xc8/0xf0 |
| do_el0_svc+0x24/0x38 |
| el0_svc+0x38/0x138 |
| el0t_64_sync_handler+0xc0/0xc8 |
| el0t_64_sync+0x188/0x190 |
| |
| The zram->comp_algs[ZRAM_PRIMARY_COMP] can be NULL in zram_add() if |
| comp_algorithm_set() has not been called. User can access the zram device |
| by sysfs after device_add_disk(), so there is a time window to trigger the |
| NULL pointer dereference. Move it ahead device_add_disk() to make sure |
| when user can access the zram device, it is ready. comp_algorithm_set() |
| is protected by zram->init_lock in other places and no such problem. |
| |
| The Linux kernel CVE team has assigned CVE-2024-53222 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 6.2 with commit 7ac07a26dea79c3892436bce41cce03dcbd3c4c7 and fixed in 6.6.84 with commit c7ee791e538537b281f60945298796f0a3971bbd |
| Issue introduced in 6.2 with commit 7ac07a26dea79c3892436bce41cce03dcbd3c4c7 and fixed in 6.12.2 with commit 843d366ff19708668d95cda16bb8aba109a93dba |
| Issue introduced in 6.2 with commit 7ac07a26dea79c3892436bce41cce03dcbd3c4c7 and fixed in 6.13 with commit f364cdeb38938f9d03061682b8ff3779dd1730e5 |
| |
| Please see https://www.kernel.org for a full list of currently supported |
| kernel versions by the kernel community. |
| |
| Unaffected versions might change over time as fixes are backported to |
| older supported kernel versions. The official CVE entry at |
| https://cve.org/CVERecord/?id=CVE-2024-53222 |
| will be updated if fixes are backported, please check that for the most |
| up to date information about this issue. |
| |
| |
| Affected files |
| ============== |
| |
| The file(s) affected by this issue are: |
| drivers/block/zram/zram_drv.c |
| |
| |
| Mitigation |
| ========== |
| |
| The Linux kernel CVE team recommends that you update to the latest |
| stable kernel version for this, and many other bugfixes. Individual |
| changes are never tested alone, but rather are part of a larger kernel |
| release. Cherry-picking individual commits is not recommended or |
| supported by the Linux kernel community at all. If however, updating to |
| the latest release is impossible, the individual changes to resolve this |
| issue can be found at these commits: |
| https://git.kernel.org/stable/c/c7ee791e538537b281f60945298796f0a3971bbd |
| https://git.kernel.org/stable/c/843d366ff19708668d95cda16bb8aba109a93dba |
| https://git.kernel.org/stable/c/f364cdeb38938f9d03061682b8ff3779dd1730e5 |