CVE-2022-49340

In the Linux kernel, the following vulnerability has been resolved: ip_gre: test csum_start instead of transport header GRE with TUNNEL_CSUM will apply local checksum offload on CHECKSUM_PARTIAL packets. ipgre_xmit must validate csum_start after an optional skb_pull, else lco_csum may trigger an overflow. The original check was if (csum && skb_checksum_start(skb) < skb->data) return -EINVAL; This had false positives when skb_checksum_start is undefined: when ip_summed is not CHECKSUM_PARTIAL. A discussed refinement was straightforward if (csum && skb->ip_summed == CHECKSUM_PARTIAL && skb_checksum_start(skb) < skb->data) return -EINVAL; But was eventually revised more thoroughly: - restrict the check to the only branch where needed, in an uncommon GRE path that uses header_ops and calls skb_pull. - test skb_transport_header, which is set along with csum_start in skb_partial_csum_set in the normal header_ops datapath. Turns out skbs can arrive in this branch without the transport header set, e.g., through BPF redirection. Revise the check back to check csum_start directly, and only if CHECKSUM_PARTIAL. Do leave the check in the updated location. Check field regardless of whether TUNNEL_CSUM is configured.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.19:rc1:*:*:*:*:*:*

History

21 Oct 2025, 12:18

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/0c92d813c7c9ca2212ecd879232e7d87362fce98 - () https://git.kernel.org/stable/c/0c92d813c7c9ca2212ecd879232e7d87362fce98 - Patch
References () https://git.kernel.org/stable/c/0ffa268724656633af5f37a38c212326d98ebe8c - () https://git.kernel.org/stable/c/0ffa268724656633af5f37a38c212326d98ebe8c - Patch
References () https://git.kernel.org/stable/c/3d08bc3a5d9b2106f5c8bcf1adb73147824aa006 - () https://git.kernel.org/stable/c/3d08bc3a5d9b2106f5c8bcf1adb73147824aa006 - Patch
References () https://git.kernel.org/stable/c/7596bd7920985f7fc8579a92e48bc53ce4475b21 - () https://git.kernel.org/stable/c/7596bd7920985f7fc8579a92e48bc53ce4475b21 - Patch
References () https://git.kernel.org/stable/c/8d21e9963bec1aad2280cdd034c8993033ef2948 - () https://git.kernel.org/stable/c/8d21e9963bec1aad2280cdd034c8993033ef2948 - Patch
References () https://git.kernel.org/stable/c/e6b6f98fc7605c06c0a3baa70f62c534d7b4ce58 - () https://git.kernel.org/stable/c/e6b6f98fc7605c06c0a3baa70f62c534d7b4ce58 - Patch
References () https://git.kernel.org/stable/c/fbeb8dfa8b87ef259eef0c89e39b53962a3cf604 - () https://git.kernel.org/stable/c/fbeb8dfa8b87ef259eef0c89e39b53962a3cf604 - Patch
First Time Linux
Linux linux Kernel
CWE NVD-CWE-noinfo
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: ip_gre: prueba csum_start en lugar del encabezado de transporte GRE con TUNNEL_CSUM aplicará la descarga de suma de comprobación local en los paquetes CHECKSUM_PARTIAL. ipgre_xmit debe validar csum_start después de un skb_pull opcional, de lo contrario lco_csum puede provocar un desbordamiento. La comprobación original era if (csum &amp;&amp; skb_checksum_start(skb) &lt; skb-&gt;data) return -EINVAL; Esto tenía falsos positivos cuando skb_checksum_start no está definido: cuando ip_summed no es CHECKSUM_PARTIAL. Una mejora discutida fue sencilla if (csum &amp;&amp; skb-&gt;ip_summed == CHECKSUM_PARTIAL &amp;&amp; skb_checksum_start(skb) &lt; skb-&gt;data) return -EINVAL; Pero finalmente se revisó más a fondo: - restringir la verificación a la única rama donde sea necesario, en una ruta GRE poco común que usa header_ops y llama a skb_pull. - probar skb_transport_header, que se establece junto con csum_start en skb_partial_csum_set en la ruta de datos header_ops normal. Resulta que skbs puede llegar a esta rama sin el encabezado de transporte establecido, por ejemplo, a través de la redirección BPF. Revise la verificación nuevamente para verificar csum_start directamente, y solo si CHECKSUM_PARTIAL. Deje la verificación en la ubicación actualizada. Verifique el campo independientemente de si TUNNEL_CSUM está configurado.
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.19:rc1:*:*:*:*:*:*

26 Feb 2025, 07:01

Type Values Removed Values Added
New CVE

Information

Published : 2025-02-26 07:01

Updated : 2025-10-21 12:18


NVD link : CVE-2022-49340

Mitre link : CVE-2022-49340

CVE.ORG link : CVE-2022-49340


JSON object : View

Products Affected

linux

  • linux_kernel