CVE-2023-52527
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
02/03/2024
Last modified:
13/01/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
ipv4, ipv6: Fix handling of transhdrlen in __ip{,6}_append_data()<br />
<br />
Including the transhdrlen in length is a problem when the packet is<br />
partially filled (e.g. something like send(MSG_MORE) happened previously)<br />
when appending to an IPv4 or IPv6 packet as we don&#39;t want to repeat the<br />
transport header or account for it twice. This can happen under some<br />
circumstances, such as splicing into an L2TP socket.<br />
<br />
The symptom observed is a warning in __ip6_append_data():<br />
<br />
WARNING: CPU: 1 PID: 5042 at net/ipv6/ip6_output.c:1800 __ip6_append_data.isra.0+0x1be8/0x47f0 net/ipv6/ip6_output.c:1800<br />
<br />
that occurs when MSG_SPLICE_PAGES is used to append more data to an already<br />
partially occupied skbuff. The warning occurs when &#39;copy&#39; is larger than<br />
the amount of data in the message iterator. This is because the requested<br />
length includes the transport header length when it shouldn&#39;t. This can be<br />
triggered by, for example:<br />
<br />
sfd = socket(AF_INET6, SOCK_DGRAM, IPPROTO_L2TP);<br />
bind(sfd, ...); // ::1<br />
connect(sfd, ...); // ::1 port 7<br />
send(sfd, buffer, 4100, MSG_MORE);<br />
sendfile(sfd, dfd, NULL, 1024);<br />
<br />
Fix this by only adding transhdrlen into the length if the write queue is<br />
empty in l2tp_ip6_sendmsg(), analogously to how UDP does things.<br />
<br />
l2tp_ip_sendmsg() looks like it won&#39;t suffer from this problem as it builds<br />
the UDP packet itself.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
CPE | From | Up to |
---|---|---|
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 3.5 (including) | 4.14.327 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.15 (including) | 4.19.296 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.20 (including) | 5.4.258 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (including) | 5.10.198 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.135 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.57 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.5.7 (excluding) |
cpe:2.3:o:linux:linux_kernel:6.6:rc1:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.6:rc2:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.6:rc3:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.6:rc4:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/1fc793d68d50dee4782ef2e808913d5dd880bcc6
- https://git.kernel.org/stable/c/559d697c5d072593d22b3e0bd8b8081108aeaf59
- https://git.kernel.org/stable/c/7626b9fed53092aa2147978070e610ecb61af844
- https://git.kernel.org/stable/c/96b2e1090397217839fcd6c9b6d8f5d439e705ed
- https://git.kernel.org/stable/c/9d4c75800f61e5d75c1659ba201b6c0c7ead3070
- https://git.kernel.org/stable/c/cd1189956393bf850b2e275e37411855d3bd86bb
- https://git.kernel.org/stable/c/f6a7182179c0ed788e3755ee2ed18c888ddcc33f
- https://git.kernel.org/stable/c/fe80658c08e3001c80c5533cd41abfbb0e0e28fd
- https://git.kernel.org/stable/c/1fc793d68d50dee4782ef2e808913d5dd880bcc6
- https://git.kernel.org/stable/c/559d697c5d072593d22b3e0bd8b8081108aeaf59
- https://git.kernel.org/stable/c/7626b9fed53092aa2147978070e610ecb61af844
- https://git.kernel.org/stable/c/96b2e1090397217839fcd6c9b6d8f5d439e705ed
- https://git.kernel.org/stable/c/9d4c75800f61e5d75c1659ba201b6c0c7ead3070
- https://git.kernel.org/stable/c/cd1189956393bf850b2e275e37411855d3bd86bb
- https://git.kernel.org/stable/c/f6a7182179c0ed788e3755ee2ed18c888ddcc33f
- https://git.kernel.org/stable/c/fe80658c08e3001c80c5533cd41abfbb0e0e28fd