MaraDNS is open-source software that implements the Domain Name System (DNS). In version 3.5.0024 and prior, a remotely exploitable integer underflow vulnerability in the DNS packet decompression function allows an attacker to cause a Denial of Service by triggering an abnormal program termination.
The vulnerability exists in the decomp_get_rddata function within the Decompress.c file. When handling a DNS packet with an Answer RR of qtype 16 (TXT record) and any qclass, if the rdlength is smaller than rdata, the result of the line Decompress.c:886 is a negative number len = rdlength - total;. This value is then passed to the decomp_append_bytes function without proper validation, causing the program to attempt to allocate a massive chunk of memory that is impossible to allocate. Consequently, the program exits with an error code of 64, causing a Denial of Service.
One proposed fix for this vulnerability is to patch Decompress.c:887 by breaking if(len <= 0), which has been incorporated in version 3.5.0036 via commit bab062bde40b2ae8a91eecd522e84d8b993bab58.
{
"cwe_ids": [
"CWE-191"
]
}[
{
"id": "CVE-2023-31137-0ffcada4",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"line_hashes": [
"89808788349867344767143701345458512602",
"241827842363765108904724055662740013629",
"255736606527912446993222367031908925422",
"307303093863694106346912529890378534176",
"52455824566973544570874473506454173645"
],
"threshold": 0.9
},
"target": {
"file": "dns/Decompress.c"
},
"source": "https://github.com/samboy/maradns/commit/bab062bde40b2ae8a91eecd522e84d8b993bab58"
},
{
"id": "CVE-2023-31137-e85a946c",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"function_hash": "23476427869030079362297228092599425269",
"length": 1295.0
},
"target": {
"file": "dns/Decompress.c",
"function": "decomp_get_rddata"
},
"source": "https://github.com/samboy/maradns/commit/bab062bde40b2ae8a91eecd522e84d8b993bab58"
}
]