Linux: net: lan743x: fix RX checksum use-after-free
What fixes it
- 0e52886c4324c9897c2c62f92be3dc8316cee67eLinuxCVE List
- 6fe5c3a2503983abb431d93faeadfc7f5e6a7e33LinuxCVE List
- 5c216bfa9fb7b36804485e67975e9c98055b31efLinuxCVE List
- 161a403c8625e152de03d1da22bbf9cda6dc9f9fLinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
net: lan743x: fix RX checksum use-after-free
lan743x_rx_process_buffer() adds each non-first receive buffer to the head skb's frag_list. On the last descriptor, lan743x_rx_trim_skb() linearizes the head and frees the fragment skb metadata.
The checksum-success path then writes ip_summed through the local skb pointer, which still points to the final fragment. This causes a use-after-free write when a packet spans more than one receive buffer.
Set ip_summed on the surviving head skb instead. Multi-buffer receive can occur after a live MTU increase because existing ring entries keep their old buffer size until they are replenished.
A KUnit test invoking lan743x_rx_process_buffer() with a two-buffer packet produced a one-byte KASAN use-after-free write before this change. The same test passed after the change. The driver object also builds with W=1. This was not tested on physical LAN743x hardware.
Text from CVE List
Affected versions 14
- Linuxaffected: cd6910501cfd9a3bdff2f5fc33c9f3cf165ca54a before 0e52886c4324c9897c2c62f92be3dc8316cee67eCVE List
- Linuxaffected: cd6910501cfd9a3bdff2f5fc33c9f3cf165ca54a before a58024835c704419bb46d2a34e5223f65605f958CVE List
- Linuxaffected: cd6910501cfd9a3bdff2f5fc33c9f3cf165ca54a before 6fe5c3a2503983abb431d93faeadfc7f5e6a7e33CVE List
- Linuxaffected: cd6910501cfd9a3bdff2f5fc33c9f3cf165ca54a before 5c216bfa9fb7b36804485e67975e9c98055b31efCVE List
- Linuxaffected: cd6910501cfd9a3bdff2f5fc33c9f3cf165ca54a before 161a403c8625e152de03d1da22bbf9cda6dc9f9fCVE List
- Linuxaffected: cd6910501cfd9a3bdff2f5fc33c9f3cf165ca54a before a9ce4053dc945c5372dedba5017ee675b30dc0c5CVE List
- Linuxaffected: 6.1CVE List
- Linuxunaffected: all versions before 6.1CVE List
- Linuxunaffected: 6.1.189 through 6.1.*CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.54 through 6.18.*CVE List
- Linuxunaffected: 7.2.8 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 6
- git.kernel.org/stable/c/0e52886c4324c9897c2c62f92be3dc8316cee67eReferencevia CVE List
- git.kernel.org/stable/c/a58024835c704419bb46d2a34e5223f65605f958Referencevia CVE List
- git.kernel.org/stable/c/6fe5c3a2503983abb431d93faeadfc7f5e6a7e33Referencevia CVE List
- git.kernel.org/stable/c/5c216bfa9fb7b36804485e67975e9c98055b31efReferencevia CVE List
- git.kernel.org/stable/c/161a403c8625e152de03d1da22bbf9cda6dc9f9fReferencevia CVE List
- git.kernel.org/stable/c/a9ce4053dc945c5372dedba5017ee675b30dc0c5Referencevia CVE List