Description
In the Linux kernel, the following vulnerability has been resolved: tcp: clamp route advmss to TCP_MIN_MSS tcp_select_initial_window() assumes that callers never pass an MSS smaller than 1, but route-derived advmss values can violate that assumption. A too-small explicit RTAX_ADVMSS is one way to get there, but it is not the only one. The same divide-by-zero can also be reached through the "default advmss" path when RTAX_ADVMSS is left at 0 and the effective advmss is later driven down by route MTU and min_adv_mss. Introduce a tcp_dst_advmss() helper that clamps route advmss to TCP_MIN_MSS before TCP consumes it, and use it in the TCP paths that derive advmss from dst metrics. This keeps the effective MSS from dropping to zero before tcp_select_initial_window() rounds the receive window.
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
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 1aedef9ca04aad427a077c7c427ffd89768038bcaffected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 788fbbf7d61f9742298417c207c91b6db159fbbcaffected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < eaf4af9bd6975c2eff8d48820937c83032d968dcaffected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < cfb44c6028e6f979720315e0772bbd0d4d33ed61affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 6b8c20bf61924dfc38fefb145c9f7406d73fae53affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 31cf2349361902769dc323e4dbf4b449795ec288affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 870a9e42ecc6fe1b8c25d87af043cb0d9c178fe1affected
Linux Linux
Default version status: affected
2.6.12affected0 to < 2.6.12unaffected6.1.191 to ≤ 6.1.*unaffected6.6.160 to ≤ 6.6.*unaffected6.12.111 to ≤ 6.12.*unaffected6.18.51 to ≤ 6.18.*unaffected7.1.13 to ≤ 7.1.*unaffected7.2.3 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/1aedef9ca04aad427a077c7c427ffd89768038bc ↗
- https://git.kernel.org/stable/c/788fbbf7d61f9742298417c207c91b6db159fbbc ↗
- https://git.kernel.org/stable/c/eaf4af9bd6975c2eff8d48820937c83032d968dc ↗
- https://git.kernel.org/stable/c/cfb44c6028e6f979720315e0772bbd0d4d33ed61 ↗
- https://git.kernel.org/stable/c/6b8c20bf61924dfc38fefb145c9f7406d73fae53 ↗
- https://git.kernel.org/stable/c/31cf2349361902769dc323e4dbf4b449795ec288 ↗
- https://git.kernel.org/stable/c/870a9e42ecc6fe1b8c25d87af043cb0d9c178fe1 ↗