CVE-2025-31498: c-ares has a use-after-free in read_answers()
c-ares is an asynchronous resolver library. From 1.32.3 through 1.34.4, there is a use-after-free in readanswers() when processanswer() may re-enqueue a query either due to a DNS Cookie Failure or when the upstream server does not properly support EDNS, or possibly on TCP queries if the remote closed the connection immediately after a response. If there was an issue trying to put that new transaction on the wire, it would close the connection handle, but readanswers() was still expecting the connection handle to be available to possibly dequeue other responses. In theory a remote attacker might be able to trigger this by flooding the target with ICMP UNREACHABLE packets if they also control the upstream nameserver and can return a result with one of those conditions, this has been untested. Otherwise only a local attacker might be able to change system behavior to make send()/write() return a failure condition. This vulnerability is fixed in 1.34.5.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2025-31498?
The severity of CVE-2025-31498 is classified as a high-severity vulnerability due to the potential for remote code execution.
How do I fix CVE-2025-31498?
To fix CVE-2025-31498, upgrade c-ares to version 1.34.5 or later, which addresses the use-after-free vulnerability.
What causes the CVE-2025-31498 vulnerability?
CVE-2025-31498 is caused by a use-after-free condition in the read_answers() function related to re-enqueuing queries under specific conditions.
Which versions of c-ares are affected by CVE-2025-31498?
CVE-2025-31498 affects c-ares versions from 1.32.3 to 1.34.4.
Is CVE-2025-31498 related to DNS queries?
Yes, CVE-2025-31498 is related to DNS queries and occurs when the upstream server does not properly support EDNS or due to DNS Cookie failures.