Bug 1889688 (CVE-2020-25685) - CVE-2020-25685 dnsmasq: loose query name check in reply_query() makes forging replies easier for an off-path attacker
Summary: CVE-2020-25685 dnsmasq: loose query name check in reply_query() makes forging...
Keywords:
Status: CLOSED ERRATA
Alias: CVE-2020-25685
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Red Hat Product Security
QA Contact:
URL:
Whiteboard:
Depends On: 1896056 1896058 1896060 1896062 1896065 1896067 1896069 1896071 1917318 1917319 1917761 1917785 1917792 1918953 1918954
Blocks: 1875522
TreeView+ depends on / blocked
 
Reported: 2020-10-20 11:30 UTC by Riccardo Schirone
Modified: 2022-10-02 21:51 UTC (History)
29 users (show)

Fixed In Version: dnsmasq 2.83
Doc Type: Known Issue
Doc Text:
A flaw was found in dnsmasq. When getting a reply from a forwarded query, dnsmasq checks in forward.c:reply_query(), which is the forwarded query that matches the reply, by only using a weak hash of the query name. Due to the weak hash (CRC32 when dnsmasq is compiled without DNSSEC, SHA-1 when it is) this flaw allows an off-path attacker to find several different domains all having the same hash, substantially reducing the number of attempts they would have to perform to forge a reply and get it accepted by dnsmasq. This is in contrast with RFC5452, which specifies that the query name is one of the attributes of a query that must be used to match a reply. This flaw could be abused to perform a DNS Cache Poisoning attack. If chained with CVE-2020-25684 the attack complexity of a successful attack is reduced. The highest threat from this vulnerability is to data integrity.
Clone Of:
Environment:
Last Closed: 2021-01-19 17:59:24 UTC
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2021:0199 0 None None None 2021-01-20 18:19:08 UTC
Red Hat Product Errata RHBA-2021:0242 0 None None None 2021-01-25 17:13:26 UTC
Red Hat Product Errata RHSA-2021:0150 0 None None None 2021-01-19 13:16:48 UTC
Red Hat Product Errata RHSA-2021:0151 0 None None None 2021-01-19 13:34:23 UTC
Red Hat Product Errata RHSA-2021:0152 0 None None None 2021-01-19 13:11:50 UTC
Red Hat Product Errata RHSA-2021:0153 0 None None None 2021-01-19 13:55:03 UTC
Red Hat Product Errata RHSA-2021:0154 0 None None None 2021-01-19 13:57:34 UTC
Red Hat Product Errata RHSA-2021:0155 0 None None None 2021-01-19 14:08:14 UTC
Red Hat Product Errata RHSA-2021:0156 0 None None None 2021-01-19 13:36:08 UTC
Red Hat Product Errata RHSA-2021:0240 0 None None None 2021-01-25 14:22:13 UTC
Red Hat Product Errata RHSA-2021:0245 0 None None None 2021-01-25 15:11:02 UTC
Red Hat Product Errata RHSA-2021:0395 0 None None None 2021-02-03 10:37:23 UTC
Red Hat Product Errata RHSA-2021:0401 0 None None None 2021-02-03 16:13:09 UTC

Description Riccardo Schirone 2020-10-20 11:30:11 UTC
When getting a reply from a forwarded query, dnsmasq checks in forward.c:reply_query() which one is the forwarded query that matches the reply, by only using a weak hash of the query name. Due to the weak hash (CRC32 when dnsmasq is compiled without DNSSEC, SHA-1 when it is) an attacker can find several different domains all having the same hash, substantially reducing the number of attempts he would have to perform to forge a reply and get it accepted by dnsmasq. This is in contrast with RFC5452, which specifies that query name is one of the attributes of a query that must be used to match a reply. This flaw could be abused to perform a DNS Cache Poisoning attack.

Comment 16 Riccardo Schirone 2021-01-14 11:32:06 UTC
Red Hat Enterprise Linux 5, 6, and 7 are all affected in the same way and the same mitigations apply.

Red Hat Enterprise Linux 8 provides dnsmasq compiled with DNSSEC, thus SHA-1 is used as hash for query names instead of CRC32. This makes it slightly harder to find collisions in this case. The same mitigations apply anyway.

Comment 18 Eric Christensen 2021-01-14 19:51:52 UTC
Mitigation:

The impact of this flaw can be reduced by disabling the dnsmasq cache by adding `--cache-size=0` when calling dnsmasq or by adding a line with `cache-size=0` to the dnsmasq configuration file (/etc/dnsmasq.conf by default). 

When using Red Hat Enterprise Linux 8.3 with libvirt through a virt:rhel module, use `virsh net-edit <network-name>` and reference https://libvirt.org/formatnetwork.html#elementsNamespaces to add the suggested option `cache-size=0`. 

There is no way to customize the dnsmasq configuration generated by libvirt, when using versions of Red Hat Enterprise Linux prior to version 8.3. If dnsmasq is being run through NetworkManager, create a new file in /etc/NetworkManager/dnsmasq.d/ and add `cache-size=0` to it.

In all cases, by disabling the cache, you may experience a performance loss in your environment due to all DNS queries being forwarded to the upstream servers. Please evaluate if the mitigation is appropriate for the system’s environment before applying.

Comment 19 Riccardo Schirone 2021-01-15 14:47:44 UTC
Statement:

Dnsmasq may be run by libvirt and/or NetworkManager. libvirt uses dnsmasq by default to provide DNS service to its guests. NetworkManager may be configured to use dnsmasq to provide DNS service to the system, if a line `dns=dnsmasq` is present in the `[main]` section of the configuration file /etc/NetworkManager/NetworkManager.conf.

In Red Hat OpenStack Platform (RHOSP) and Red Hat Virtualization (RHV), the dnsmasq package is provided by the underlying Red Hat Enterprise Linux (RHEL) product. RHOSP and RHV are therefore indirectly affected, so please ensure that the underlying RHEL dnsmasq package is updated.

Comment 20 Riccardo Schirone 2021-01-15 17:16:25 UTC
Acknowledgments:

Name: Moshe Kol (JSOF), Shlomi Oberman (JSOF)

Comment 23 Riccardo Schirone 2021-01-19 11:36:15 UTC
External References:

https://www.jsof-tech.com/disclosures/dnspooq/

Comment 24 Riccardo Schirone 2021-01-19 11:56:29 UTC
Created dnsmasq tracking bugs for this issue:

Affects: fedora-all [bug 1917785]

Comment 26 errata-xmlrpc 2021-01-19 13:11:47 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8.1 Extended Update Support

Via RHSA-2021:0152 https://access.redhat.com/errata/RHSA-2021:0152

Comment 27 errata-xmlrpc 2021-01-19 13:16:45 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2021:0150 https://access.redhat.com/errata/RHSA-2021:0150

Comment 29 errata-xmlrpc 2021-01-19 13:34:18 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8.2 Extended Update Support

Via RHSA-2021:0151 https://access.redhat.com/errata/RHSA-2021:0151

Comment 30 errata-xmlrpc 2021-01-19 13:36:03 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 7.4 Advanced Update Support
  Red Hat Enterprise Linux 7.4 Update Services for SAP Solutions
  Red Hat Enterprise Linux 7.4 Telco Extended Update Support

Via RHSA-2021:0156 https://access.redhat.com/errata/RHSA-2021:0156

Comment 31 errata-xmlrpc 2021-01-19 13:54:59 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 7

Via RHSA-2021:0153 https://access.redhat.com/errata/RHSA-2021:0153

Comment 32 errata-xmlrpc 2021-01-19 13:57:30 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 7.7 Extended Update Support

Via RHSA-2021:0154 https://access.redhat.com/errata/RHSA-2021:0154

Comment 33 errata-xmlrpc 2021-01-19 14:08:11 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 7.6 Extended Update Support

Via RHSA-2021:0155 https://access.redhat.com/errata/RHSA-2021:0155

Comment 34 Product Security DevOps Team 2021-01-19 17:59:24 UTC
This bug is now closed. Further updates for individual products will be reflected on the CVE page(s):

https://access.redhat.com/security/cve/cve-2020-25685

Comment 36 errata-xmlrpc 2021-01-25 14:22:10 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 7.2 Advanced Update Support

Via RHSA-2021:0240 https://access.redhat.com/errata/RHSA-2021:0240

Comment 37 errata-xmlrpc 2021-01-25 15:10:59 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 7.3 Advanced Update Support

Via RHSA-2021:0245 https://access.redhat.com/errata/RHSA-2021:0245

Comment 38 errata-xmlrpc 2021-02-03 10:37:19 UTC
This issue has been addressed in the following products:

  Red Hat Virtualization 4 for Red Hat Enterprise Linux 7

Via RHSA-2021:0395 https://access.redhat.com/errata/RHSA-2021:0395

Comment 39 errata-xmlrpc 2021-02-03 16:13:06 UTC
This issue has been addressed in the following products:

  Red Hat Virtualization 4 for Red Hat Enterprise Linux 8

Via RHSA-2021:0401 https://access.redhat.com/errata/RHSA-2021:0401


Note You need to log in before you can comment on or make changes to this bug.