bpf: Reset register ID for BPF_END value tracking
In the Linux kernel, the following vulnerability has been resolved: bpf: Reset register ID for BPF_END value tracking When a register undergoes a BPF_END (byte swap) operation, its scalar value is mutated in-place. If this register previously shared a scalar ID with another register (e.g., after an `r1 = r0` assignment), this tie must be broken. Currently, the verifier misses resetting `dst_reg->id` to 0 for BPF_END. Consequently, if a conditional jump checks the swapped register, the verifier incorrectly propagates the learned bounds to the linked register, leading to false confidence in the linked register's value and potentially allowing out-of-bounds memory accesses. Fix this by explicitly resetting `dst_reg->id` to 0 in the BPF_END case to break the scalar tie, similar to how BPF_NEG handles it via `__mark_reg_known`.
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 6.18.21, 6.19.11
- CVEs
- CVE-2026-43070
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 13:27 UTC · Revision 1
Source evidence
bpf: Reset register ID for BPF_END value tracking
core-osv · Original sourcePublished 5 May 2026, 15:23 UTC
In the Linux kernel, the following vulnerability has been resolved: bpf: Reset register ID for BPF_END value tracking When a register undergoes a BPF_END (byte swap) operation, its scalar value is mutated in-place. If this register previously shared a scalar ID with another register (e.g., after an `r1 = r0` assignment), this tie must be broken. Currently, the verifier misses resetting `dst_reg->id` to 0 for BPF_END. Consequently, if a conditional jump checks the swapped register, the verifier incorrectly propagates the learned bounds to the linked register, leading to false confidence in the linked register's value and potentially allowing out-of-bounds memory accesses. Fix this by explicitly resetting `dst_reg->id` to 0 in the BPF_END case to break the scalar tie, similar to how BPF_NEG handles it via `__mark_reg_known`.
osv:CVE-2026-43070
Kernel
Fixed versions: 6.18.21, 6.19.11
Complete source record
{
"id": "b82c318e953da1ead278b0fc9108bc66ecd93a4f43622ad90e36facb24ea647c",
"url": "https://osv.dev/vulnerability/CVE-2026-43070",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "bpf: Reset register ID for BPF_END value tracking",
"summary": "In the Linux kernel, the following vulnerability has been resolved: bpf: Reset register ID for BPF_END value tracking When a register undergoes a BPF_END (byte swap) operation, its scalar value is mutated in-place. If this register previously shared a scalar ID with another register (e.g., after an `r1 = r0` assignment), this tie must be broken. Currently, the verifier misses resetting `dst_reg->id` to 0 for BPF_END. Consequently, if a conditional jump checks the swapped register, the verifier incorrectly propagates the learned bounds to the linked register, leading to false confidence in the linked register's value and potentially allowing out-of-bounds memory accesses. Fix this by explicitly resetting `dst_reg->id` to 0 in the BPF_END case to break the scalar tie, similar to how BPF_NEG handles it via `__mark_reg_known`.",
"evidence": "osv:CVE-2026-43070",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "6.18.21",
"evidence": "/affected/1/ranges"
},
{
"value": "6.19.11",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "high",
"structured": {
"id": "CVE-2026-43070",
"aliases": [
"CVE-2026-43070"
],
"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": "4c03342e5ac532fb34d13a7b51dd7261dfc48963"
},
{
"fixed": "a17443af874229408ce6b78e2c8a2b5adeb4b7d8"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "d00ce96623a69a100ad79675d0e85fda3c50d89b"
},
{
"fixed": "0d15c3611a2cc5d08993545d4032055ae10ae2c1"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "9d21199842247ab05c675fb9b6c6ca393a5c0024"
},
{
"fixed": "a3125bc01884431d30d731461634c8295b6f0529"
}
]
}
],
"versions": [
"v6.18.20",
"v6.18.19",
"v6.18.18",
"v6.18.17",
"v6.19.10",
"v6.19.9",
"v6.19.8",
"v6.19.7"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-43070.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.18.17"
},
{
"fixed": "6.18.21"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.19.7"
},
{
"fixed": "6.19.11"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-43070.json"
}
}
],
"modified": "2026-10-28T02:30:36.040922531Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/0d15c3611a2cc5d08993545d4032055ae10ae2c1",
"https://git.kernel.org/stable/c/a17443af874229408ce6b78e2c8a2b5adeb4b7d8",
"https://git.kernel.org/stable/c/a3125bc01884431d30d731461634c8295b6f0529",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/43xxx/CVE-2026-43070.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-43070",
"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/43xxx/CVE-2026-43070.json"
}
},
"related_cves": [
{
"value": "CVE-2026-43070",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 503109,
"published_at": "2026-05-05T15:23:28.819+00:00"
}