https://github.com/avahi/avahi/security/advisories/GHSA-73wf-3xmj-x82q advises:

Summary
-------

The simple protocol server ignores the documented client limit and
accepts unlimited connections, allowing for easy local DoS.

Details
-------

Although CLIENTS_MAX is defined, server_work() unconditionally
accept()s and client_new() always appends the new client and
increments n_clients. There is no check against the limit.

When client cannot be accepted as a result of maximal socket number of
avahi-daemon, it logs unconditionally error per each connection.

PoC
---

# Flood the UNIX simple-protocol socket with idle connections
for i in $(seq 1 4000); do
  socat - UNIX-CONNECT:/run/avahi-daemon/socket >/dev/null 2>&1 &
done
wait

Watch avahi-daemon’s memory/FD count grow until it becomes unresponsive or
crashes, such as an endless loop of:

accept(): Too many open files
accept(): Too many open files
accept(): Too many open files
accept(): Too many open files
accept(): Too many open files
accept(): Too many open files
accept(): Too many open files
accept(): Too many open files
accept(): Too many open files
accept(): Too many open files
accept(): Too many open files
accept(): Too many open files
accept(): Too many open files
accept(): Too many open files

Impact
------

Unprivileged local users can exhaust daemon memory and file descriptors,
causing a denial of service system-wide for mDNS/DNS-SD.

Exahusting local file descriptors causes increased system load caused
by logging errors of each of request.

Overloading prevents glibc calls using nss-mdns plugins to resolve
*.local. names and link-local addresses.

Workarounds
-----------

Simple clients are offered for nss-mdns package functionality. It is
not possible to disable the unix socket /run/avahi-daemon/socket, but
resolution requests received via DBus are not affected directly. Tools
avahi-resolve, avahi-resolve-address and avahi-resolve-host-name are
not affected, they use DBus interface.

It is possible to change permissions of unix socket after avahi-daemon
is started. But avahi-daemon does not provide any configuration for it.
Additional access restrictions like SELinux can also prevent unwanted
tools to access the socket and keep resolution working for trusted users.

Fixes
-----

    Candidate only: https://github.com/avahi/avahi/pull/808

Credits
-------

We would like to thank Joshua Rogers using the ZeroPath tool for
discovering and reporting the issue responsibly.

    published article about it: Avahi Simple Protocol Server DoS 
(CVE-2025-59529)
    https://zeropath.com/blog/avahi-simple-protocol-server-dos-cve-2025-59529

Severity: Moderate, 5.5 / 10
          CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVE ID: CVE-2025-59529
Weaknesses: CWE-400


--
        -Alan Coopersmith-                 [email protected]
         Oracle Solaris Engineering - https://blogs.oracle.com/solaris

Reply via email to