Description
In the Linux kernel, the following vulnerability has been resolved: sctp: disable BH before calling udp_tunnel_xmit_skb() udp_tunnel_xmit_skb() / udp_tunnel6_xmit_skb() are expected to run with BH disabled. After commit 6f1a9140ecda ("add xmit recursion limit to tunnel xmit functions"), on the path: udp(6)_tunnel_xmit_skb() -> ip(6)tunnel_xmit() dev_xmit_recursion_inc()/dec() must stay balanced on the same CPU. Without local_bh_disable(), the context may move between CPUs, which can break the inc/dec pairing. This may lead to incorrect recursion level detection and cause packets to be dropped in ip(6)_tunnel_xmit() or __dev_queue_xmit(). Fix it by disabling BH around both IPv4 and IPv6 SCTP UDP xmit paths. In my testing, after enabling the SCTP over UDP: # ip net exec ha sysctl -w net.sctp.udp_port=9899 # ip net exec ha sysctl -w net.sctp.encap_port=9899 # ip net exec hb sysctl -w net.sctp.udp_port=9899 # ip net exec hb sysctl -w net.sctp.encap_port=9899 # ip net exec ha iperf3 -s - without this patch: # ip net exec hb iperf3 -c 192.168.0.1 --sctp [ 5] 0.00-10.00 sec 37.2 MBytes 31.2 Mbits/sec sender [ 5] 0.00-10.00 sec 37.1 MBytes 31.1 Mbits/sec receiver - with this patch: # ip net exec hb iperf3 -c 192.168.0.1 --sctp [ 5] 0.00-10.00 sec 3.14 GBytes 2.69 Gbits/sec sender [ 5] 0.00-10.00 sec 3.14 GBytes 2.69 Gbits/sec receiver
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
046c052b475e7119b6a30e3483e2888fc606a2f8 to < e2933f5b3a31b175628985b92895269b778674a1affected046c052b475e7119b6a30e3483e2888fc606a2f8 to < 7f0062c40781fe0a340965f5bb0816681982ff4caffected046c052b475e7119b6a30e3483e2888fc606a2f8 to < be3bfcb34bda04f6a350710db471d4133f950f2caffected046c052b475e7119b6a30e3483e2888fc606a2f8 to < 0de7db2eb27e82b983157016fa604b1ba664ae5faffected046c052b475e7119b6a30e3483e2888fc606a2f8 to < 790093245e35040c2adb15f48970020425aa3f47affected046c052b475e7119b6a30e3483e2888fc606a2f8 to < 2cd7e6971fc2787408ceef17906ea152791448cfaffected
Linux Linux
Default version status: affected
5.11affected0 to < 5.11unaffected6.1.191 to ≤ 6.1.*unaffected6.6.160 to ≤ 6.6.*unaffected6.12.95 to ≤ 6.12.*unaffected6.18.37 to ≤ 6.18.*unaffected7.0.10 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/e2933f5b3a31b175628985b92895269b778674a1 ↗
- https://git.kernel.org/stable/c/7f0062c40781fe0a340965f5bb0816681982ff4c ↗
- https://git.kernel.org/stable/c/be3bfcb34bda04f6a350710db471d4133f950f2c ↗
- https://git.kernel.org/stable/c/0de7db2eb27e82b983157016fa604b1ba664ae5f ↗
- https://git.kernel.org/stable/c/790093245e35040c2adb15f48970020425aa3f47 ↗
- https://git.kernel.org/stable/c/2cd7e6971fc2787408ceef17906ea152791448cf ↗