| 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-49924: fbdev: pxafb: Fix possible use after free in pxafb_task() |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| fbdev: pxafb: Fix possible use after free in pxafb_task() |
| |
| In the pxafb_probe function, it calls the pxafb_init_fbinfo function, |
| after which &fbi->task is associated with pxafb_task. Moreover, |
| within this pxafb_init_fbinfo function, the pxafb_blank function |
| within the &pxafb_ops struct is capable of scheduling work. |
| |
| If we remove the module which will call pxafb_remove to make cleanup, |
| it will call unregister_framebuffer function which can call |
| do_unregister_framebuffer to free fbi->fb through |
| put_fb_info(fb_info), while the work mentioned above will be used. |
| The sequence of operations that may lead to a UAF bug is as follows: |
| |
| CPU0 CPU1 |
| |
| | pxafb_task |
| pxafb_remove | |
| unregister_framebuffer(info) | |
| do_unregister_framebuffer(fb_info) | |
| put_fb_info(fb_info) | |
| // free fbi->fb | set_ctrlr_state(fbi, state) |
| | __pxafb_lcd_power(fbi, 0) |
| | fbi->lcd_power(on, &fbi->fb.var) |
| | //use fbi->fb |
| |
| Fix it by ensuring that the work is canceled before proceeding |
| with the cleanup in pxafb_remove. |
| |
| Note that only root user can remove the driver at runtime. |
| |
| The Linux kernel CVE team has assigned CVE-2024-49924 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Fixed in 4.19.323 with commit e657fa2df4429f3805a9b3e47fb1a4a1b02a72bd |
| Fixed in 5.4.285 with commit 6d0a07f68b66269e167def6c0b90a219cd3e7473 |
| Fixed in 5.10.227 with commit e6897e299f57b103e999e62010b88e363b3eebae |
| Fixed in 5.15.168 with commit 4cda484e584be34d55ee17436ebf7ad11922b97a |
| Fixed in 6.1.113 with commit 3c0d416eb4bef705f699213cee94bf54b6acdacd |
| Fixed in 6.6.55 with commit fdda354f60a576d52dcf90351254714681df4370 |
| Fixed in 6.10.14 with commit aaadc0cb05c999ccd8898a03298b7e5c31509b08 |
| Fixed in 6.11.3 with commit a3a855764dbacbdb1cc51e15dc588f2d21c93e0e |
| Fixed in 6.12 with commit 4a6921095eb04a900e0000da83d9475eb958e61e |
| |
| 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-49924 |
| 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/video/fbdev/pxafb.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/e657fa2df4429f3805a9b3e47fb1a4a1b02a72bd |
| https://git.kernel.org/stable/c/6d0a07f68b66269e167def6c0b90a219cd3e7473 |
| https://git.kernel.org/stable/c/e6897e299f57b103e999e62010b88e363b3eebae |
| https://git.kernel.org/stable/c/4cda484e584be34d55ee17436ebf7ad11922b97a |
| https://git.kernel.org/stable/c/3c0d416eb4bef705f699213cee94bf54b6acdacd |
| https://git.kernel.org/stable/c/fdda354f60a576d52dcf90351254714681df4370 |
| https://git.kernel.org/stable/c/aaadc0cb05c999ccd8898a03298b7e5c31509b08 |
| https://git.kernel.org/stable/c/a3a855764dbacbdb1cc51e15dc588f2d21c93e0e |
| https://git.kernel.org/stable/c/4a6921095eb04a900e0000da83d9475eb958e61e |