ubuntu-cve-2025-31498
Vulnerability from osv_ubuntu
c-ares is an asynchronous resolver library. From 1.32.3 through 1.34.4, there is a use-after-free in read_answers() when process_answer() 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 read_answers() 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": [
{
"ecosystem_specific": {
"availability": "No subscription required",
"binaries": [
{
"binary_name": "libc-ares-dev",
"binary_version": "1.34.4-2.1ubuntu0.1"
},
{
"binary_name": "libc-ares2",
"binary_version": "1.34.4-2.1ubuntu0.1"
},
{
"binary_name": "libcares2",
"binary_version": "1.34.4-2.1ubuntu0.1"
}
]
},
"package": {
"ecosystem": "Ubuntu:25.04",
"name": "c-ares",
"purl": "pkg:deb/ubuntu/c-ares@1.34.4-2.1ubuntu0.1?arch=source\u0026distro=plucky"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "1.34.4-2.1ubuntu0.1"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"1.33.0-1",
"1.34.2-1",
"1.34.3-1",
"1.34.4-1",
"1.34.4-2.1"
]
}
],
"aliases": [],
"details": "c-ares is an asynchronous resolver library. From 1.32.3 through 1.34.4, there is a use-after-free in read_answers() when process_answer() 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 read_answers() 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.",
"id": "UBUNTU-CVE-2025-31498",
"modified": "2025-09-08T17:08:14Z",
"published": "2025-04-08T14:15:00Z",
"references": [
{
"type": "REPORT",
"url": "https://ubuntu.com/security/CVE-2025-31498"
},
{
"type": "REPORT",
"url": "https://www.cve.org/CVERecord?id=CVE-2025-31498"
},
{
"type": "REPORT",
"url": "https://github.com/c-ares/c-ares/security/advisories/GHSA-6hxc-62jh-p29v"
},
{
"type": "REPORT",
"url": "http://www.openwall.com/lists/oss-security/2025/04/08/3"
},
{
"type": "REPORT",
"url": "https://github.com/c-ares/c-ares/commit/29d38719112639d8c0ba910254a3dd4f482ea2d1"
},
{
"type": "REPORT",
"url": "https://github.com/c-ares/c-ares/pull/821"
},
{
"type": "ADVISORY",
"url": "https://ubuntu.com/security/notices/USN-7477-1"
}
],
"related": [
"USN-7477-1"
],
"schema_version": "1.7.0",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:L/VA:H/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
},
{
"score": "medium",
"type": "Ubuntu"
}
],
"upstream": [
"CVE-2025-31498"
],
"withdrawn": "2026-01-20T05:27:25Z"
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.