Avahi是用于Linux的本地服务发现工具。 Avahi的avahi-core/server.c文件中的originates_from_local_legacy_unicast_socket()例程在检查入站的多播报文时没有考虑.sin_port的网络字节序列,avahi-daemon反射器在反射旧式单播mDNS通讯时会导致出现大量报文。反射器将初始的多播查询转发到其他接口,然后在同一接口接收回来(IP_MULTICAST_LOOP),但没有将刚刚转发的查询识别为旧式单播报文,因此就处理为独立的查询,并转发给所有的其他接口。进程如此反复,直到拒绝服务。
Avahi是用于Linux的本地服务发现工具。 Avahi的avahi-core/server.c文件中的originates_from_local_legacy_unicast_socket()例程在检查入站的多播报文时没有考虑.sin_port的网络字节序列,avahi-daemon反射器在反射旧式单播mDNS通讯时会导致出现大量报文。反射器将初始的多播查询转发到其他接口,然后在同一接口接收回来(IP_MULTICAST_LOOP),但没有将刚刚转发的查询识别为旧式单播报文,因此就处理为独立的查询,并转发给所有的其他接口。进程如此反复,直到拒绝服务。