Description
In the Linux kernel, the following vulnerability has been resolved: tipc: fix divide-by-zero in tipc_sk_filter_connect() A user can set conn_timeout to any value via setsockopt(TIPC_CONN_TIMEOUT), including values less than 4. When a SYN is rejected with TIPC_ERR_OVERLOAD and the retry path in tipc_sk_filter_connect() executes: delay %= (tsk->conn_timeout / 4); If conn_timeout is in the range [0, 3], the integer division yields 0, and the modulo operation triggers a divide-by-zero exception, causing a kernel oops/panic. Fix this by clamping conn_timeout to a minimum of 4 at the point of use in tipc_sk_filter_connect(). Oops: divide error: 0000 [#1] SMP KASAN NOPTI CPU: 0 UID: 0 PID: 119 Comm: poc-F144 Not tainted 7.0.0-rc2+ RIP: 0010:tipc_sk_filter_rcv (net/tipc/socket.c:2236 net/tipc/socket.c:2362) Call Trace: tipc_sk_backlog_rcv (include/linux/instrumented.h:82 include/linux/atomic/atomic-instrumented.h:32 include/net/sock.h:2357 net/tipc/socket.c:2406) __release_sock (include/net/sock.h:1185 net/core/sock.c:3213) release_sock (net/core/sock.c:3797) tipc_connect (net/tipc/socket.c:2570) __sys_connect (include/linux/file.h:62 include/linux/file.h:83 net/socket.c:2098)
Product status
6787927475e52f6933e3affce365dabb2aa2fadf (git) before 600feb0a66a98c6b7f6f02b5f3612e75f9b8540f
6787927475e52f6933e3affce365dabb2aa2fadf (git) before 3bc9998041076ee05d3f312a22cee6b2ca35527f
6787927475e52f6933e3affce365dabb2aa2fadf (git) before 579956f9f297eb1b6a5d24de313f3acccee1f9d5
6787927475e52f6933e3affce365dabb2aa2fadf (git) before a360d3815aae1f00dd71b7714a846482e85cc1f7
6787927475e52f6933e3affce365dabb2aa2fadf (git) before c2ebfbe63deb7bfd4dc2532bae62a7ed67713272
6787927475e52f6933e3affce365dabb2aa2fadf (git) before 2754e7b3d64748643df867d1ea6fec522914b635
6787927475e52f6933e3affce365dabb2aa2fadf (git) before 338c5edeb6ae3f12a4b84dff9d71f6f7f8c202c3
6787927475e52f6933e3affce365dabb2aa2fadf (git) before 6c5a9baa15de240e747263aba435a0951da8d8d2
4.20
Any version before 4.20
5.10.253 (semver)
5.15.203 (semver)
6.1.167 (semver)
6.6.130 (semver)
6.12.78 (semver)
6.18.19 (semver)
6.19.9 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/600feb0a66a98c6b7f6f02b5f3612e75f9b8540f
git.kernel.org/...c/3bc9998041076ee05d3f312a22cee6b2ca35527f
git.kernel.org/...c/579956f9f297eb1b6a5d24de313f3acccee1f9d5
git.kernel.org/...c/a360d3815aae1f00dd71b7714a846482e85cc1f7
git.kernel.org/...c/c2ebfbe63deb7bfd4dc2532bae62a7ed67713272
git.kernel.org/...c/2754e7b3d64748643df867d1ea6fec522914b635
git.kernel.org/...c/338c5edeb6ae3f12a4b84dff9d71f6f7f8c202c3
git.kernel.org/...c/6c5a9baa15de240e747263aba435a0951da8d8d2