CVE-2025-59529Avahi是一个用于在本地网络上通过mDNS/DNS-SD协议套件进行服务发现的系统。该漏洞存在于Avahi的简单协议服务器中,其在处理客户端连接时忽略了文档中记录的客户端限制(CLIENTS_MAX),无条件接受无限数量的连接。虽然代码中定义了CLIENTS_MAX常量,但server_work()函数会无条件调用accept(),client_new()函数总是追加新客户端并递增n_clients计数器,缺少对限制的检查。当由于avahi-daemon达到最大socket数量而无法接受客户端时,程序会对每个连接无条件地记录错误日志。未授权的本地用户可以通过此漏洞耗尽守护进程内存和文件描述符,导致mDNS/DNS-SD服务系统范围的拒绝服务。耗尽本地文件描述符会导致系统负载增加,因为每个请求都会记录错误。过载会阻止使用nss-mdns插件的glibc调用来解析*.local.域名和链路本地地址。
漏洞根本原因在于Avahi代码中虽然定义了CLIENTS_MAX宏用于限制最大客户端数量,但在实际实现中完全没有使用这个限制。server_work()函数在主循环中无条件接受新连接,client_new()函数总是将新客户端添加到列表中并递增n_clients计数。攻击者可以利用此漏洞通过快速创建大量连接来耗尽系统资源。技术细节包括:1) server_work()函数缺少对n_clients的检查;2) client_new()函数无条件追加客户端;3) 当达到系统最大文件描述符限制时,accept()调用失败但仍会记录大量错误日志;4) 这导致CPU和内存资源被错误日志处理消耗。攻击者只需本地访问即可发起攻击,无需特殊权限。