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-toolsUpgrade python-perfUpgrade kernel-livepatch-5.10.233-224.894Upgrade kernelUpgrade python-perf-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade bpftool-debuginfoUpgrade kernel-headersUpgrade kernel-livepatch-5.15.176-118.178Upgrade kernel-debuginfoUpgrade kernel-tools-debuginfoUpgrade perf-debuginfoUpgrade kernel-tools-develUpgrade kernel-livepatch-4.14.355-275.582Upgrade kernel-develUpgrade perfUpgrade bpftoolUpgrade kernel-debuginfo-common-aarch64 | Feb 4, 2025 | Oct 28, 2024 |
| Amazon_linux | — | Upgrade kernel | Feb 6, 2025 | Oct 28, 2024 |
| Amazon_linux_2023 | — | Upgrade kernel-tools-debuginfoUpgrade kernel-libbpfUpgrade perf-debuginfoUpgrade kernel-modules-extraUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-debuginfoUpgrade perfUpgrade bpftool-debuginfoUpgrade kernel-headersUpgrade kernel-toolsUpgrade kernel-tools-develUpgrade kernel-libbpf-develUpgrade kernel-modules-extra-commonUpgrade kernel-livepatch-6.1.119-129.201Upgrade python3-perf-debuginfoUpgrade kernel-develUpgrade python3-perfUpgrade kernelUpgrade bpftoolUpgrade kernel-libbpf-staticUpgrade kernel-debuginfo-common-x86_64 | Feb 17, 2025 | Oct 28, 2024 |
| Debian | — | Upgrade linux-6.1Upgrade linux | Dec 2, 2024 | Oct 28, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade kernel-abi-stablelistsUpgrade bpftoolUpgrade kernel-toolsUpgrade python3-perfUpgrade kernel-tools-libsUpgrade kernel | Feb 11, 2025 | Oct 28, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade python3-perfUpgrade kernel-tools-libsUpgrade kernelUpgrade bpftoolUpgrade kernel-toolsUpgrade kernel-abi-stablelists | Feb 11, 2025 | Oct 28, 2024 |
| Redhat_linux | — | Upgrade kernelNo solution existsUpgrade kernel-rt | May 15, 2025 | Oct 28, 2024 |
| Ubuntu | — | Upgrade linux-image-5.15.0-1098-aws-fipsUpgrade linux-image-aws-5.15Upgrade linux-image-oracle-lts-22.04Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-oem-20.04dUpgrade linux-image-oem-24.04Upgrade linux-image-nvidia-tegra-igxUpgrade linux-image-6.11.0-18-genericUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-azure-cvmUpgrade linux-image-generic-lpae-hwe-18.04Upgrade linux-image-oem-22.04bUpgrade linux-image-gcp-fips-5.15Upgrade linux-image-oracle-lts-18.04Upgrade linux-image-5.15.0-1102-azure-fipsUpgrade linux-image-fips-5.4Upgrade linux-image-virtual-hwe-18.04Upgrade linux-image-6.8.1-1020-realtimeUpgrade linux-image-gkeop-5.15Upgrade linux-image-oem-22.04cUpgrade linux-image-5.4.0-1151-oracleUpgrade linux-image-4.15.0-1142-fipsUpgrade linux-image-gcp-64kUpgrade linux-image-lowlatency-lts-xenialUpgrade linux-image-6.11.0-1010-lowlatencyUpgrade linux-image-azure-fipsUpgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-4.4.0-276-genericUpgrade linux-image-oem-20.04Upgrade linux-image-6.8.0-1026-nvidia-64kUpgrade linux-image-4.4.0-1188-awsUpgrade linux-image-6.8.0-1010-gkeopUpgrade linux-image-aws-lts-20.04Upgrade linux-image-azureUpgrade linux-image-4.15.0-1187-awsUpgrade linux-image-5.15.0-1050-nvidia-tegraUpgrade linux-image-generic-hwe-18.04Upgrade linux-image-5.15.0-1092-raspiUpgrade linux-image-gkeUpgrade linux-image-5.4.0-1156-azureUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-intel-iot-realtime-5.15Upgrade linux-image-gcp-fips-4.15Upgrade linux-image-4.15.0-1180-gcpUpgrade linux-image-nvidia-64kUpgrade linux-image-gcpUpgrade linux-image-aws-lts-24.04Upgrade linux-image-raspi-5.15Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-realtime-5.15Upgrade linux-image-raspiUpgrade linux-image-nvidia-tegra-rt-5.15Upgrade linux-image-5.15.0-164-generic-64kUpgrade linux-image-raspi2Upgrade linux-image-virtual-5.15Upgrade linux-image-oracle-5.15Upgrade linux-image-virtual-hwe-20.04Upgrade linux-image-generic-64kUpgrade linux-image-6.8.0-1028-gcp-64kUpgrade linux-image-fips-5.15Upgrade linux-image-5.15.0-164-lowlatency-64kUpgrade linux-image-generic-lpae-5.4Upgrade linux-image-oracle-64kUpgrade linux-image-5.15.0-1062-xilinx-zynqmpUpgrade linux-image-5.15.0-1098-gcp-fipsUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-6.11.0-18-generic-64kUpgrade linux-image-6.8.0-58-lowlatency-64kUpgrade linux-image-5.4.0-1057-iotUpgrade linux-image-azure-5.15Upgrade linux-image-5.15.0-1094-gkeUpgrade linux-image-5.15.0-1050-nvidia-tegra-rtUpgrade linux-image-virtual-lts-xenialUpgrade linux-image-realtimeUpgrade linux-image-5.15.0-1093-nvidia-lowlatencyUpgrade linux-image-kvm-5.15Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-oem-20.04cUpgrade linux-image-raspi-realtimeUpgrade linux-image-oem-22.04dUpgrade linux-image-oem-osp1Upgrade linux-image-lowlatency-hwe-18.04Upgrade linux-image-6.8.0-1026-oemUpgrade linux-image-intelUpgrade linux-image-5.4.0-1157-azure-fipsUpgrade linux-image-5.15.0-164-lowlatencyUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-raspi-hwe-18.04Upgrade linux-image-gcp-5.4Upgrade linux-image-4.15.0-2104-azure-fipsUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-oem-24.04aUpgrade linux-image-6.8.0-1024-ibmUpgrade linux-image-aws-64k-lts-22.04Upgrade linux-image-4.4.0-276-lowlatencyUpgrade linux-image-aws-fips-5.15Upgrade linux-image-5.4.0-1153-aws-fipsUpgrade linux-image-aws-fips-4.15Upgrade linux-image-gcp-lts-18.04Upgrade linux-image-nvidia-5.15Upgrade linux-image-6.11.0-1015-oemUpgrade linux-image-6.8.0-1027-azure-fdeUpgrade linux-image-4.15.0-245-genericUpgrade linux-image-xilinx-zynqmp-5.4Upgrade linux-image-oracle-lts-24.04Upgrade linux-image-oracleUpgrade linux-image-oracle-lts-20.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-oem-24.04bUpgrade linux-image-raspi2-hwe-18.04Upgrade linux-image-aws-lts-22.04Upgrade linux-image-azure-nvidiaUpgrade linux-image-5.4.0-1071-xilinx-zynqmpUpgrade linux-image-6.8.0-58-lowlatencyUpgrade linux-image-4.4.0-1150-awsUpgrade linux-image-virtualUpgrade linux-image-4.15.0-1149-oracleUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-oem-22.04Upgrade linux-image-oem-20.04bUpgrade linux-image-nvidiaUpgrade linux-image-5.4.0-1153-awsUpgrade linux-image-lowlatency-hwe-16.04Upgrade linux-image-6.8.0-2023-raspi-realtimeUpgrade linux-image-gkeop-6.8Upgrade linux-image-6.11.0-1009-gcpUpgrade linux-image-5.4.0-1140-kvmUpgrade linux-image-4.15.0-2125-aws-fipsUpgrade linux-image-5.4.0-1127-fipsUpgrade linux-image-5.15.0-1097-realtimeUpgrade linux-image-6.11.0-1009-azure-fdeUpgrade linux-image-azure-fips-5.15Upgrade linux-image-gke-5.15Upgrade linux-image-generic-lpaeUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-intel-iotg-5.15Upgrade linux-image-5.15.0-1090-intel-iot-realtimeUpgrade linux-image-oem-22.04aUpgrade linux-image-nvidia-6.8Upgrade linux-image-5.15.0-1093-intel-iotgUpgrade linux-image-generic-lts-xenialUpgrade linux-image-5.15.0-164-fipsUpgrade linux-image-aws-hweUpgrade linux-image-fipsUpgrade linux-image-oemUpgrade linux-image-ibm-lts-20.04Upgrade linux-image-aws-64k-5.15Upgrade linux-image-6.8.0-1026-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1027-awsUpgrade linux-image-4.4.0-1120-fipsUpgrade linux-image-kvm-5.4Upgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-oracle-5.4Upgrade linux-image-5.15.0-164-genericUpgrade linux-image-gcp-fips-5.4Upgrade linux-image-nvidia-tegraUpgrade linux-image-4.15.0-245-lowlatencyUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-ibm-5.15Upgrade linux-image-azure-lts-24.04Upgrade linux-image-5.15.0-1093-nvidiaUpgrade linux-image-5.15.0-1098-aws-64kUpgrade linux-image-ibm-5.4Upgrade linux-image-gcp-5.15Upgrade linux-image-ibmUpgrade linux-image-aws-5.4Upgrade linux-image-6.8.0-1014-azure-nvidiaUpgrade linux-image-6.8.0-1026-nvidia-lowlatencyUpgrade linux-image-5.15.0-1098-gcpUpgrade linux-image-6.11.0-1009-azureUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.8.0-58-genericUpgrade linux-image-generic-5.4Upgrade linux-image-azure-lts-22.04Upgrade linux-image-4.15.0-2088-gcp-fipsUpgrade linux-image-lowlatency-5.4Upgrade linux-image-5.4.0-224-genericUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-nvidia-tegra-rtUpgrade linux-image-azure-fdeUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-aws-fips-5.4Upgrade linux-image-6.8.0-1026-nvidiaUpgrade linux-image-5.4.0-1156-gcp-fipsUpgrade linux-image-virtual-hwe-16.04Upgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-4.15.0-1195-azureUpgrade linux-image-raspi-nolpaeUpgrade linux-image-lowlatencyUpgrade linux-image-nvidia-tegra-5.15Upgrade linux-image-snapdragon-hwe-18.04Upgrade linux-image-4.4.0-1151-kvmUpgrade linux-image-azure-lts-20.04Upgrade linux-image-6.8.0-1024-oracleUpgrade linux-image-6.8.0-1027-azureUpgrade linux-image-generic-lpae-5.15Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-lowlatency-5.15Upgrade linux-image-5.15.0-164-generic-lpaeUpgrade linux-image-6.11.0-1010-lowlatency-64kUpgrade linux-image-5.4.0-224-generic-lpaeUpgrade linux-image-azure-5.4Upgrade linux-image-generic-hwe-16.04Upgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-6.8.0-1028-raspiUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-5.15.0-1039-nvidia-tegra-igxUpgrade linux-image-6.8.0-58-generic-64kUpgrade linux-image-gcp-lts-20.04Upgrade linux-image-6.8.0-1024-oracle-64kUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-5.15.0-1092-ibmUpgrade linux-image-5.15.0-1090-kvmUpgrade linux-image-5.4.0-1099-ibmUpgrade linux-image-6.8.0-1028-gcpUpgrade linux-image-6.11.0-1011-oracle-64kUpgrade linux-image-5.4.0-224-lowlatencyUpgrade linux-image-nvidia-tegra-igx-rt-5.15Upgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-gkeopUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-genericUpgrade linux-image-aws-4.15Upgrade linux-image-gcp-4.15Upgrade linux-image-6.11.0-1008-raspiUpgrade linux-image-6.11.0-1005-realtimeUpgrade linux-image-nvidia-tegra-igx-5.15Upgrade linux-image-generic-5.15Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-azure-fips-5.4Upgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-aws-fipsUpgrade linux-image-ibm-classicUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-5.15.0-1095-oracleUpgrade linux-image-nvidia-lowlatency-5.15Upgrade linux-image-5.15.0-1102-azureUpgrade linux-image-snapdragon-5.4Upgrade linux-image-virtual-5.4Upgrade linux-image-generic-hwe-24.04Upgrade linux-image-virtual-hwe-22.04Upgrade linux-image-6.11.0-1009-awsUpgrade linux-image-azure-lts-18.04Upgrade linux-image-gcp-fipsUpgrade linux-image-intel-iotgUpgrade linux-image-oracle-4.15Upgrade linux-image-5.15.0-1098-awsUpgrade linux-image-5.15.0-1081-gkeopUpgrade linux-image-5.15.0-1039-nvidia-tegra-igx-rtUpgrade linux-image-6.11.0-1011-oracleUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-azure-4.15Upgrade linux-image-4.15.0-1169-kvmUpgrade linux-image-5.4.0-1156-gcpUpgrade linux-image-generic-64k-5.15Upgrade linux-image-kvmUpgrade linux-image-azure-fips-4.15Upgrade linux-image-raspi-5.4Upgrade linux-image-5.4.0-1136-raspiUpgrade linux-image-aws-lts-18.04Upgrade linux-image-6.8.0-1023-gkeUpgrade linux-image-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