In the Linux kernel, the following vulnerability has been resolved:
perf/core: Fix perfoutputbegin parameter is incorrectly invoked in perfeventbpf_output
syzkaller reportes a KASAN issue with stack-out-of-bounds. The call trace is as follows: dumpstack+0x9c/0xd3 printaddressdescription.constprop.0+0x19/0x170 kasanreport.cold+0x6c/0x84 kasanreport+0x3a/0x50 _perfeventheaderinitid+0x34/0x290 perfeventheaderinitid+0x48/0x60 perfoutputbegin+0x4a4/0x560 perfeventbpfoutput+0x161/0x1e0 perfiteratesbcpu+0x29e/0x340 perfiteratesb+0x4c/0xc0 perfeventbpfevent+0x194/0x2c0 _bpfprogput.constprop.0+0x55/0xf0 _clsbpfdeleteprog+0xea/0x120 [clsbpf] clsbpfdeleteprogwork+0x1c/0x30 [clsbpf] processonework+0x3c2/0x730 workerthread+0x93/0x650 kthread+0x1b8/0x210 retfrom_fork+0x1f/0x30
commit 267fb27352b6 ("perf: Reduce stack usage of perfoutputbegin()") use on-stack struct perfsampledata of the caller function.
However, perfeventbpfoutput uses incorrect parameter to convert small-sized data (struct perfbpfevent) into large-sized data (struct perfsampledata), which causes memory overwriting occurs in perfeventheaderinitid.
[ { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@eb81a2ed4f52be831c9fb879752d89645a312c13", "signature_version": "v1", "target": { "file": "kernel/events/core.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "254445780430449645384410318854309839004", "184442308791375844790572015158519714289", "28396133093214392136048714612804140968", "320480224483282798970307544267723406457" ] }, "deprecated": false, "signature_type": "Line", "id": "CVE-2023-53065-776f4bbf" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ac5f88642cb211152041f84a985309e9af4baf59", "signature_version": "v1", "target": { "file": "kernel/events/core.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "254445780430449645384410318854309839004", "184442308791375844790572015158519714289", "28396133093214392136048714612804140968", "320480224483282798970307544267723406457" ] }, "deprecated": false, "signature_type": "Line", "id": "CVE-2023-53065-9b9231e5" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ac5f88642cb211152041f84a985309e9af4baf59", "signature_version": "v1", "target": { "file": "kernel/events/core.c", "function": "perf_event_bpf_output" }, "digest": { "length": 406.0, "function_hash": "9100468503210064420834851030803704829" }, "deprecated": false, "signature_type": "Function", "id": "CVE-2023-53065-b202d766" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ddcf8320003638a06eb1e46412e045d0c5701575", "signature_version": "v1", "target": { "file": "kernel/events/core.c", "function": "perf_event_bpf_output" }, "digest": { "length": 406.0, "function_hash": "9100468503210064420834851030803704829" }, "deprecated": false, "signature_type": "Function", "id": "CVE-2023-53065-cacb8bc2" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ddcf8320003638a06eb1e46412e045d0c5701575", "signature_version": "v1", "target": { "file": "kernel/events/core.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "254445780430449645384410318854309839004", "184442308791375844790572015158519714289", "28396133093214392136048714612804140968", "320480224483282798970307544267723406457" ] }, "deprecated": false, "signature_type": "Line", "id": "CVE-2023-53065-f53b83b5" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@eb81a2ed4f52be831c9fb879752d89645a312c13", "signature_version": "v1", "target": { "file": "kernel/events/core.c", "function": "perf_event_bpf_output" }, "digest": { "length": 406.0, "function_hash": "9100468503210064420834851030803704829" }, "deprecated": false, "signature_type": "Function", "id": "CVE-2023-53065-fe83513a" } ]