bpf, sockmap: Fix cork use-after-free in tcp_bpf_sendmsg()
In the Linux kernel, the following vulnerability has been resolved: bpf, sockmap: Fix cork use-after-free in tcp_bpf_sendmsg() tcp_bpf_sendmsg() keeps msg_tx across sk_stream_wait_memory(), which drops and reacquires the socket lock. Its error path tries to decide whether msg_tx names the local temporary message by comparing it with the current value of psock->cork. This comparison is unsafe when two threads send on the same socket: Thread A Thread B msg_tx = psock->cork sk_msg_alloc() fails sk_stream_wait_memory() releases the socket lock acquires the socket lock completes the cork psock->cork = NULL frees the cork reacquires the socket lock msg_tx != psock->cork sk_msg_free(msg_tx) The stale cork is therefore mistaken for the local temporary message and freed again. KASAN reported: BUG: KASAN: slab-use-after-free in sk_msg_free+0x49/0x50 Read of size 4 at addr ffff88810c908800 by task poc/90 Call Trace: sk_msg_free+0x49/0x50 tcp_bpf_sendmsg+0x14f5/0x1cc0 __sys_sendto+0x32c/0x3a0 __x64_sys_sendto+0xdb/0x1b0 Allocated by task 89: __kasan_kmalloc+0x8f/0xa0 tcp_bpf_sendmsg+0x16b3/0x1cc0 Freed by task 91: __kasan_slab_free+0x43/0x70 kfree+0x131/0x3c0 tcp_bpf_sendmsg+0xec3/0x1cc0 msg_tx can only name the stack-local tmp or the shared cork. Check for tmp directly so a changed psock->cork cannot turn a shared message into an apparent local one.
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 5.10.265, 5.15.216, 6.1.183, 6.12.101, 6.18.42, 6.6.148, 7.1.6
- CVEs
- CVE-2026-68284
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 21:31 UTC · Revision 1
Source evidence
bpf, sockmap: Fix cork use-after-free in tcp_bpf_sendmsg()
core-osv · Original sourcePublished 10 Aug 2026, 12:02 UTC
In the Linux kernel, the following vulnerability has been resolved: bpf, sockmap: Fix cork use-after-free in tcp_bpf_sendmsg() tcp_bpf_sendmsg() keeps msg_tx across sk_stream_wait_memory(), which drops and reacquires the socket lock. Its error path tries to decide whether msg_tx names the local temporary message by comparing it with the current value of psock->cork. This comparison is unsafe when two threads send on the same socket: Thread A Thread B msg_tx = psock->cork sk_msg_alloc() fails sk_stream_wait_memory() releases the socket lock acquires the socket lock completes the cork psock->cork = NULL frees the cork reacquires the socket lock msg_tx != psock->cork sk_msg_free(msg_tx) The stale cork is therefore mistaken for the local temporary message and freed again. KASAN reported: BUG: KASAN: slab-use-after-free in sk_msg_free+0x49/0x50 Read of size 4 at addr ffff88810c908800 by task poc/90 Call Trace: sk_msg_free+0x49/0x50 tcp_bpf_sendmsg+0x14f5/0x1cc0 __sys_sendto+0x32c/0x3a0 __x64_sys_sendto+0xdb/0x1b0 Allocated by task 89: __kasan_kmalloc+0x8f/0xa0 tcp_bpf_sendmsg+0x16b3/0x1cc0 Freed by task 91: __kasan_slab_free+0x43/0x70 kfree+0x131/0x3c0 tcp_bpf_sendmsg+0xec3/0x1cc0 msg_tx can only name the stack-local tmp or the shared cork. Check for tmp directly so a changed psock->cork cannot turn a shared message into an apparent local one.
osv:CVE-2026-68284
Kernel
Fixed versions: 5.10.265, 5.15.216, 6.1.183, 6.6.148, 6.12.101, 6.18.42, 7.1.6
Complete source record
{
"id": "06d8e8c1e4218a0acfe2b5b774a57faa0419d74bb040f694280039016be23108",
"url": "https://osv.dev/vulnerability/CVE-2026-68284",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "bpf, sockmap: Fix cork use-after-free in tcp_bpf_sendmsg()",
"summary": "In the Linux kernel, the following vulnerability has been resolved: bpf, sockmap: Fix cork use-after-free in tcp_bpf_sendmsg() tcp_bpf_sendmsg() keeps msg_tx across sk_stream_wait_memory(), which drops and reacquires the socket lock. Its error path tries to decide whether msg_tx names the local temporary message by comparing it with the current value of psock->cork. This comparison is unsafe when two threads send on the same socket: Thread A Thread B msg_tx = psock->cork sk_msg_alloc() fails sk_stream_wait_memory() releases the socket lock acquires the socket lock completes the cork psock->cork = NULL frees the cork reacquires the socket lock msg_tx != psock->cork sk_msg_free(msg_tx) The stale cork is therefore mistaken for the local temporary message and freed again. KASAN reported: BUG: KASAN: slab-use-after-free in sk_msg_free+0x49/0x50 Read of size 4 at addr ffff88810c908800 by task poc/90 Call Trace: sk_msg_free+0x49/0x50 tcp_bpf_sendmsg+0x14f5/0x1cc0 __sys_sendto+0x32c/0x3a0 __x64_sys_sendto+0xdb/0x1b0 Allocated by task 89: __kasan_kmalloc+0x8f/0xa0 tcp_bpf_sendmsg+0x16b3/0x1cc0 Freed by task 91: __kasan_slab_free+0x43/0x70 kfree+0x131/0x3c0 tcp_bpf_sendmsg+0xec3/0x1cc0 msg_tx can only name the stack-local tmp or the shared cork. Check for tmp directly so a changed psock->cork cannot turn a shared message into an apparent local one.",
"evidence": "osv:CVE-2026-68284",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "5.10.265",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.216",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.183",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.148",
"evidence": "/affected/1/ranges"
},
{
"value": "6.12.101",
"evidence": "/affected/1/ranges"
},
{
"value": "6.18.42",
"evidence": "/affected/1/ranges"
},
{
"value": "7.1.6",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "high",
"structured": {
"id": "CVE-2026-68284",
"aliases": [
"CVE-2026-68284"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "604326b41a6fb9b4a78b6179335decee0365cd8c"
},
{
"fixed": "0688e6fe599d2d39147ae9ece97944c6e1815ebf"
},
{
"fixed": "b2bcbeabfd843d47468fa095b1bd08ddb90cf616"
},
{
"fixed": "54be47e7cbb936429c3bbdfc526ea943954aaf80"
},
{
"fixed": "ee762f684eefa59de34d9ed93cab08336e834f47"
},
{
"fixed": "cde4d6bcd9b73073c66498f6723c7b364c4dbc18"
},
{
"fixed": "786d690257ec7a0c839f8710456e444ce3f1348b"
},
{
"fixed": "752b1159ed5d0c48fe169a3721b96660a9822aa1"
},
{
"fixed": "2d66a033864e27ab8d5e44cb36f31d9d2413bee4"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-68284.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "4.20.0"
},
{
"fixed": "5.10.265"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.216"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.183"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.6.148"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.12.101"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.13.0"
},
{
"fixed": "6.18.42"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.19.0"
},
{
"fixed": "7.1.6"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-68284.json"
}
}
],
"modified": "2026-10-28T02:30:39.820776652Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/0688e6fe599d2d39147ae9ece97944c6e1815ebf",
"https://git.kernel.org/stable/c/2d66a033864e27ab8d5e44cb36f31d9d2413bee4",
"https://git.kernel.org/stable/c/54be47e7cbb936429c3bbdfc526ea943954aaf80",
"https://git.kernel.org/stable/c/752b1159ed5d0c48fe169a3721b96660a9822aa1",
"https://git.kernel.org/stable/c/786d690257ec7a0c839f8710456e444ce3f1348b",
"https://git.kernel.org/stable/c/b2bcbeabfd843d47468fa095b1bd08ddb90cf616",
"https://git.kernel.org/stable/c/cde4d6bcd9b73073c66498f6723c7b364c4dbc18",
"https://git.kernel.org/stable/c/ee762f684eefa59de34d9ed93cab08336e834f47",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/68xxx/CVE-2026-68284.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-68284",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/68xxx/CVE-2026-68284.json"
}
},
"related_cves": [
{
"value": "CVE-2026-68284",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 507318,
"published_at": "2026-08-10T12:02:16.572+00:00"
}