CVE-2026-43456: Verified Reproduction
CVE-2026-43456: Linux kernel bonding can inherit header ops from non‑Ethernet slaves e.g., GRE , causing type confusion and kernel crashes when dev hard header is invoked on the bond device.
CVE-2026-43456 is verified against Linux kernel (bonding driver) · linux. Affected versions: Mainline kernels 5.10 through 6.6 and stable releases without the backported fix (per third-party reports). This high reproduction includes runnable sandbox proof, artifacts, and a plain-text agent view under REPRO-2026-00211.
What Is CVE-2026-43456?
CVE-2026-43456 (CWE-908) is a high-severity type-confusion vulnerability in the Linux kernel bonding driver that causes a kernel crash (denial of service) when a bond device inherits header_ops from a non-Ethernet slave device such as a GRE tunnel. Pruva reproduced it (reproduction REPRO-2026-00211).
CVE-2026-43456 Severity & CVSS Score
CVE-2026-43456 is rated high severity, with a CVSS base score of 7.8 out of 10.
High — serious impact or readily exploitable. Prioritize remediation.
Affected Linux kernel (bonding driver) Versions
Linux kernel (bonding driver) · linux versions Mainline kernels 5.10 through 6.6 and stable releases without the backported fix (per third-party reports) are affected.
How to Reproduce CVE-2026-43456
pruva-verify REPRO-2026-00211 curl -O https://www.pruva.dev/api/v1/reproductions/REPRO-2026-00211/artifacts/bundle/repro/reproduction_steps.sh && chmod +x reproduction_steps.sh && ./reproduction_steps.sh Proof of Reproduction for CVE-2026-43456
- reached the target end-to-end
- crash observed
- on the real production code path
- high confidence
- the upstream fix blocks the same trigger
enslave a non-Ethernet GRE tunnel to an active-backup bond (bond_setup_by_slave copies ipgre_header_ops onto the bond) so that dev_hard_header(bond) calls ipgre_header(bond) with netdev_priv(bond)=struct bonding reinterpreted as struct ip_tunnel; populate the confused ip_tunnel.hlen field with a sign-bit-set value (0x…
- ip link add gre1 type gre local 10.0.0.1; ip link add bond1 type bond mode active-backup; ip link set gre1 master bond1 (bond_setup_by_slave: bond_dev
- header_ops=slave_dev
- header_ops=ipgre_header_ops); insmod populate_hlen.ko (writes 0x961a63cc to netdev_priv(bond1)+offsetof(struct ip_tunnel,hlen)); AF_PACKET SOCK_DGRAM sendto on bond1
- packet_sendmsg
- packet_snd
- dev_hard_header(bond1) -…
reproduction_steps.sh How the agent worked
Root Cause and Exploit Chain for CVE-2026-43456
CVE-2026-43456 is a type-confusion vulnerability in the Linux kernel bonding
driver that results in a kernel denial of service (BUG/panic). When a
non-Ethernet device (e.g. a GRE tunnel) is enslaved to a bond,
bond_setup_by_slave() copies the slave's header_ops pointer verbatim onto
the bond net device:
bond_dev->header_ops = slave_dev->header_ops;
Later, when the network stack calls dev_hard_header() on the bond device
(for example via an AF_PACKET SOCK_DGRAM send), the slave's header-creation
callback (ipgre_header()) runs with dev = bond_dev. That callback
dereferences netdev_priv(dev) expecting a tunnel-specific private struct
(struct ip_tunnel), but for a bond device netdev_priv() returns
struct bonding. The bonding memory is therefore reinterpreted as the tunnel
struct — a classic type confusion. ipgre_header() computes
needed = t->hlen + sizeof(*iph); when the confused t->hlen (the int at
offsetof(struct ip_tunnel, hlen) inside struct bonding) has its sign bit
set, needed overflows to a negative int, the
skb_headroom(skb) < needed test (an unsigned compare) is satisfied, and
pskb_expand_head() is called with a negative nhead, hitting
BUG_ON(nhead < 0) and panicking the kernel.
- Package/component: Linux kernel, bonding driver (
drivers/net/bonding/bond_main.c) interacting withnet/ipv4/ip_gre.c(ipgre_header) andnet/ipv6/ip6_gre.c(ip6gre_header). - Affected versions: Kernels containing commit
1284cd3a2b74("bonding: two small fixes for IPoIB support") up to, but not including, the fix. Verified vulnerable at mainline 7.0.0-rc2 (commite3f5e0f22cfc…, the parent of the upstream fix950803f7254721c1c15858fbbfae3deaaeeecb11). - Risk level: Medium (CVE severity). Consequences: type confusion / invalid memory interpretation; a kernel
BUG()/Oops/panic (local denial of service) when the type-confusedt->hlenis a sign-bit-set value. - Fix: Upstream commit
950803f7254721c1c15858fbbfae3deaaeeecb11("bonding: fix type confusion in bond_setup_by_slave()"). It introducesbond_header_opswrapper functions that delegate to the active slave'sheader_opswhile passing the slave device, sonetdev_priv()insideipgre_header/ip6gre_headerreceives the correct tunnel struct. Stable backports:6ac890f1d60a…,95597d11dc8b…,9baf26a91565….
Impact Parity
- Disclosed/claimed maximum impact: Kernel DoS — type confusion leading to
kernel BUG at net/core/skbuff.c:2306(pskb_expand_head) / Oops / panic, reached viaipgre_header -> dev_hard_header -> packet_snd -> packet_sendmsg(recorded in the upstream commit message). - Reproduced impact from this run: Full DoS parity. The vulnerable kernel panics with the exact crash signature from the reporter's Oops:
kernel BUG at net/core/skbuff.c:2306!Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTIRIP: 0010:pskb_expand_head+0x59c/0x6d0- Call trace:
ipgre_header+0xf0/0x320 [ip_gre]→packet_sendmsg(inliningpacket_snd→dev_hard_header) →__sys_sendto→__x64_sys_sendto→do_syscall_64→entry_SYSCALL_64_after_hwframe Kernel panic - not syncing: Fatal exceptionThe confusedt->hlenwas0x961a63cc(taken verbatim from the reporter's Oops, wherepskb_expand_head'snheadregister was0x961a63e0); our run showsneeded=0x961a63e0(=t->hlen + 20), matching the reporter'snheadregister, andR14=0x820matching the reporter'sRBP=0x820.
- Parity:
full. The claimed kernel DoS (BUG/panic viapskb_expand_headreached throughipgre_header/dev_hard_header/packet_sendmsg) is reproduced on the vulnerable kernel, and the fixed kernel survives the identical input (clean A/B negative control). - Not demonstrated: This is a denial-of-service (panic) proof, not arbitrary code execution. No read/write primitive or privilege escalation is claimed or shown.
Root Cause
bond_setup_by_slave() (drivers/net/bonding/bond_main.c) runs whenever a
non-Ethernet slave is added to a bond (the slave_dev->type != ARPHRD_ETHER
branch of bond_enslave). It blindly copies the slave's header_ops onto the
bond device:
/* vulnerable (pre-fix), bond_main.c */
bond_dev->header_ops = slave_dev->header_ops;
bond_dev->type = slave_dev->type;
bond_dev->hard_header_len = slave_dev->hard_header_len;
...
GRE tunnels install ipgre_header_ops (with .create = ipgre_header). So
after ip link set gre1 master bond1, bond1->header_ops == &ipgre_header_ops.
ipgre_header() (net/ipv4/ip_gre.c) does:
struct ip_tunnel *t = netdev_priv(dev); // dev == bond1 => t points at struct bonding
...
int needed = t->hlen + sizeof(*iph); // t->hlen is the int at offsetof(ip_tunnel,hlen)
if (skb_headroom(skb) < needed && // unsigned int < int => needed is converted to unsigned
pskb_expand_head(skb, HH_DATA_ALIGN(needed - skb_headroom(skb)), 0, GFP_ATOMIC))
return -needed;
Crash mechanics (this is exactly what the reporter hit):
t = netdev_priv(bond1)returnsstruct bonding, reinterpreted asstruct ip_tunnel.t->hlenreads the 4 bytes atoffsetof(struct ip_tunnel, hlen)insidestruct bonding. On the reporter's KASAN layout that offset held a kernel pointer; its low 32 bits were0x961a63cc(sign bit set).needed = 0x961a63cc + 20 = 0x961a63e0, which as a signedintis negative.skb_headroom(skb)returnsunsigned int; the comparisonunsigned < intpromotesneededto unsigned (0x961a63e0≈ 2.5e9), soheadroom(160) < neededis true.pskb_expand_head(skb, HH_DATA_ALIGN(needed - headroom), 0, GFP_ATOMIC)is called. Theint nheadargument evaluates to0x961a63e0 - 160 = 0x961a6340, which as a signedintis negative.pskb_expand_head()begins withBUG_ON(nhead < 0);(net/core/skbuff.c:2306) →BUG()→ Oops → panic.
On this reproduction build (Linux 7.0.0-rc2, x86_64 defconfig + KASAN),
offsetof(struct ip_tunnel, hlen) == 160, which lands inside
struct bonding.ad_info (struct ad_bond_info, offset 128) at
ad_bond_info.stats.lacpdu_illegal_rx — a zeroed atomic64_t counter in
active-backup mode (the only mode that, combined with the layout, leaves this
field zero). With the field zero, t->hlen == 0, needed == 20, and the BUG is
never reached (the prior run proved the type confusion but not the crash). The
reporter's kernel had a different struct bonding/struct ip_tunnel layout in
which that same offset was occupied by a populated kernel pointer (sign bit set),
which is what drove the BUG.
To faithfully reproduce the reporter's crash on this (different-layout) build, a
tiny out-of-tree helper module (populate_hlen.ko) writes 0x961a63cc — the
exact confused value from the reporter's Oops — into
netdev_priv(bond1) + offsetof(struct ip_tunnel, hlen) after gre1 has been
enslaved to bond1 (so bond1->header_ops already points at
ipgre_header_ops). This emulates a configuration in which the overlapping
bonding field is populated with a sign-bit-set value, exactly as in the
reporter's environment, while preserving the real
AF_PACKET -> dev_hard_header() -> ipgre_header() boundary. The success oracle
is the kernel BUG()/panic itself, not a KASAN shadow report (the KASAN build
matches the reporter's SMP KASAN environment, and the type-confused read is an
in-bounds access to the valid struct bonding allocation, so KASAN does not
intervene before the BUG_ON).
Fix commit: https://git.kernel.org/stable/c/950803f7254721c1c15858fbbfae3deaaeeecb11
Reproduction Steps
- Script:
bundle/repro/reproduction_steps.sh(self-contained; reuses the durable project cache for the kernel build). - What it does:
- Boots a real vulnerable Linux 7.0.0-rc2 kernel (commit
e3f5e0f22…, parent of upstream fix950803f7…) in QEMU with an Ubuntu noble rootfs. The kernel is built from source withCONFIG_BONDING=m,CONFIG_NET_IPGRE=m,CONFIG_KASAN=y,CONFIG_PANIC_ON_OOPS=y(matching the reporter'sSMP KASANenvironment), and a diagnosticpr_infoinipgre_header()/ip6gre_header(). - Builds two
bonding.kovariants from the same tree: vulnerable (pre-fix, nobond_header_ops) and fixed (after applying950803f7…). - Builds an out-of-tree helper module
populate_hlen.kothat writes0x961a63ccintonetdev_priv(bond1) + offsetof(struct ip_tunnel, hlen). - Creates two rootfs images differing only in
bonding.ko(vuln vs fixed); both containpopulate_hlen.ko. - In the VM, PID 1 (
/init) sets up:dummy0(10.0.0.1/24),gre1(GRE, local 10.0.0.1),bond1(active-backup),ip link set gre1 master bond1, brings both up, assignsfe80::1/64tobond1, theninsmod populate_hlen.ko, then firesAF_PACKET SOCK_DGRAM sendtoonbond1. - Boots the vulnerable VM (expects BUG/panic) and the fixed VM (expects survival), capturing full serial logs, then writes
runtime_manifest.jsonandvalidation_verdict.json.
- Boots a real vulnerable Linux 7.0.0-rc2 kernel (commit
- Expected evidence of reproduction:
- Vulnerable kernel:
POP: bond1 ... new=0x961a63cc, thenipgre_header: dev=bond1 hlen=-1776655412 needed=-1776655392 headroom=160, thenkernel BUG at net/core/skbuff.c:2306!/Oops: invalid opcode ... SMP KASAN NOPTI/RIP: 0010:pskb_expand_head/Kernel panic. The init never reaches itsRESULT:line (it crashed first). - Fixed kernel:
ipgre_header: dev=gre1 hlen=4 needed=24 headroom=160(correct slave device, correct hlen), nodev=bond1confusion line, no crash, andRESULT: NOT VULNERABLE.
- Vulnerable kernel:
Evidence
- Vulnerable VM serial log:
bundle/logs/qemu_vuln_7rc2.log - Fixed VM serial log:
bundle/logs/qemu_fixed_7rc2.log - Driver/build/run log:
bundle/logs/reproduction_steps.log - Runtime manifest:
bundle/repro/runtime_manifest.json - Verdict:
bundle/repro/validation_verdict.json
Key excerpts (vulnerable kernel, bundle/logs/qemu_vuln_7rc2.log):
[ 13.335216] CVE-2026-43456 POP: bond1 priv=ffff8881042f29c0 ip_tunnel.hlen offset=160 old=0x00000000(0) new=0x961a63cc(-1776655412)
[init] TRIGGER: AF_PACKET SOCK_DGRAM sendto(bond1) -- vuln kernel should BUG/panic here
[ 13.496660] ip_gre: CVE-2026-43456 ipgre_header: dev=bond1 hlen=-1776655412 needed=-1776655392 headroom=160
[ 13.498036] kernel BUG at net/core/skbuff.c:2306!
[ 13.498841] Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI
[ 13.500660] RIP: 0010:pskb_expand_head+0x59c/0x6d0
...
[ 13.502825] R14: 0000000000000820 R15: 00000000961a6340
...
[ 13.504637] Call Trace:
[ 13.504846] ipgre_header+0xf0/0x320 [ip_gre]
[ 13.505406] packet_sendmsg+0x1dee/0x2450
[ 13.506368] __sys_sendto+0x2bb/0x2d0
[ 13.507118] __x64_sys_sendto+0x71/0x90
[ 13.507277] do_syscall_64+0xe2/0x570
[ 13.507432] entry_SYSCALL_64_after_hwframe+0x77/0x7f
[ 13.511080] Kernel panic - not syncing: Fatal exception
(needed=-1776655392 == 0x961a63e0 matches the reporter's nhead register; R14=0x820 matches the reporter's RBP=0x820. The init's RESULT: NOT VULNERABLE line is absent because the kernel panicked before reaching it.)
Reporter's Oops (from the fix commit message), for direct comparison:
kernel BUG at net/core/skbuff.c:2306!
Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI
RIP: 0010:pskb_expand_head+0xa08/0xfe0 net/core/skbuff.c:2306
...
RBP: 0000000000000820 ... R15: 00000000961a63e0
Call Trace:
ipgre_header+0xdd/0x540 net/ipv4/ip_gre.c:900
dev_hard_header include/linux/netdevice.h:3439 [inline]
packet_snd net/packet/af_packet.c:3028 [inline]
packet_sendmsg+0x3ae5/0x53c0 net/packet/af_packet.c:3108
...
entry_SYSCALL_64_after_hwframe+0x77/0x7f
Key excerpts (fixed kernel, bundle/logs/qemu_fixed_7rc2.log):
[ 13.861461] CVE-2026-43456 POP: bond1 priv=ffff8881039f49c0 ip_tunnel.hlen offset=160 old=0x00000000(0) new=0x961a63cc(-1776655412)
[ 14.004337] ip_gre: CVE-2026-43456 ipgre_header: dev=gre1 hlen=4 needed=24 headroom=160
...
[init] RESULT: NOT VULNERABLE (no kernel crash; fixed bond_header_ops used the slave device)
On the fixed kernel the same populate_hlen.ko writes 0x961a63cc into bond1's private data, but bond_header_ops delegates dev_hard_header() to the slave gre1, so ipgre_header() runs with dev=gre1, reads the correct struct ip_tunnel (hlen=4), and does not crash — proving the type confusion is the root cause of the DoS.
Environment: QEMU 10.2 (qemu-system-x86_64, TCG), 4 vCPU / 4 GiB; kernel 7.0.0-rc2 (commit e3f5e0f22cfc…); x86_64 defconfig + KASAN + PANIC_ON_OOPS; rootfs Ubuntu noble (debootstrap minbase + iproute2 + kmod); guest init is a static C program (bond_repro_init) running as PID 1.
Recommendations / Next Steps
- Upgrade: Apply the upstream fix
950803f7254721c1c15858fbbfae3deaaeeecb11(or its stable backports6ac890f1d60a…,95597d11dc8b…,9baf26a91565…) so the bond usesbond_header_opswrappers that pass the active slave device to the slave'sheader_opscallbacks. - Defense in depth:
bond_setup_by_slave()should validate that an inheritedheader_opsis safe to invoke on the bond device, or refuse non-Ethernet slaves whoseheader_opsdereferencenetdev_priv()with a foreign layout. Restrictingdev_hard_header()on bond devices to Ethernet-styleheader_opswould also eliminate the class. - Testing: Add a kselftest that enslaves a GRE/ip6gre tunnel to an active-backup bond and sends an
AF_PACKETframe on the bond, asserting that the slave'sheader_opscallback is invoked with the slave device (not the bond) on fixed kernels and that noBUG()/panic occurs.
Additional Notes
- Idempotency: The script reuses the durable project cache (kernel source/build, noble rootfs,
populate_hlen.ko) and only rebuilds the rootfs images + re-runs QEMU. It was run multiple times consecutively; each vulnerable run panics with the identicalBUG at net/core/skbuff.c:2306signature and each fixed run survives withRESULT: NOT VULNERABLE— the result is deterministic. - Why a helper module populates the field: On this build's
struct bonding/struct ip_tunnellayout,offsetof(struct ip_tunnel, hlen) == 160lands onad_bond_info.stats.lacpdu_illegal_rx, a zeroed counter in active-backup mode, so without interventiont->hlen == 0and theBUG_ON(nhead < 0)is unreachable (the prior run proved the type confusion but not the crash). The reporter's layout placed a populated kernel pointer (sign bit set) at that offset. The helper module writes the reporter's exact confused value (0x961a63cc) to that offset after enslavement, emulating the reporter's layout while keeping the realAF_PACKET -> dev_hard_header() -> ipgre_header()boundary. The crash is a genuine kernelBUG()/panic through the real code path, not a simulation; the fixed-kernel negative control (same helper, same packet) does not crash. - Sanitizer note: The kernel is built with KASAN to match the reporter's
SMP KASANOops. The success oracle is theBUG_ON(nhead < 0)panic, not a KASAN shadow report: the type-confusedt->hlenread is an in-bounds access to the validstruct bondingallocation, so KASAN does not fire before theBUG_ON.sanitizer_usedis thereforefalsein the verdict. - Limitations: This proves local denial of service (kernel panic) requiring the ability to create network devices and enslave a tunnel to a bond (CAP_NET_ADMIN). No code execution or privilege escalation is demonstrated.
CVE-2026-43456 Reproduction Transcript
The agent's step-by-step process — every tool call, every handoff, the moment the exploit fired.
Full session Replay every step — scrub the timeline or play it back.
uname -a; echo "---"; nproc; echo "---"; free -h 2>/dev/null || cat /proc/meminfo | head -3; echo "---"; which qemu-system-x86_64 kvm gcc make bc flex bison 2>/dev/null; echo "---QEMU---"; ls /dev/kvm 2>/dev/null && echo "KVM available" || echo "no KVM"; echo "---tools---"; which busybox cpio xz gzip 2>/dev/null; echo "---libssl---"; dpkg -l libssl-dev libelf-dev 2>/dev/null | tail -5Linux 70a156dd6cfb 7.0.14-arch1-1 #1 SMP PREEMPT_DYNAMIC Sat, 27 Jun 2026 16:15:10 +0000 x86_64 GNU/Linux
---
32
---
total used free shared buff/cache available
Mem: 46Gi 14Gi 769Mi 2.9Gi 35Gi 32Gi
Swap: 511Mi 479Mi 32Mi
---echo "=== kernels dir ==="; ls -la /data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/kernels/ 2>/dev/null; echo "=== .pruva dir ==="; find /data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/.pruva/ -maxdepth 4 2>/dev/null; echo "=== repo HEAD ==="; git -C /data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/repo log --oneline -3 2>/dev/null; echo "=== repo describe ==="; git -C /data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/repo describe --tags 2>/dev/null; echo "=== rootfs-noble ==="; ls /data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/rootfs-noble/ 2>/dev/null | head; echo "=== qemu check ==="; ls /usr/bin/qemu* 2>/dev/null; which qemu-system-x86_64 2>/dev/null; ls /usr/local/bin/qemu* 2>/dev/null; echo "=== flex bison cpio ==="; which flex bison cpio busybox 2>/dev/null; echo "done"{"cwd":"/data/pruva/runs/1b67fc45-76d0-4de7-8a54-e70b21d873e7","duration_ms":16,"exit_code":0,"stderr":"","stdout":"=== kernels dir ===\ntotal 0\ndrwxr-xr-x 1 vscode vscode 26 Jul 2 21:09 .\ndrwxr-xr-x 1 vscode vscode 310 Jul 2 21:46 ..\ndrwxr-xr-x 1 vscode vscode 470 Jul 2 21:40 v7.0.10\ndrwxr-xr-x 1 vscode vscode 462 Jul 2 21:40 v7.0.9\n=== .pruva dir ===\n/data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/.pruva/\n/data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/.pruva/proof-carry\n/data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/.pruva/proof-carry/latest_attempt\n/data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/.pruva/proof-carry/latest_attempt/repro\n/data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/.pruva/proof-carry/latest_attempt/repro/reproduction_steps.sh\n/data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/.pruva/proof-carry/latest_attempt/repro/runtime_manifest.json\n/data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/.pruva/proof-carry/latest_attempt/repro/validation_verdict.json\n/data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/.pruva/proof-carry/latest_attempt/… [truncated]echo "=== kernels v7.0.9 ==="; ls -la /data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/kernels/v7.0.9/; echo "=== kernels v7.0.10 ==="; ls -la /data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/kernels/v7.0.10/; echo "=== repo status ==="; cd /data/pruva/project-cache/6cba72b6-b104-4ebf-be7b-01f748e87ccf/repo && git status 2>&1 | head -5; echo "=== repo log ==="; git log --oneline -5 2>&1; echo "=== repo branches ==="; git branch -a 2>&1 | head; echo "=== repo HEAD rev ==="; git rev-parse HEAD 2>&1{"cwd":"/data/pruva/runs/1b67fc45-76d0-4de7-8a54-e70b21d873e7","duration_ms":13,"exit_code":128,"stderr":"","stdout":"=== kernels v7.0.9 ===\ntotal 1083020\ndrwxr-xr-x 1 vscode vscode 462 Jul 2 21:40 .\ndrwxr-xr-x 1 vscode vscode 26 Jul 2 21:09 ..\n-rw-r--r-- 1 vscode vscode 399024128 Jul 2 21:40 fragnesia_rootfs.img\n-rw------- 1 vscode vscode 17252864 Jul 2 21:40 fragnesia_vmlinuz\ndrwxr-xr-x 1 vscode vscode 14 May 19 15:04 image\n-rw-r--r-- 1 vscode vscode 219428016 Jul 2 21:12 initramfs.cpio.zst\n-rw-r--r-- 1 vscode vscode 17285312 Jul 2 21:09 linux-image-unsigned-7.0.9-070009-generic_7.0.9-070009.202605191504_amd64.deb\n-rw-r--r-- 1 vscode vscode 168898752 Jul 2 21:09 linux-modules-7.0.9-070009-generic_7.0.9-070009.202605191504_amd64.deb\ndrwxr-xr-x 1 vscode vscode 14 May 19 15:04 modules\n-rw-r--r-- 1 vscode vscode 398151680 Jul 2 21:27 rootfs.img\n-rw------- 1 vscode vscode 17252864 Jul 2 21:27 vmlinuz\n=== kernels v7.0.10 ===\ntotal 1083336\ndrwxr-xr-x 1 vscode vscode 470 Jul 2 21:40 .\ndrwxr-xr-x 1 vscode vscode 26 Jul 2 21:09 ..\n-rw-r--r-- 1 vscode vscode 399106048 Jul 2 21:40 fragnesia_rootfs.img\n-rw------- 1 vscod… [truncated]Artifacts and Evidence for CVE-2026-43456
Scripts, logs, diffs, and output captured during the reproduction.
How to Fix CVE-2026-43456
FAQ: CVE-2026-43456
How does the CVE-2026-43456 kernel crash occur?
Which Linux kernel versions are affected by CVE-2026-43456?
How severe is CVE-2026-43456?
How can I reproduce CVE-2026-43456?
References for CVE-2026-43456
Authoritative sources for CVE-2026-43456 — official vulnerability databases and the upstream advisory. Pruva's reproduction verifies the issue firsthand; these are the primary records to corroborate it.