In the Linux kernel, the following vulnerability has been resolved:
can: kvaser_pciefd: refine error prone echo_skb_max handling logic
echo_skb_max should define the supported upper limit of echo_skb[]
allocated inside the netdevice's priv. The corresponding size value
provided by this driver to alloc_candev() is KVASER_PCIEFD_CAN_TX_MAX_COUNT
which is 17.
But later echo_skb_max is rounded up to the nearest power of two (for the
max case, that would be 32) and the tx/ack indices calculated further
during tx/rx may exceed the upper array boundary. Kasan reported this for
the ack case inside kvaser_pciefd_handle_ack_packet(), though the xmit
function has actually caught the same thing earlier.
BUG: KASAN: slab-out-of-bounds in kvaser_pciefd_handle_ack_packet+0x2d7/0x92a drivers/net/can/kvaser_pciefd.c:1528
Read of size 8 at addr ffff888105e4f078 by task swapper/4/0
CPU: 4 UID: 0 PID: 0 Comm: swapper/4 Not tainted 6.15.0 #12 PREEMPT(voluntary)
Call Trace:
<IRQ>
dump_stack_lvl lib/dump_stack.c:122
print_report mm/kasan/report.c:521
kasan_report mm/kasan/report.c:634
kvaser_pciefd_handle_ack_packet drivers/net/can/kvaser_pciefd.c:1528
kvaser_pciefd_read_packet drivers/net/can/kvaser_pciefd.c:1605
kvaser_pciefd_read_buffer drivers/net/can/kvaser_pciefd.c:1656
kvaser_pciefd_receive_irq drivers/net/can/kvaser_pciefd.c:1684
kvaser_pciefd_irq_handler drivers/net/can/kvaser_pciefd.c:1733
__handle_irq_event_percpu kernel/irq/handle.c:158
handle_irq_event kernel/irq/handle.c:210
handle_edge_irq kernel/irq/chip.c:833
__common_interrupt arch/x86/kernel/irq.c:296
common_interrupt arch/x86/kernel/irq.c:286
</IRQ>
Tx max count definitely matters for kvaser_pciefd_tx_avail(), but for seq
numbers' generation that's not the case - we're free to calculate them as
would be more convenient, not taking tx max count into account. The only
downside is that the size of echo_skb[] should correspond to the max seq
number (not tx max count), so in some situations a bit more memory would
be consumed than could be.
Thus make the size of the underlying echo_skb[] sufficient for the rounded
max tx value.
Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
Security readout for executives and security teams
Plain-English summary
A Linux CAN driver can access memory beyond an allocated buffer because it supports sequence indexes up to 32 while allocating only 17 entries. The issue affects systems using the Kvaser PCIe CAN driver on vulnerable kernels. It requires local access according to the supplied CVSS vector and is not documented as remotely exploitable.
Executive priority
Prioritize affected industrial, automotive, laboratory, or operational systems where CAN disruption or kernel compromise would have material consequences. Patch through normal emergency kernel procedures after confirming driver use. Systems without the Kvaser PCIe CAN driver or hardware are unlikely to be exposed, but version and backport status should be verified.
Technical view
In kvaser_pciefd, echo_skb[] was allocated for 17 entries, but echo_skb_max could be rounded to 32. Transmission or acknowledgement indexes could consequently exceed the array boundary. KASAN observed an out-of-bounds read in kvaser_pciefd_handle_ack_packet during interrupt processing. The upstream fix sizes echo_skb[] for the rounded maximum sequence value.
Likely exposure
Exposure is limited to Linux systems running an affected kernel and actively using the kvaser_pciefd driver for Kvaser PCIe CAN hardware. The supplied version data includes upstream versions and commits but does not reliably identify distribution backports. Internet-facing status alone is not a useful exposure indicator because the supplied CVSS vector specifies local access.
Exploitation context
The supplied score is CVSS 3.1 7.8 with local, low-complexity, low-privilege access and potential high confidentiality, integrity, and availability impact. The flaw was found by Syzkaller and reproduced with KASAN. It is not in KEV, and the bundle provides no evidence of active exploitation or a public weaponized exploit.
Researcher notes
The core invariant failure is a mismatch between the 17-entry allocation and a sequence-number limit rounded to 32. KASAN demonstrated an eight-byte out-of-bounds read in the acknowledgement path; the transmission path reportedly detects the same condition earlier. Sources describe the correction as increasing the underlying echo array. They do not establish practical privilege escalation or attacker-controlled exploitation.
Mitigation direction
Install a vendor-supported kernel containing the applicable upstream stable fix.
Confirm distribution backports rather than relying only on the displayed kernel version.
If patching is delayed, consult vendor guidance for supported temporary risk reduction.
Assess whether affected Kvaser PCIe CAN hardware can be safely removed from service.
Validation and detection
Inventory systems using the kvaser_pciefd driver and Kvaser PCIe CAN hardware.
Map kernel packages to vendor advisories and backported fix commits.
Confirm the applicable stable fix is present in deployed kernel source or package metadata.
Review kernel and KASAN logs for kvaser_pciefd out-of-bounds reports or crashes.
Exercise normal CAN transmission and acknowledgement handling in a controlled test environment after updating.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2025-38224 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
0ADP providers
4Source links
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.