{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-64540","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2026-07-19T15:36:31.795Z","datePublished":"2026-07-27T20:10:33.905Z","dateUpdated":"2026-08-17T04:57:16.687Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-17T04:57:16.687Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nusbnet: gl620a: fix out-of-bounds read in genelink_rx_fixup()\n\ngenelink_rx_fixup() splits an aggregated RX frame into its individual\npackets, using a per-packet length taken from device-supplied data. That\nlength is only bounded by GL_MAX_PACKET_LEN (1514); it is never compared\nagainst how many bytes were actually received.\n\nA malicious GeneLink (GL620A) device can therefore send a short URB whose\nheader claims packet_count > 1 and a first packet of up to 1514 bytes.\n\n\tskb_put_data(gl_skb, packet->packet_data, size);\n\nthen copies past the end of the receive buffer and hands the adjacent slab\ncontents up the network stack, an out-of-bounds read that leaks kernel heap.\nNo privilege is required: the path runs in the usbnet RX softirq as soon as\nthe interface is up.\n\n  BUG: KASAN: slab-out-of-bounds in genelink_rx_fixup (drivers/net/usb/gl620a.c:112)\n  Read of size 1514 at addr ffff888011309708 by task ksoftirqd/0/14\n  Call Trace:\n    ...\n    __asan_memcpy (mm/kasan/shadow.c:105)\n    genelink_rx_fixup (include/linux/skbuff.h:2814 drivers/net/usb/gl620a.c:112)\n    usbnet_bh (drivers/net/usb/usbnet.c:572 drivers/net/usb/usbnet.c:1589)\n    process_one_work (kernel/workqueue.c:3322)\n    bh_worker (kernel/workqueue.c:3405)\n    tasklet_action (kernel/softirq.c:965)\n    handle_softirqs (kernel/softirq.c:622)\n    run_ksoftirqd (kernel/softirq.c:1076)\n    ...\n\nskb_pull() already verifies that the requested length fits the buffer and\nreturns NULL otherwise. Move it ahead of the copy and check its result, so\na packet that overruns the received data is rejected before it is read.\nWell-formed frames, whose packets are fully present, are unaffected."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H","baseScore":8.1,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:A - The gl620a driver is a FLAG_POINTTOPOINT network interface, and the malformed aggregation header is received network data generated by the peer host on the other end of the GeneLink host-to-host cable, processed in the usbnet RX softirq. The attack is confined to that directly attached link segment, making it logically adjacent rather than routable or purely physical.\nAC:L - The attacker fully controls the frame contents and only needs to send an 18-byte URB declaring packet_count > 1 with a first packet_length of up to 1514; the missing bounds check is deterministic with no race, memory-layout, or timing dependency.\nPR:N - No credentials or privileges on the target are required — the parse runs unconditionally in the RX softirq for any frame received once the interface is up, with no capability or authentication check anywhere on the usbnet_bh -> rx_process -> rx_fixup path.\nUI:N - No victim action is needed beyond the interface being in its normal operational state, which is inherent to a host-to-host link cable in use and is done automatically by NetworkManager/systemd-networkd.\nS:U - The over-read and the leaked memory stay within the kernel's own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - Up to ~47 KB of adjacent kernel heap is read past the valid received data and delivered up the network stack as an Ethernet frame, exfiltrating arbitrary slab contents (prior packet data, keys, pointers) to the attacker and to any local packet capture — an unbounded, repeatable kernel memory disclosure.\nI:N - The defect is strictly a read; gl_skb is allocated with alloc_skb(size) before skb_put_data() copies exactly size bytes, so no kernel memory is written out of bounds or otherwise modified.\nA:H - With rx_urb_size reduced the read runs tens of kilobytes past a small slab object and can touch unmapped memory from softirq context, and on hardened kernels the KASAN slab-out-of-bounds report (as captured in the fix commit) panics the machine; the attacker can repeat it with every frame."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/usb/gl620a.c"],"versions":[{"version":"47ee3051c856cc2aa95d35d577a8cb37279d540f","lessThan":"255d03551f94c7bdd86c7d9181a70b21917d829f","status":"affected","versionType":"git"},{"version":"47ee3051c856cc2aa95d35d577a8cb37279d540f","lessThan":"4359376e6238d89977a35086e47ca3b07f43e850","status":"affected","versionType":"git"},{"version":"47ee3051c856cc2aa95d35d577a8cb37279d540f","lessThan":"8624e179fa3ce23c2fbd1a198ce30764b73f054a","status":"affected","versionType":"git"},{"version":"47ee3051c856cc2aa95d35d577a8cb37279d540f","lessThan":"573418f7ea8f859a841417eb4b915594094fd967","status":"affected","versionType":"git"},{"version":"47ee3051c856cc2aa95d35d577a8cb37279d540f","lessThan":"0575599e451aff3c5329922562374a2cab25fc51","status":"affected","versionType":"git"},{"version":"47ee3051c856cc2aa95d35d577a8cb37279d540f","lessThan":"0a7d9c7c5f1f208c523abbb4db6aea7bc1fad3db","status":"affected","versionType":"git"},{"version":"47ee3051c856cc2aa95d35d577a8cb37279d540f","lessThan":"3ef79fa3860e644c8de7834fa7300e1c58f38862","status":"affected","versionType":"git"},{"version":"47ee3051c856cc2aa95d35d577a8cb37279d540f","lessThan":"8ff7f2a6da4fccaa5cc9be7251a24e71e29fbd1a","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/usb/gl620a.c"],"versions":[{"version":"2.6.14","status":"affected"},{"version":"0","lessThan":"2.6.14","status":"unaffected","versionType":"semver"},{"version":"5.10.261","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.212","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.178","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.145","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.97","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.18.40","lessThanOrEqual":"6.18.*","status":"unaffected","versionType":"semver"},{"version":"7.1.5","lessThanOrEqual":"7.1.*","status":"unaffected","versionType":"semver"},{"version":"7.2","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.14","versionEndExcluding":"5.10.261"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.14","versionEndExcluding":"5.15.212"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.14","versionEndExcluding":"6.1.178"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.14","versionEndExcluding":"6.6.145"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.14","versionEndExcluding":"6.12.97"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.14","versionEndExcluding":"6.18.40"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.14","versionEndExcluding":"7.1.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.14","versionEndExcluding":"7.2"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/255d03551f94c7bdd86c7d9181a70b21917d829f"},{"url":"https://git.kernel.org/stable/c/4359376e6238d89977a35086e47ca3b07f43e850"},{"url":"https://git.kernel.org/stable/c/8624e179fa3ce23c2fbd1a198ce30764b73f054a"},{"url":"https://git.kernel.org/stable/c/573418f7ea8f859a841417eb4b915594094fd967"},{"url":"https://git.kernel.org/stable/c/0575599e451aff3c5329922562374a2cab25fc51"},{"url":"https://git.kernel.org/stable/c/0a7d9c7c5f1f208c523abbb4db6aea7bc1fad3db"},{"url":"https://git.kernel.org/stable/c/3ef79fa3860e644c8de7834fa7300e1c58f38862"},{"url":"https://git.kernel.org/stable/c/8ff7f2a6da4fccaa5cc9be7251a24e71e29fbd1a"}],"title":"usbnet: gl620a: fix out-of-bounds read in genelink_rx_fixup()","x_generator":{"engine":"bippy-1.2.0"}}}}