In the Linux kernel, the following vulnerability has been resolved:
uprobe: avoid out-of-bounds memory access of fetching args
Uprobe needs to fetch args into a percpu buffer, and then copy to ring buffer to avoid non-atomic context problem.
Sometimes user-space strings, arrays can be very large, but the size of percpu buffer is only page size. And store_trace_args() won't check whether these data exceeds a single page or not, caused out-of-bounds memory access.
It could be reproduced by following steps: 1. build kernel with CONFIG_KASAN enabled 2. save follow program as test.c
``` \#include <stdio.h> \#include <stdlib.h> \#include <string.h>
// If string length large than MAX_STRING_SIZE, the fetch_store_strlen() // will return 0, cause __get_data_size() return shorter size, and // store_trace_args() will not trigger out-of-bounds access. // So make string length less than 4096. \#define STRLEN 4093
void generate_string(char *str, int n) { int i; for (i = 0; i < n; ++i) { char c = i % 26 + 'a'; str[i] = c; } str[n-1] = '\0'; }
void print_string(char *str) { printf("%s\n", str); }
int main() { char tmp[STRLEN];
generate_string(tmp, STRLEN); print_string(tmp);
return 0; } ``` 3. compile program `gcc -o test test.c`
4. get the offset of `print_string()` ``` objdump -t test | grep -w print_string 0000000000401199 g F .text 000000000000001b print_string ```
5. configure uprobe with offset 0x1199 ``` off=0x1199
cd /sys/kernel/debug/tracing/ echo "p /root/test:${off} arg1=+0(%di):ustring arg2=\$comm arg3=+0(%di):ustring" > uprobe_events echo 1 > events/uprobes/enable echo 1 > tracing_on ```
6. run `test`, and kasan will report error. ================================================================== BUG: KASAN: use-after-free in strncpy_from_user+0x1d6/0x1f0 Write of size 8 at addr ffff88812311c004 by task test/499CPU: 0 UID: 0 PID: 499 Comm: test Not tainted 6.12.0-rc3+ #18 Hardware name: Red Hat KVM, BIOS 1.16.0-4.al8 04/01/2014 Call Trace: <TASK> dump_stack_lvl+0x55/0x70 print_address_description.constprop.0+0x27/0x310 kasan_report+0x10f/0x120 ? strncpy_from_user+0x1d6/0x1f0 strncpy_from_user+0x1d6/0x1f0 ? rmqueue.constprop.0+0x70d/0x2ad0 process_fetch_insn+0xb26/0x1470 ? __pfx_process_fetch_insn+0x10/0x10 ? _raw_spin_lock+0x85/0xe0 ? __pfx__raw_spin_lock+0x10/0x10 ? __pte_offset_map+0x1f/0x2d0 ? unwind_next_frame+0xc5f/0x1f80 ? arch_stack_walk+0x68/0xf0 ? is_bpf_text_address+0x23/0x30 ? kernel_text_address.part.0+0xbb/0xd0 ? __kernel_text_address+0x66/0xb0 ? unwind_get_return_address+0x5e/0xa0 ? __pfx_stack_trace_consume_entry+0x10/0x10 ? arch_stack_walk+0xa2/0xf0 ? _raw_spin_lock_irqsave+0x8b/0xf0 ? __pfx__raw_spin_lock_irqsave+0x10/0x10 ? depot_alloc_stack+0x4c/0x1f0 ? _raw_spin_unlock_irqrestore+0xe/0x30 ? stack_depot_save_flags+0x35d/0x4f0 ? kasan_save_stack+0x34/0x50 ? kasan_save_stack+0x24/0x50 ? mutex_lock+0x91/0xe0 ? __pfx_mutex_lock+0x10/0x10 prepare_uprobe_buffer.part.0+0x2cd/0x500 uprobe_dispatcher+0x2c3/0x6a0 ? __pfx_uprobe_dispatcher+0x10/0x10 ? __kasan_slab_alloc+0x4d/0x90 handler_chain+0xdd/0x3e0 handle_swbp+0x26e/0x3d0 ? __pfx_handle_swbp+0x10/0x10 ? uprobe_pre_sstep_notifier+0x151/0x1b0 irqentry_exit_to_user_mode+0xe2/0x1b0 asm_exc_int3+0x39/0x40 RIP: 0033:0x401199 Code: 01 c2 0f b6 45 fb 88 02 83 45 fc 01 8b 45 fc 3b 45 e4 7c b7 8b 45 e4 48 98 48 8d 50 ff 48 8b 45 e8 48 01 d0 ce RSP: 002b:00007ffdf00576a8 EFLAGS: 00000206 RAX: 00007ffdf00576b0 RBX: 0000000000000000 RCX: 0000000000000ff2 RDX: 0000000000000ffc RSI: 0000000000000ffd RDI: 00007ffdf00576b0 RBP: 00007ffdf00586b0 R08: 00007feb2f9c0d20 R09: 00007feb2f9c0d20 R10: 0000000000000001 R11: 0000000000000202 R12: 0000000000401040 R13: 00007ffdf0058780 R14: 0000000000000000 R15: 0000000000000000 </TASK>
This commit enforces the buffer's maxlen less than a page-size to avoid store_trace_args() out-of-memory access.
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon Linux Ami 2 | — | Upgrade kernel-livepatch-4.14.355-275.582Upgrade kernel-debuginfo-common-aarch64Upgrade kernel-tools-debuginfoUpgrade perf-debuginfoUpgrade kernel-debuginfoUpgrade kernel-tools-develUpgrade kernel-develUpgrade bpftoolUpgrade perfUpgrade python-perfUpgrade kernel-headersUpgrade kernel-livepatch-5.15.176-118.178Upgrade kernel-toolsUpgrade kernel-livepatch-5.10.233-224.894Upgrade kernel-debuginfo-common-x86_64Upgrade bpftool-debuginfoUpgrade kernelUpgrade python-perf-debuginfo | Feb 4, 2025 | Oct 28, 2024 |
| Amazon_linux | — | Upgrade kernel | Feb 6, 2025 | Oct 28, 2024 |
| Amazon_linux_2023 | — | Upgrade kernel-libbpfUpgrade kernel-debuginfoUpgrade kernel-modules-extraUpgrade perf-debuginfoUpgrade kernel-headersUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-toolsUpgrade kernel-tools-debuginfoUpgrade bpftool-debuginfoUpgrade perfUpgrade kernelUpgrade kernel-tools-develUpgrade kernel-libbpf-staticUpgrade bpftoolUpgrade python3-perfUpgrade python3-perf-debuginfoUpgrade kernel-develUpgrade kernel-libbpf-develUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-livepatch-6.1.119-129.201Upgrade kernel-modules-extra-common | Feb 17, 2025 | Oct 28, 2024 |
| Debian | — | Upgrade linux-6.1Upgrade linux | Dec 2, 2024 | Oct 28, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade kernelUpgrade kernel-tools-libsUpgrade python3-perfUpgrade kernel-abi-stablelistsUpgrade bpftoolUpgrade kernel-tools | Feb 11, 2025 | Oct 28, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade python3-perfUpgrade bpftoolUpgrade kernel-toolsUpgrade kernel-tools-libsUpgrade kernelUpgrade kernel-abi-stablelists | Feb 11, 2025 | Oct 28, 2024 |
| Redhat_linux | — | Upgrade kernelUpgrade kernel-rtNo solution exists | May 15, 2025 | Oct 28, 2024 |
| Ubuntu | — | Upgrade linux-image-oracle-lts-18.04Upgrade linux-image-azure-fipsUpgrade linux-image-oem-22.04cUpgrade linux-image-azure-5.15Upgrade linux-image-azure-lts-18.04Upgrade linux-image-gcp-fipsUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-6.11.0-1009-awsUpgrade linux-image-fips-5.4Upgrade linux-image-gcp-fips-5.15Upgrade linux-image-gcpUpgrade linux-image-oracle-64kUpgrade linux-image-6.8.1-1020-realtimeUpgrade linux-image-azure-cvmUpgrade linux-image-4.4.0-276-lowlatencyUpgrade linux-image-raspi2Upgrade linux-image-aws-fips-4.15Upgrade linux-image-6.11.0-1010-lowlatencyUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-virtual-hwe-18.04Upgrade linux-image-generic-hwe-24.04Upgrade linux-image-gkeop-5.15Upgrade linux-image-5.15.0-1102-azure-fipsUpgrade linux-image-azure-nvidiaUpgrade linux-image-5.15.0-1090-intel-iot-realtimeUpgrade linux-image-6.8.0-1024-ibmUpgrade linux-image-nvidia-5.15Upgrade linux-image-oracle-lts-22.04Upgrade linux-image-5.15.0-1093-nvidiaUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-6.8.0-1027-azureUpgrade linux-image-azure-fips-5.15Upgrade linux-image-oracleUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-nvidia-6.8Upgrade linux-image-gcp-4.15Upgrade linux-image-azure-lts-20.04Upgrade linux-image-5.4.0-224-genericUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-gcp-lts-20.04Upgrade linux-image-genericUpgrade linux-image-gkeopUpgrade linux-image-oem-22.04Upgrade linux-image-4.15.0-1149-oracleUpgrade linux-image-lowlatency-hwe-16.04Upgrade linux-image-virtualUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-5.4.0-1140-kvmUpgrade linux-image-4.15.0-2125-aws-fipsUpgrade linux-image-oracle-lts-20.04Upgrade linux-image-6.11.0-1009-azureUpgrade linux-image-aws-5.4Upgrade linux-image-ibmUpgrade linux-image-5.15.0-164-genericUpgrade linux-image-kvm-5.4Upgrade linux-image-nvidia-tegra-rtUpgrade linux-image-4.4.0-1151-kvmUpgrade linux-image-oracle-5.4Upgrade linux-image-nvidia-tegraUpgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-oemUpgrade linux-image-generic-lpae-5.15Upgrade linux-image-raspi-nolpaeUpgrade linux-image-4.4.0-1120-fipsUpgrade linux-image-lowlatency-5.15Upgrade linux-image-5.15.0-1097-realtimeUpgrade linux-image-gkeop-6.8Upgrade linux-image-6.11.0-1009-gcpUpgrade linux-image-5.4.0-1153-awsUpgrade linux-image-5.4.0-1127-fipsUpgrade linux-image-6.11.0-1009-azure-fdeUpgrade linux-image-6.8.0-2023-raspi-realtimeUpgrade linux-image-6.8.0-1027-awsUpgrade linux-image-5.4.0-224-generic-lpaeUpgrade linux-image-5.4.0-1156-gcp-fipsUpgrade linux-image-6.11.0-1010-lowlatency-64kUpgrade linux-image-5.15.0-164-generic-lpaeUpgrade linux-image-snapdragon-hwe-18.04Upgrade linux-image-4.15.0-1195-azureUpgrade linux-image-virtual-hwe-16.04Upgrade linux-image-nvidia-tegra-5.15Upgrade linux-image-lowlatencyUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-ibm-lts-20.04Upgrade linux-image-azure-fdeUpgrade linux-image-aws-fips-5.4Upgrade linux-image-aws-64k-5.15Upgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-6.8.0-1026-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1024-oracleUpgrade linux-image-6.8.0-1026-nvidiaUpgrade linux-image-6.11.0-1011-oracle-64kUpgrade linux-image-nvidia-tegra-igx-rt-5.15Upgrade linux-image-6.8.0-58-generic-64kUpgrade linux-image-6.8.0-1024-oracle-64kUpgrade linux-image-5.15.0-1039-nvidia-tegra-igxUpgrade linux-image-5.15.0-164-fipsUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-aws-4.15Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-ibm-classicUpgrade linux-image-generic-lts-xenialUpgrade linux-image-5.4.0-1099-ibmUpgrade linux-image-azure-5.4Upgrade linux-image-ibm-5.4Upgrade linux-image-oem-20.04bUpgrade linux-image-nvidiaUpgrade linux-image-gcp-fips-5.4Upgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-aws-fipsUpgrade linux-image-ibm-5.15Upgrade linux-image-6.8.0-1028-raspiUpgrade linux-image-5.15.0-1098-aws-64kUpgrade linux-image-4.15.0-2088-gcp-fipsUpgrade linux-image-intel-iotg-5.15Upgrade linux-image-gcp-5.15Upgrade linux-image-6.8.0-58-genericUpgrade linux-image-6.8.0-1026-nvidia-lowlatencyUpgrade linux-image-6.8.0-1014-azure-nvidiaUpgrade linux-image-5.15.0-1098-gcpUpgrade linux-image-lowlatency-5.4Upgrade linux-image-azure-lts-22.04Upgrade linux-image-oem-24.04bUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-generic-5.4Upgrade linux-image-aws-hweUpgrade linux-image-6.8.0-1028-gcpUpgrade linux-image-5.15.0-1092-ibmUpgrade linux-image-5.15.0-1090-kvmUpgrade linux-image-4.4.0-1150-awsUpgrade linux-image-raspi2-hwe-18.04Upgrade linux-image-xilinx-zynqmp-5.4Upgrade linux-image-oracle-lts-24.04Upgrade linux-image-oem-22.04aUpgrade linux-image-generic-lpaeUpgrade linux-image-5.4.0-224-lowlatencyUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-fipsUpgrade linux-image-5.15.0-1093-intel-iotgUpgrade linux-image-azure-fips-5.4Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-gcp-lts-22.04Upgrade linux-image-6.8.0-58-lowlatencyUpgrade linux-image-5.15.0-1102-azureUpgrade linux-image-6.11.0-1008-raspiUpgrade linux-image-5.15.0-1095-oracleUpgrade linux-image-6.11.0-1005-realtimeUpgrade linux-image-gke-5.15Upgrade linux-image-5.4.0-1071-xilinx-zynqmpUpgrade linux-image-virtual-5.4Upgrade linux-image-snapdragon-5.4Upgrade linux-image-nvidia-lowlatency-5.15Upgrade linux-image-raspi-5.15Upgrade linux-image-nvidia-tegra-igx-5.15Upgrade linux-image-azure-lts-24.04Upgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-generic-5.15Upgrade linux-image-4.15.0-245-lowlatencyUpgrade linux-image-aws-lts-22.04Upgrade linux-image-generic-hwe-16.04Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-5.4.0-1057-iotUpgrade linux-image-5.15.0-1050-nvidia-tegra-rtUpgrade linux-image-6.8.0-58-lowlatency-64kUpgrade linux-image-5.15.0-1094-gkeUpgrade linux-image-6.11.0-1015-oemUpgrade linux-image-6.8.0-1027-azure-fdeUpgrade linux-image-realtime-5.15Upgrade linux-image-4.15.0-1142-fipsUpgrade linux-image-4.4.0-1188-aws | Feb 20, 2025 | Oct 28, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jul 2, 2025 | Oct 28, 2024 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub