[PATCH] resolv: Count records, and check hostname (CVE-2026-4437, CVE-2026-4438)
Carlos O'Donell
carlos@redhat.com
Fri Mar 20 20:20:56 GMT 2026
On 3/20/26 4:11 PM, Florian Weimer wrote:
> * Carlos O'Donell:
>
>> The answer section boundary was previously ignored, and the code in
>> getanswer_ptr would iterate past the last resource record, but not
>> beyond the end of the returned data. This could lead to subsequent data
>> being interpreted as answer records, thus violating the DNS
>> specification. Such resource records could be maliciously crafted and
>> hidden from other tooling, but processed by the glibc stub resolver and
>> acted upon by the application. While we trust the data returned by the
>> configured recursive resolvers, we should not trust its format and
>> should validate it as required. It is a security issue to incorrectly
>> process the DNS protocol.
>>
>> The processed hostname in getanswer_ptr should be correctly checked to
>> avoid invalid characters from being allowed, including shell
>> metacharacters. It is a security issue to fail to check the returned
>> hostname for validity.
>>
>> These two issues are considered distinct CVEs, but are fixed in one
>> commit to make the update process easier, given that they change the
>> same file and function.
>>
>> Regression tests are added for invalid metacharacters and response
>> section crossing.
>>
>> No regressions on x86_64-linux-gnu.
>> ---
>> resolv/Makefile | 7 +
>> resolv/nss_dns/dns-host.c | 4 +-
>> resolv/tst-resolv-dns-section.c | 161 ++++++++++++++++++++
>> resolv/tst-resolv-invalid-ptr.c | 258 ++++++++++++++++++++++++++++++++
>> 4 files changed, 428 insertions(+), 2 deletions(-)
>> create mode 100644 resolv/tst-resolv-dns-section.c
>> create mode 100644 resolv/tst-resolv-invalid-ptr.c
>
> I don't quite understand why this is a single commit for two bugs that
> have very different impact, fixes, and even separate test cases.
The justification is in the commit log? :-)
~~~
These two issues are considered distinct CVEs, but are fixed in one
commit to make the update process easier, given that they change the
same file and function.
~~~
> Why not split this into two? That makes the accompanying advisory text
> clearer, too.
Would you still like them split up?
I don't have a strong opinion.
--
Cheers,
Carlos.
More information about the Libc-alpha
mailing list