| 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-46740: binder: fix UAF caused by offsets overwrite |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| binder: fix UAF caused by offsets overwrite |
| |
| Binder objects are processed and copied individually into the target |
| buffer during transactions. Any raw data in-between these objects is |
| copied as well. However, this raw data copy lacks an out-of-bounds |
| check. If the raw data exceeds the data section size then the copy |
| overwrites the offsets section. This eventually triggers an error that |
| attempts to unwind the processed objects. However, at this point the |
| offsets used to index these objects are now corrupted. |
| |
| Unwinding with corrupted offsets can result in decrements of arbitrary |
| nodes and lead to their premature release. Other users of such nodes are |
| left with a dangling pointer triggering a use-after-free. This issue is |
| made evident by the following KASAN report (trimmed): |
| |
| ================================================================== |
| BUG: KASAN: slab-use-after-free in _raw_spin_lock+0xe4/0x19c |
| Write of size 4 at addr ffff47fc91598f04 by task binder-util/743 |
| |
| CPU: 9 UID: 0 PID: 743 Comm: binder-util Not tainted 6.11.0-rc4 #1 |
| Hardware name: linux,dummy-virt (DT) |
| Call trace: |
| _raw_spin_lock+0xe4/0x19c |
| binder_free_buf+0x128/0x434 |
| binder_thread_write+0x8a4/0x3260 |
| binder_ioctl+0x18f0/0x258c |
| [...] |
| |
| Allocated by task 743: |
| __kmalloc_cache_noprof+0x110/0x270 |
| binder_new_node+0x50/0x700 |
| binder_transaction+0x413c/0x6da8 |
| binder_thread_write+0x978/0x3260 |
| binder_ioctl+0x18f0/0x258c |
| [...] |
| |
| Freed by task 745: |
| kfree+0xbc/0x208 |
| binder_thread_read+0x1c5c/0x37d4 |
| binder_ioctl+0x16d8/0x258c |
| [...] |
| ================================================================== |
| |
| To avoid this issue, let's check that the raw data copy is within the |
| boundaries of the data section. |
| |
| The Linux kernel CVE team has assigned CVE-2024-46740 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 5.4.226 with commit c056a6ba35e00ae943e377eb09abd77a6915b31a and fixed in 5.4.284 with commit 5a32bfd23022ffa7e152f273fa3fa29befb7d929 |
| Issue introduced in 5.10.157 with commit 23e9d815fad84c1bee3742a8de4bd39510435362 and fixed in 5.10.226 with commit 3a8154bb4ab4a01390a3abf1e6afac296e037da4 |
| Issue introduced in 5.15.17 with commit 7a9ad4aceb0226b391c9d3b8e4ac2e7d438b6bde and fixed in 5.15.167 with commit eef79854a04feac5b861f94d7b19cbbe79874117 |
| Issue introduced in 5.17 with commit 6d98eb95b450a75adb4516a1d33652dc78d2b20c and fixed in 6.1.110 with commit 4f79e0b80dc69bd5eaaed70f0df1b558728b4e59 |
| Issue introduced in 5.17 with commit 6d98eb95b450a75adb4516a1d33652dc78d2b20c and fixed in 6.6.51 with commit 1f33d9f1d9ac3f0129f8508925000900c2fe5bb0 |
| Issue introduced in 5.17 with commit 6d98eb95b450a75adb4516a1d33652dc78d2b20c and fixed in 6.10.10 with commit 109e845c1184c9f786d41516348ba3efd9112792 |
| Issue introduced in 5.17 with commit 6d98eb95b450a75adb4516a1d33652dc78d2b20c and fixed in 6.11 with commit 4df153652cc46545722879415937582028c18af5 |
| Issue introduced in 5.16.3 with commit 66e12f5b3a9733f941893a00753b10498724607d |
| |
| 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-46740 |
| 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/android/binder.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/5a32bfd23022ffa7e152f273fa3fa29befb7d929 |
| https://git.kernel.org/stable/c/3a8154bb4ab4a01390a3abf1e6afac296e037da4 |
| https://git.kernel.org/stable/c/eef79854a04feac5b861f94d7b19cbbe79874117 |
| https://git.kernel.org/stable/c/4f79e0b80dc69bd5eaaed70f0df1b558728b4e59 |
| https://git.kernel.org/stable/c/1f33d9f1d9ac3f0129f8508925000900c2fe5bb0 |
| https://git.kernel.org/stable/c/109e845c1184c9f786d41516348ba3efd9112792 |
| https://git.kernel.org/stable/c/4df153652cc46545722879415937582028c18af5 |