<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-28T20:48:02.517374+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2025-39985</id>
    <title>CVE-2025-39985 — can: mcba_usb: populate ndo_change_mtu() to prevent buffer overflow</title>
    <updated>2026-09-28T20:48:02.543518+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Linux</p>
<p>In the Linux kernel, the following vulnerability has been resolved:</p>
<p>can: mcba_usb: populate ndo_change_mtu() to prevent buffer overflow</p>
<p>Sending an PF_PACKET allows to bypass the CAN framework logic and to
directly reach the xmit() function of a CAN driver. The only check
which is performed by the PF_PACKET framework is to make sure that
skb-&gt;len fits the interface's MTU.</p>
<p>Unfortunately, because the mcba_usb driver does not populate its
net_device_ops-&gt;ndo_change_mtu(), it is possible for an attacker to
configure an invalid MTU by doing, for example:</p>
<p>$ ip link set can0 mtu 9999</p>
<p>After doing so, the attacker could open a PF_PACKET socket using the
ETH_P_CANXL protocol:</p>
<p>socket(PF_PACKET, SOCK_RAW, htons(ETH_P_CANXL))</p>
<p>to inject a malicious CAN XL frames. For example:</p>
<p>struct canxl_frame frame = {
		.flags = 0xff,
		.len = 2048,
	};</p>
<p>The CAN drivers' xmit() function are calling can_dev_dropped_skb() to
check that the skb is valid, unfortunately under above conditions, the
malicious packet is able to go through can_dev_dropped_skb() checks:</p>
<p>1. the skb-&gt;protocol is set to ETH_P_CANXL which is valid (the
     function does not check the actual device capabilities).</p>
<p>2. the length is a valid CAN XL length.</p>
<p>And so, mcba_usb_start_xmit() receives a CAN XL frame which it is not
able to correctly handle and will thus misinterpret it as a CAN frame.</p>
<p>This can result in a buffer overflow. The driver will consume cf-&gt;len
as-is with no further checks on these lines:</p>
<p>usb_msg.…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2025-39985"/>
  </entry>
</feed>
