In the Linux kernel, the following vulnerability has been resolved:
bpf, cpumap: Handle skb as well when clean up ptr_ring
The following warning was reported when running xdpredirectcpu with both skb-mode and stress-mode enabled:
------------[ cut here ]------------ Incorrect XDP memory type (-2128176192) usage WARNING: CPU: 7 PID: 1442 at net/core/xdp.c:405 Modules linked in: CPU: 7 PID: 1442 Comm: kworker/7:0 Tainted: G 6.5.0-rc2+ #1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996) Workqueue: events cpumapentryfree RIP: 0010:xdpreturn+0x1e4/0x4a0 ...... Call Trace: <TASK> ? showregs+0x65/0x70 ? _warn+0xa5/0x240 ? _xdpreturn+0x1e4/0x4a0 ...... xdpreturnframe+0x4d/0x150 _cpumapentryfree+0xf9/0x230 processonework+0x6b0/0xb80 workerthread+0x96/0x720 kthread+0x1a5/0x1f0 retfromfork+0x3a/0x70 retfromforkasm+0x1b/0x30 </TASK>
The reason for the warning is twofold. One is due to the kthread cpumapkthreadrun() is stopped prematurely. Another one is _cpumapringcleanup() doesn't handle skb mode and treats skbs in ptrring as XDP frames.
Prematurely-stopped kthread will be fixed by the preceding patch and ptrring will be empty when _cpumapringcleanup() is called. But as the comments in _cpumapringcleanup() said, handling and freeing skbs in ptrring as well to "catch any broken behaviour gracefully".
{
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/53xxx/CVE-2023-53660.json"
}[
{
"digest": {
"length": 139.0,
"function_hash": "259456536550880052884432290153294067242"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cbd000451885801e9bbfd9cf7a7946806a85cb5e",
"deprecated": false,
"id": "CVE-2023-53660-0b4b2b65",
"signature_type": "Function",
"target": {
"function": "__cpu_map_ring_cleanup",
"file": "kernel/bpf/cpumap.c"
},
"signature_version": "v1"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"191875032485332689162434363438638062432",
"274940885888251738694720605729428373423",
"140050726261103514448039083454902477440",
"66348907860345470779220564599206990071",
"34562003896314924783524595729344086829",
"96199572004045799862795912423192979201",
"144540366666534010513091289080061771014"
]
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@937345720d18f1ad006ba3d5dcb3fa121037b8a2",
"deprecated": false,
"id": "CVE-2023-53660-36c36c3c",
"signature_type": "Line",
"target": {
"file": "kernel/bpf/cpumap.c"
},
"signature_version": "v1"
},
{
"digest": {
"length": 139.0,
"function_hash": "259456536550880052884432290153294067242"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b58d34068fd9f96bfc7d389988dfaf9a92a8fe00",
"deprecated": false,
"id": "CVE-2023-53660-79deb896",
"signature_type": "Function",
"target": {
"function": "__cpu_map_ring_cleanup",
"file": "kernel/bpf/cpumap.c"
},
"signature_version": "v1"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"191875032485332689162434363438638062432",
"274940885888251738694720605729428373423",
"140050726261103514448039083454902477440",
"66348907860345470779220564599206990071",
"34562003896314924783524595729344086829",
"96199572004045799862795912423192979201",
"144540366666534010513091289080061771014"
]
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7c62b75cd1a792e14b037fa4f61f9b18914e7de1",
"deprecated": false,
"id": "CVE-2023-53660-86799bf3",
"signature_type": "Line",
"target": {
"file": "kernel/bpf/cpumap.c"
},
"signature_version": "v1"
},
{
"digest": {
"length": 139.0,
"function_hash": "259456536550880052884432290153294067242"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7c62b75cd1a792e14b037fa4f61f9b18914e7de1",
"deprecated": false,
"id": "CVE-2023-53660-8b1a80a7",
"signature_type": "Function",
"target": {
"function": "__cpu_map_ring_cleanup",
"file": "kernel/bpf/cpumap.c"
},
"signature_version": "v1"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"191875032485332689162434363438638062432",
"274940885888251738694720605729428373423",
"140050726261103514448039083454902477440",
"66348907860345470779220564599206990071",
"34562003896314924783524595729344086829",
"96199572004045799862795912423192979201",
"144540366666534010513091289080061771014"
]
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cbd000451885801e9bbfd9cf7a7946806a85cb5e",
"deprecated": false,
"id": "CVE-2023-53660-94c23496",
"signature_type": "Line",
"target": {
"file": "kernel/bpf/cpumap.c"
},
"signature_version": "v1"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"191875032485332689162434363438638062432",
"274940885888251738694720605729428373423",
"140050726261103514448039083454902477440",
"66348907860345470779220564599206990071",
"34562003896314924783524595729344086829",
"96199572004045799862795912423192979201",
"144540366666534010513091289080061771014"
]
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b58d34068fd9f96bfc7d389988dfaf9a92a8fe00",
"deprecated": false,
"id": "CVE-2023-53660-a0cded29",
"signature_type": "Line",
"target": {
"file": "kernel/bpf/cpumap.c"
},
"signature_version": "v1"
},
{
"digest": {
"length": 139.0,
"function_hash": "259456536550880052884432290153294067242"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@937345720d18f1ad006ba3d5dcb3fa121037b8a2",
"deprecated": false,
"id": "CVE-2023-53660-be7c2265",
"signature_type": "Function",
"target": {
"function": "__cpu_map_ring_cleanup",
"file": "kernel/bpf/cpumap.c"
},
"signature_version": "v1"
}
]
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-53660.json"