| From bippy-1.1.0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@kernel.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2023-53093: tracing: Do not let histogram values have some modifiers |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| tracing: Do not let histogram values have some modifiers |
| |
| Histogram values can not be strings, stacktraces, graphs, symbols, |
| syscalls, or grouped in buckets or log. Give an error if a value is set to |
| do so. |
| |
| Note, the histogram code was not prepared to handle these modifiers for |
| histograms and caused a bug. |
| |
| Mark Rutland reported: |
| |
| # echo 'p:copy_to_user __arch_copy_to_user n=$arg2' >> /sys/kernel/tracing/kprobe_events |
| # echo 'hist:keys=n:vals=hitcount.buckets=8:sort=hitcount' > /sys/kernel/tracing/events/kprobes/copy_to_user/trigger |
| # cat /sys/kernel/tracing/events/kprobes/copy_to_user/hist |
| [ 143.694628] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 |
| [ 143.695190] Mem abort info: |
| [ 143.695362] ESR = 0x0000000096000004 |
| [ 143.695604] EC = 0x25: DABT (current EL), IL = 32 bits |
| [ 143.695889] SET = 0, FnV = 0 |
| [ 143.696077] EA = 0, S1PTW = 0 |
| [ 143.696302] FSC = 0x04: level 0 translation fault |
| [ 143.702381] Data abort info: |
| [ 143.702614] ISV = 0, ISS = 0x00000004 |
| [ 143.702832] CM = 0, WnR = 0 |
| [ 143.703087] user pgtable: 4k pages, 48-bit VAs, pgdp=00000000448f9000 |
| [ 143.703407] [0000000000000000] pgd=0000000000000000, p4d=0000000000000000 |
| [ 143.704137] Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP |
| [ 143.704714] Modules linked in: |
| [ 143.705273] CPU: 0 PID: 133 Comm: cat Not tainted 6.2.0-00003-g6fc512c10a7c #3 |
| [ 143.706138] Hardware name: linux,dummy-virt (DT) |
| [ 143.706723] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) |
| [ 143.707120] pc : hist_field_name.part.0+0x14/0x140 |
| [ 143.707504] lr : hist_field_name.part.0+0x104/0x140 |
| [ 143.707774] sp : ffff800008333a30 |
| [ 143.707952] x29: ffff800008333a30 x28: 0000000000000001 x27: 0000000000400cc0 |
| [ 143.708429] x26: ffffd7a653b20260 x25: 0000000000000000 x24: ffff10d303ee5800 |
| [ 143.708776] x23: ffffd7a6539b27b0 x22: ffff10d303fb8c00 x21: 0000000000000001 |
| [ 143.709127] x20: ffff10d303ec2000 x19: 0000000000000000 x18: 0000000000000000 |
| [ 143.709478] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000 |
| [ 143.709824] x14: 0000000000000000 x13: 203a6f666e692072 x12: 6567676972742023 |
| [ 143.710179] x11: 0a230a6d6172676f x10: 000000000000002c x9 : ffffd7a6521e018c |
| [ 143.710584] x8 : 000000000000002c x7 : 7f7f7f7f7f7f7f7f x6 : 000000000000002c |
| [ 143.710915] x5 : ffff10d303b0103e x4 : ffffd7a653b20261 x3 : 000000000000003d |
| [ 143.711239] x2 : 0000000000020001 x1 : 0000000000000001 x0 : 0000000000000000 |
| [ 143.711746] Call trace: |
| [ 143.712115] hist_field_name.part.0+0x14/0x140 |
| [ 143.712642] hist_field_name.part.0+0x104/0x140 |
| [ 143.712925] hist_field_print+0x28/0x140 |
| [ 143.713125] event_hist_trigger_print+0x174/0x4d0 |
| [ 143.713348] hist_show+0xf8/0x980 |
| [ 143.713521] seq_read_iter+0x1bc/0x4b0 |
| [ 143.713711] seq_read+0x8c/0xc4 |
| [ 143.713876] vfs_read+0xc8/0x2a4 |
| [ 143.714043] ksys_read+0x70/0xfc |
| [ 143.714218] __arm64_sys_read+0x24/0x30 |
| [ 143.714400] invoke_syscall+0x50/0x120 |
| [ 143.714587] el0_svc_common.constprop.0+0x4c/0x100 |
| [ 143.714807] do_el0_svc+0x44/0xd0 |
| [ 143.714970] el0_svc+0x2c/0x84 |
| [ 143.715134] el0t_64_sync_handler+0xbc/0x140 |
| [ 143.715334] el0t_64_sync+0x190/0x194 |
| [ 143.715742] Code: a9bd7bfd 910003fd a90153f3 aa0003f3 (f9400000) |
| [ 143.716510] ---[ end trace 0000000000000000 ]--- |
| Segmentation fault |
| |
| The Linux kernel CVE team has assigned CVE-2023-53093 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 4.7 with commit c6afad49d127f6d7c9957319f55173a2198b1ba8 and fixed in 6.1.23 with commit 39cd75f2f3a43c0e2f95749eb6dd6420c553f87d |
| Issue introduced in 4.7 with commit c6afad49d127f6d7c9957319f55173a2198b1ba8 and fixed in 6.2.8 with commit 2fc0ee435c9264cdb7c5e872f76cd9bb97640227 |
| Issue introduced in 4.7 with commit c6afad49d127f6d7c9957319f55173a2198b1ba8 and fixed in 6.3 with commit e0213434fe3e4a0d118923dc98d31e7ff1cd9e45 |
| |
| 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-2023-53093 |
| 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: |
| kernel/trace/trace_events_hist.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/39cd75f2f3a43c0e2f95749eb6dd6420c553f87d |
| https://git.kernel.org/stable/c/2fc0ee435c9264cdb7c5e872f76cd9bb97640227 |
| https://git.kernel.org/stable/c/e0213434fe3e4a0d118923dc98d31e7ff1cd9e45 |