Description
Software which sets SO_REUSEPORT_LB on a socket and then connects it to a host will not directly observe any problems. However, due to its membership in a load-balancing group, that socket will receive packets originating from any host. This breaks the contract of the connect(2) and implied connect via sendto(2), and may leave the application vulnerable to spoofing attacks. The kernel failed to check the connection state of sockets when adding them to load-balancing groups. Furthermore, when looking up the destination socket for an incoming packet, the kernel will match a socket belonging to a load-balancing group even if it is connected, in violation of the contract that connected sockets are only supposed to receive packets originating from the connected host.
Problem types
CWE-488: Exposure of Data Element to Wrong Session
Product status
15.0-BETA2 (beta) before p1
14.3-RELEASE (release) before p5
13.5-RELEASE (release) before p6
Credits
MSc. student Omer Ben Simhon from the Hebrew University School of Computer Science and Engineering
Prof. Amit Klein from the Hebrew University School of Computer Science and Engineering
References
security.freebsd.org/advisories/FreeBSD-SA-25:09.netinet.asc