]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Merge pull request #6000 from rgacogne/rec-authzone-validation
authorPieter Lexis <pieterlexis@users.noreply.github.com>
Tue, 28 Nov 2017 12:33:18 +0000 (13:33 +0100)
committerGitHub <noreply@github.com>
Tue, 28 Nov 2017 12:33:18 +0000 (13:33 +0100)
rec: Skip validation (including cached entries) for auth zones

26 files changed:
docs/appendices/FAQ.rst [new file with mode: 0644]
docs/backends/mydns.rst
docs/changelog/4.0.rst
docs/changelog/4.1.rst
docs/conf.py
docs/dnssec/operational.rst
docs/dnsupdate.rst
docs/domainmetadata.rst
docs/manpages/pdnsutil.1.rst
docs/migration.rst
docs/secpoll.zone
docs/security-advisories/powerdns-advisory-2017-04.rst [new file with mode: 0644]
pdns/opensslsigners.cc
pdns/pdns_recursor.cc
pdns/recursordist/docs/changelog/4.0.rst
pdns/recursordist/docs/security-advisories/powerdns-advisory-2017-03.rst [new file with mode: 0644]
pdns/recursordist/docs/security-advisories/powerdns-advisory-2017-05.rst [new file with mode: 0644]
pdns/recursordist/docs/security-advisories/powerdns-advisory-2017-06.rst [new file with mode: 0644]
pdns/recursordist/docs/security-advisories/powerdns-advisory-2017-07.rst [new file with mode: 0644]
pdns/recursordist/test-syncres_cc.cc
pdns/serialtweaker.cc
pdns/syncres.cc
pdns/ws-auth.cc
regression-tests.recursor-dnssec/recursortests.py
regression-tests.recursor-dnssec/test_Interop.py
regression-tests.recursor-dnssec/test_Sortlist.py

diff --git a/docs/appendices/FAQ.rst b/docs/appendices/FAQ.rst
new file mode 100644 (file)
index 0000000..6abf0ac
--- /dev/null
@@ -0,0 +1,112 @@
+Frequently Asked Questions
+==========================
+
+This document lists categorized answers and questions with links to the relevant documentation.
+
+Replication
+-----------
+Please note that not all PowerDNS Server backends support master or slave support, see the :doc:`table of backends <../backends/index>`.
+
+My PowerDNS Authoritative Server does not send NOTIFY messages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Don't forget to enable master-support by setting :ref:`setting-master` to ``yes`` in your configuration.
+In :ref:`master mode<master-operation>` PowerDNS Authoritative Server will send NOTIFYs to all nameservers that are listed as NS records in the zone by default.
+
+My PowerDNS Authoritative Server does not start AXFRs
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Don't forget to enable slave-support by setting :ref:`setting-slave` to ``yes`` in your configuration.
+In :ref:`slave mode<slave-operation>` PowerDNS Authoritative Server listens for NOTIFYs from the master IP for zones that are configured as slave zones.
+And will also periodically check for SOA serial number changes at the master.
+
+Can PowerDNS Server act as Slave and Master at the same time?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Yes totally, enable both by saying ``yes`` to :ref:`setting-master` and :ref:`setting-slave` in your configuration.
+
+How can I limit Zone Transfers (AXFR) per Domain?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+With the ALLOW-AXFR-FROM metadata, See :ref:`the documentation <metadata-allow-axfr-from>`.
+
+I have a working Supermaster/Superslave setup but when I remove Domains from the Master they still remain on the Slave. Am I doing something wrong?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+You're not doing anything wrong.
+This is the perfectly normal and expected behavior because the AXFR (DNS Zonetransfer) Protocol does not provide for zone deletion.
+You need to remove the zones from the slave manually or via a custom script.
+
+Operational
+-----------
+
+The ADDITIONAL is section different than BIND's answer, why?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+My server is not answering with a verbose "ADDITIONAL SECTION" that includes A records for the namservers of the domain queried
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The PowerDNS Authoritative Server by default does not 'trust' other zones in its own database.
+You may want to add :ref:`setting-out-of-zone-additional-processing` to ``yes`` in your configuration to tell it to do so.
+If the domain your nameservers are in are known to the backend they will now be included in the additional section.
+
+PowerDNS does not give authoritative answers, how come?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+This is almost always not the case.
+An authoritative answer is recognized by the 'AA' bit being set.
+Many tools prominently print the number of Authority records included in an answer, leading users to conclude that the absence or presence of these records indicates the authority of an answer. This is not the case.
+
+Verily, many misguided country code domain operators have fallen into this trap and demand authority records, even though these are fluff and quite often misleading.
+Invite such operators to look at :rfc:`section 6.2.1 of RFC 1034 <1034#section-6.2.1>`, which shows a correct authoritative answer without authority records.
+In fact, none of the non-deprecated authoritative answers shown have authority records!
+
+Master or Slave support is not working, PowerDNS is not picking up changes
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The Master/Slave apparatus is off by default.
+Turn it on by adding a :ref:`setting-slave` and/or :ref:`setting-master` statement to the configuration file.
+Also, check that the configured backend is master or slave capable and you entered exactly the same string to the Domains tables without the ending dot.
+
+My masters won't allow PowerDNS to access zones as it is using the wrong local IP address
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+By default, PowerDNS lets the kernel pick the source address.
+To set an explicit source address, use the :ref:`setting-query-local-address` and :ref:`setting-query-local-address6` settings.
+
+PowerDNS does not answer queries on all my IP addresses (and I've ignored the warning I got about that at startup)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Please don't ignore what PowerDNS says to you.
+Furthermore, see the documentation for the :ref:`setting-local-address` and :ref:`setting-local-ipv6` settings, and use it to specify which IP addresses PowerDNS should listen on.
+If this is a fail-over address, then the :ref:`setting-local-address-nonexist-fail` and :ref:`setting-local-ipv6-nonexist-fail` settings might interest you.
+
+Linux Netfilter says your conntrack table is full?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Thats a common problem with Netfilter Conntracking and DNS Servers, just tune your kernel variable (``/etc/sysctl.conf``) ``net.ipv4.netfilter.ip_conntrack_max`` up accordingly.
+Try setting it for a million if you don't mind spending some MB of RAM on it for example.
+
+Backends
+--------
+
+Does PowerDNS support splitting of TXT records (multipart or multiline) with the MySQL backend?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+PowerDNS with the :doc:`../backends/generic-sql` do NOT support this.
+Simply make the "content" field in your database the appropriate size for the records you require.
+
+I see this a lot of "Failed to execute mysql_query" or similar log-entries
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Check your MySQL timeout, it may be set too low.
+This can be changed in the ``my.cnf`` file.
+
+Which backend should I use? There are so many!
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+If you have no external constraints, the :doc:`../backends/generic-mysql`, :doc:`../backends/generic-postgresql` and :doc:`../backends/generic-sqlite3` ones are probably the most used and complete.
+
+The Oracle backend also has happy users, the BIND backend is pretty capable too in fact, but many prefer a relational database.
+
+Can I launch multiple backends simultaneously?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+You can.
+This might for example be useful to keep an existing BIND configuration around but to store new zones in, say MySQL.
+The syntax to use is ``launch=bind,gmysql``.
+Do note that multi-backend behaviour is not specified and might change between versions.
+This is especially true when DNSSEC is involved.
+
+I've added extra fields to the domains and/or records table. Will this eventually affect the resolution process in any way?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+No, the :doc:`../backends/generic-sql` use several default queries to provide the PowerDNS Server with data and all of those refer to specific field names, so as long as you don't change any of the predefined field names you are fine.
+
+Can I specify custom sql queries for the gmysql / gpgsql backend or are those hardcoded?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Yes you can override the :ref:`default queries <generic-sql-queries>`.
index 28a5a35e04dd0d6607760080441de9173d2535d7..ee9fcc178c43dbc2c2e848eb1e92c39cf9328e11 100644 (file)
@@ -112,3 +112,7 @@ Use the active column in the resource record table, "yes" by default.
 Setting this to 'yes' will make the backend behave like MyDNS on the TTL
 values. Setting it to 'no' will make it ignore the minimal-ttl of the
 zone. The default is "yes".
+
+Migrating from MyDNS to another SQL backend
+-------------------------------------------
+To use one of the :doc:`generic SQL backend <generic-sql>`, like the :doc:`Postgresql <generic-postgresql>` or :doc:`MySQL <generic-mysql>` backends, the data can be migratedusing the :ref:`Backend to Backend <b2b-migrate>` migration guide.
index d086485912dae35aa62a5218d831be294d587040..bcee287d6584614ac6778316d1360cc427a8f09e 100644 (file)
@@ -4,7 +4,10 @@ Changelogs for 4.0.x
 PowerDNS Authoritative Server 4.0.5
 -----------------------------------
 
-Unreleased
+Released 27th of November 2017
+
+This release fixes PowerDNS Security Advisory
+:doc:`2017-04 <../security-advisories/powerdns-advisory-2017-04>`: Missing check on API operations (CVE-2017-15091).
 
 Bug fixes
 ~~~~~~~~~
@@ -26,6 +29,8 @@ Bug fixes
 - `#5777 <https://github.com/PowerDNS/pdns/pull/5777>`__: Handle a signing pipe worker dying with work still pending
 - `#5815 <https://github.com/PowerDNS/pdns/pull/5815>`__: Ignore SOA-EDIT for PRESIGNED zones. Fixes #5814
 - `#5933 <https://github.com/PowerDNS/pdns/pull/5933>`__: Check return value for all getTSIGKey calls. Fixes #5931
+- `#5996 <https://github.com/PowerDNS/pdns/pull/5996>`__: Deny cache flush, zone retrieve and notify if the API is RO (Security Advisory
+   :doc:`2017-04 <../security-advisories/powerdns-advisory-2017-04>`)
 
 Improvements
 ~~~~~~~~~~~~
index 828b069a3ca64c79d74180ad6891829345b6dd56..27b770abb7a55b7fc7ecb4bd4df0a145ed150104 100644 (file)
@@ -215,7 +215,7 @@ Changelogs for 4.1.x
     :tags: Improvements
     :pullreq: 5842
 
-    Add :ref:`log-timestamp` option. This option can be used to disable
+    Add :ref:`setting-log-timestamp` option. This option can be used to disable
     printing timestamps to stdout, this is useful when using
     systemd-journald or another supervisor that timestamps stdout by
     itself. As the logs will not have 2 timestamps.
index 05f67d598cc0ef5dc5ddcf25a3df569a84a70aab..4655bd470587696b0dca6bc25a8767ad68cb5f9d 100644 (file)
@@ -61,7 +61,7 @@ author = 'PowerDNS.COM BV'
 # The short X.Y version.
 version = '4.1'
 # The full version, including alpha/beta/rc tags.
-release = '4.1.0-alpha0'
+#release = '4.1.0-alpha0'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
index 100e284c088d7b35adf69ba70f647ec10ab3c2bb..a0687bcfc6461ac18aa90826e8373b16b70573b5 100644 (file)
@@ -150,6 +150,9 @@ January 2016.
 INCEPTION (not recommended)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+.. deprecated:: 4.1.0
+  Removed in this release
+
 Sets the SOA serial to the last inception time in YYYYMMDD01 format.
 Uses localtime to find the day for inception time.
 
@@ -158,19 +161,18 @@ Uses localtime to find the day for inception time.
   changes to the zone will get visible on slaves only on the following
   inception day.
 
-.. deprecated:: 4.1.0
-
 INCEPTION-WEEK (not recommended)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+.. deprecated:: 4.1.0
+  Removed in this release
+
 Sets the SOA serial to the number of weeks since the epoch, which is the
 last inception time in weeks.
 
 .. warning::
   Same problem as INCEPTION.
 
-.. deprecated:: 4.1.0
-
 EPOCH
 ^^^^^
 
index 62e967821a8aee7852658f04a16a40f69991cfd7..3d212acb2c76593eaf95cc35a8d097b67e2d4f46 100644 (file)
@@ -92,6 +92,8 @@ Per zone settings
 For permissions, a number of per zone settings are available via the
 :doc:`domain metadata `<domainmetadata>`.
 
+.. _metadata-allow-dnsupdate-from:
+
 ALLOW-DNSUPDATE-FROM
 ~~~~~~~~~~~~~~~~~~~~
 
@@ -109,6 +111,8 @@ allowed per row, but multiple rows can be added. An example:
 This will allow 198.51.100.0/8 and 203.0.113.2/32 to send DNS update
 messages for the example.org domain.
 
+.. _metadata-tsig-allow-dnsupdate:
+
 TSIG-ALLOW-DNSUPDATE
 ~~~~~~~~~~~~~~~~~~~~
 
@@ -143,6 +147,8 @@ update. The TSIG is an alternative means of securing updates, instead of using t
 ``ALLOW-DNSUPDATE-FROM`` setting. If a TSIG key is set, and if ``ALLOW-DNSUPDATE-FROM`` is set,
 the IP(-range) of the updater still needs to be allowed via ``ALLOW-DNSUPDATE-FROM``. 
 
+.. _metadata-forward-dnsupdate:
+
 FORWARD-DNSUPDATE
 ~~~~~~~~~~~~~~~~~
 
@@ -161,6 +167,8 @@ option :ref:`setting-forward-dnsupdate` is set to 'no', as that will disable it
 globally. Using the domainmetadata setting than allows you to enable it
 per domain.
 
+.. _metadata-notify-dnsupdate:
+
 NOTIFY-DNSUPDATE
 ~~~~~~~~~~~~~~~~
 
index 879be8433586d2e302ce2babc95639cd528454aa..d18c5ccf074baa86bcebbced90bafd13db407e31 100644 (file)
@@ -50,7 +50,7 @@ records, add ``allow-axfr-ips=`` to ``pdns.conf``.
 
 API-RECTIFY
 -----------
-.. since:: 4.1.0
+.. versionadded:: 4.1.0
 
 This metadata item controls whether or not a zone is fully rectified on changes
 to the contents of a zone made through the :doc:`API <http-api/index>`.
index a2330d2e34d4376b180b8a6bdaf38a3f7625a6a8..6008071af41f7d7d8cad31b8853fd03d400c1b97 100644 (file)
@@ -143,6 +143,9 @@ list-tsig-keys
 ZONE MANIPULATION COMMANDS
 --------------------------
 
+add-record *ZONE* *NAME* *TYPE* [*TTL*] *CONTENT*
+    Add one or more records of *NAME* and *TYPE* to *ZONE* with *CONTENT* 
+    and optional *TTL*. If *TTL* is not set, default will be used. 
 create-zone *ZONE*
     Create an empty zone named *ZONE*.
 create-slave-zone *ZONE* *MASTER* [*MASTER*]..
index 78f60cdf8a4074ff0880dff61aadf6c9956f26af..653a42c144b01b5627217b404fa6949cf5f18d56 100644 (file)
@@ -136,6 +136,8 @@ the ``example.com`` domain from the ``/tmp/example.com.zone`` file. The
 zone is imported atomically (i.e. it is fully imported, or not) and any
 existing records for that zone are overwritten.
 
+.. _b2b-migrate:
+
 Migrating Data from one Backend to Another Backend
 --------------------------------------------------
 
index 9bf804b6c9d913e7733d2992ab51b843c74611ee..eb1e55fa80ba2c1dda47c70e40a3fea8631c036d 100644 (file)
@@ -1,4 +1,4 @@
-@       86400   IN  SOA pdns-public-ns1.powerdns.com. pieter\.lexis.powerdns.com. 2017112202 10800 3600 604800 10800
+@       86400   IN  SOA pdns-public-ns1.powerdns.com. pieter\.lexis.powerdns.com. 2017112702 10800 3600 604800 10800
 @       3600    IN  NS  pdns-public-ns1.powerdns.com.
 @       3600    IN  NS  pdns-public-ns2.powerdns.com.
 ; Auth
@@ -16,20 +16,20 @@ auth-3.4.7.security-status                              60 IN TXT "3 Upgrade now
 auth-3.4.8.security-status                              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-01/ https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
 auth-3.4.9.security-status                              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-01/ https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
 auth-3.4.10.security-status                             60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
-auth-3.4.11.security-status                             60 IN TXT "1 OK"
-
-auth-4.0.0-alpha1.security-status                       60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0-alpha2.security-status                       60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0-alpha3.security-status                       60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0-beta1.security-status                        60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0-rc1.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0-rc2.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0.security-status                              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.1.security-status                              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.2.security-status                              60 IN TXT "1 OK"
-auth-4.0.3.security-status                              60 IN TXT "1 OK"
-auth-4.0.4-rc1.security-status                          60 IN TXT "1 OK"
-auth-4.0.4.security-status                              60 IN TXT "1 OK"
+auth-3.4.11.security-status                             60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2017-04.html"
+
+auth-4.0.0-alpha1.security-status                       60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0-alpha2.security-status                       60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0-alpha3.security-status                       60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0-beta1.security-status                        60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0-rc1.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0-rc2.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0.security-status                              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.1.security-status                              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.2.security-status                              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2017-04.html"
+auth-4.0.3.security-status                              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2017-04.html"
+auth-4.0.4-rc1.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2017-04.html"
+auth-4.0.4.security-status                              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2017-04.html"
 auth-4.0.5.security-status                              60 IN TXT "1 OK"
 auth-4.1.0-rc1.security-status                          60 IN TXT "1 OK"
 auth-4.1.0-rc2.security-status                          60 IN TXT "1 OK"
@@ -58,37 +58,37 @@ auth-3.4.1-4_deb8u3.debian.security-status              60 IN TXT "3 Upgrade now
 auth-3.4.1-4_deb8u4.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-01/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
 auth-3.4.1-4_deb8u5.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-01/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
 auth-3.4.1-4_deb8u6.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
-auth-3.4.1-4_deb8u7.debian.security-status              60 IN TXT "1 OK"
+auth-3.4.1-4_deb8u7.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2017-04.html"
 
 auth-3.4.4-2_bpo8_1.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-01/ and https://doc.powerdns.com/3/security/powerdns-advisory-2015-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2015-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
 auth-3.4.5-1_bpo8_1.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2015-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
 auth-3.4.6-1_bpo8_1.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
 auth-3.4.7-1_bpo8_1.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-01/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
 
-auth-4.0.0_alpha1-1.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha1-2.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha2-1.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha2-2.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha2-3.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha2-4.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha3-1.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha3-1.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_beta1-1.debian.security-status               60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_beta1-2.debian.security-status               60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0-1.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0-2.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0-3.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0-4.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0-5.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.1-1.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.1-2.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.1-3.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.1-4.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.1-5.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.1-6.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.1-7.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.2-1.debian.security-status                     60 IN TXT "1 OK"
-auth-4.0.3-1.debian.security-status                     60 IN TXT "1 OK"
+auth-4.0.0_alpha1-1.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha1-2.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha2-1.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha2-2.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha2-3.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha2-4.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha3-1.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha3-1.debian.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_beta1-1.debian.security-status               60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_beta1-2.debian.security-status               60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0-1.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0-2.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0-3.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0-4.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0-5.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.1-1.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.1-2.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.1-3.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.1-4.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.1-5.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.1-6.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.1-7.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.2-1.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2017-04.html"
+auth-4.0.3-1.debian.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2017-04.html"
 
 ; Auth Ubuntu
 auth-3.4.1-3.ubuntu.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-01/ and https://doc.powerdns.com/3/security/powerdns-advisory-2015-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
@@ -97,9 +97,9 @@ auth-3.4.5-1.ubuntu.security-status                     60 IN TXT "3 Upgrade now
 auth-3.4.6-1.ubuntu.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
 auth-3.4.7-1.ubuntu.security-status                     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-01/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
 
-auth-4.0.0_alpha1-1.ubuntu.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha2-1.ubuntu.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha2-3build1.ubuntu.security-status        60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
+auth-4.0.0_alpha1-1.ubuntu.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha2-1.ubuntu.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha2-3build1.ubuntu.security-status        60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
 
 ; Auth Raspbian
 auth-3.4.1-3.raspbian.security-status                   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-01/ and https://doc.powerdns.com/3/security/powerdns-advisory-2015-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-03/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-04/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-05/"
@@ -125,24 +125,24 @@ recursor-3.7.0.security-status                          60 IN TXT "3 Upgrade now
 recursor-3.7.1.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-01/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/"
 recursor-3.7.2.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-01/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/"
 recursor-3.7.3.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/"
-recursor-3.7.4.security-status                          60 IN TXT "1 OK"
-
-recursor-4.0.0-alpha1.security-status                   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0-alpha2.security-status                   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0-alpha3.security-status                   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0-beta1.security-status                    60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0-rc1.security-status                      60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.1.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.2.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.3.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.4.security-status                          60 IN TXT "1 OK"
-recursor-4.0.5-rc1.security-status                      60 IN TXT "1 OK"
-recursor-4.0.5-rc2.security-status                      60 IN TXT "1 OK"
-recursor-4.0.5.security-status                          60 IN TXT "1 OK"
-recursor-4.0.6.security-status                          60 IN TXT "1 OK"
+recursor-3.7.4.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-06.html"
+
+recursor-4.0.0-alpha1.security-status                   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0-alpha2.security-status                   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0-alpha3.security-status                   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0-beta1.security-status                    60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0-rc1.security-status                      60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.1.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.2.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.3.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.4.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-03.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-05.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-06.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-07.html"
+recursor-4.0.5-rc1.security-status                      60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-03.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-05.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-06.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-07.html"
+recursor-4.0.5-rc2.security-status                      60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-03.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-05.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-06.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-07.html"
+recursor-4.0.5.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-03.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-05.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-06.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-07.html"
+recursor-4.0.6.security-status                          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-03.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-05.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-06.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-07.html"
 recursor-4.0.7.security-status                          60 IN TXT "1 OK"
-recursor-4.1.0-alpha1.security-status                                  60 IN TXT "1 OK"
+recursor-4.1.0-alpha1.security-status                   60 IN TXT "1 OK"
 recursor-4.1.0-rc1.security-status                      60 IN TXT "1 OK"
 recursor-4.1.0-rc2.security-status                      60 IN TXT "1 OK"
 recursor-4.1.0-rc3.security-status                      60 IN TXT "1 OK"
@@ -154,7 +154,7 @@ recursor-3.6.2-2_deb8u1.debian.security-status          60 IN TXT "3 Upgrade now
 recursor-3.6.2-2_deb8u1_bpo70_1.debian.security-status  60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-01/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/"
 recursor-3.6.2-2_deb8u2.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/"
 recursor-3.6.2-2_deb8u2_bpo70_1.debian.security-status  60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/"
-recursor-3.6.2-2_deb8u3.debian.security-status          60 IN TXT "1 OK"
+recursor-3.6.2-2_deb8u3.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-06.html"
 
 recursor-3.7.2-1.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-01/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/"
 recursor-3.7.2-1_bpo8_1.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-01/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/"
@@ -164,33 +164,33 @@ recursor-3.7.3-1.debian.security-status                 60 IN TXT "3 Upgrade now
 recursor-3.7.3-1_bpo8_1.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/"
 recursor-3.7.3-1_bpo7_1.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/"
 
-recursor-4.0.0_alpha1-1.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0_alpha1-3.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0_alpha2-1.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0_alpha2-2.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0_alpha3-1.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0_beta1-1.debian.security-status           60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0_beta1-2.debian.security-status           60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0_rc1-1.debian.security-status             60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0_rc1-2.debian.security-status             60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0-1.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0-2.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.0-3.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.1-1.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.2-1.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.3-1.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.3-2.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.3-3.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.3-4.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.3-5.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.3-5_exp1.debian.security-status            60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.3-5_exp2.debian.security-status            60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.3-5_exp3.debian.security-status            60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.3-6.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-recursor-4.0.4-1_bpo8_1.debian.security-status         60 IN TXT "1 OK"
-recursor-4.0.4-1_deb9u1.debian.security-status          60 IN TXT "1 OK"
-recursor-4.0.4-1.debian.security-status                 60 IN TXT "1 OK"
-recursor-4.0.5-2.debian.security-status                 60 IN TXT "1 OK"
+recursor-4.0.0_alpha1-1.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0_alpha1-3.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0_alpha2-1.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0_alpha2-2.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0_alpha3-1.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0_beta1-1.debian.security-status           60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0_beta1-2.debian.security-status           60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0_rc1-1.debian.security-status             60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0_rc1-2.debian.security-status             60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0-1.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0-2.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.0-3.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.1-1.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.2-1.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.3-1.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.3-2.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.3-3.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.3-4.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.3-5.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.3-5_exp1.debian.security-status            60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.3-5_exp2.debian.security-status            60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.3-5_exp3.debian.security-status            60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.3-6.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+recursor-4.0.4-1_bpo8_1.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-03.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-05.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-06.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-07.html"
+recursor-4.0.4-1_deb9u1.debian.security-status          60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-03.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-05.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-06.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-07.html"
+recursor-4.0.4-1.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-03.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-05.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-06.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-07.html"
+recursor-4.0.5-2.debian.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-03.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-05.html https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-06.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2017-07.html"
 
 ; Recursor Raspbian
 recursor-3.6.2-2.raspbian.security-status               60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-01/"
@@ -201,8 +201,8 @@ recursor-3.6.2-2.ubuntu.security-status                 60 IN TXT "3 Upgrade now
 recursor-3.7.2-1.ubuntu.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-01/ and https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/"
 recursor-3.7.3-1.ubuntu.security-status                 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2016-02/"
 
-auth-4.0.0_alpha1-1.ubuntu.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
-auth-4.0.0_alpha2-2.ubuntu.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ and https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/"
+auth-4.0.0_alpha1-1.ubuntu.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
+auth-4.0.0_alpha2-2.ubuntu.security-status              60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-02.html and https://doc.powerdns.com/recursor/security-advisories/powerdns-advisory-2016-04.html"
 
 ; Recursor Fedora, EL
 recursor-3.6.2-1.fc19.fedora.security-status            60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/3/security/powerdns-advisory-2015-01/"
@@ -217,21 +217,21 @@ recursor-3.6.2-1.el7.fedora.security-status             60 IN TXT "3 Upgrade now
 ;; Builder Generated packages (auth)
 
 ; Debian
-auth-4.0.0_alpha1-1pdns.jessie.debian.security-status   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha2-1pdns.jessie.debian.security-status   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha3-1pdns.jessie.debian.security-status   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_beta1-1pdns.jessie.debian.security-status    60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
+auth-4.0.0_alpha1-1pdns.jessie.debian.security-status   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha2-1pdns.jessie.debian.security-status   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha3-1pdns.jessie.debian.security-status   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_beta1-1pdns.jessie.debian.security-status    60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
 
 ; Ubuntu
-auth-4.0.0_alpha2-1pdns.wily.ubuntu.security-status     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha2-1pdns.trusty.ubuntu.security-status   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha3-1pdns.trusty.ubuntu.security-status   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_beta1-1pdns.trusty.ubuntu.security-status   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
+auth-4.0.0_alpha2-1pdns.wily.ubuntu.security-status     60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha2-1pdns.trusty.ubuntu.security-status   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha3-1pdns.trusty.ubuntu.security-status   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_beta1-1pdns.trusty.ubuntu.security-status   60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
 
 ; Raspbian
-auth-4.0.0_alpha2-1pdns.jessie.raspbian.security-status 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_alpha3-1pdns.jessie.raspbian.security-status 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
-auth-4.0.0_beta1-1pdns.jessie.raspbian.security-status 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/md/security/powerdns-advisory-2016-02/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-03/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-04/ https://doc.powerdns.com/md/security/powerdns-advisory-2016-05/"
+auth-4.0.0_alpha2-1pdns.jessie.raspbian.security-status 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_alpha3-1pdns.jessie.raspbian.security-status 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
+auth-4.0.0_beta1-1pdns.jessie.raspbian.security-status 60 IN TXT "3 Upgrade now, see https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-02.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-03.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-04.html https://doc.powerdns.com/authoritative/security-advisories/powerdns-advisory-2016-05.html"
 
 ;; Builder Generated packages (recursor)
 
diff --git a/docs/security-advisories/powerdns-advisory-2017-04.rst b/docs/security-advisories/powerdns-advisory-2017-04.rst
new file mode 100644 (file)
index 0000000..971a0a3
--- /dev/null
@@ -0,0 +1,32 @@
+PowerDNS Security Advisory 2017-04: Missing check on API operations
+===================================================================
+
+-  CVE: CVE-2017-15091
+-  Date: November 27th 2017
+-  Credit: everyman
+-  Affects: PowerDNS Authoritative up to and including 4.0.4, 3.4.11
+-  Not affected: PowerDNS Authoritative 4.0.5
+-  Severity: Low
+-  Impact:  Denial of service
+-  Exploit: This problem can be triggered by an attacker with valid
+   API credentials
+-  Risk of system compromise: No
+-  Solution: Upgrade to a non-affected version
+
+An issue has been found in the API component of PowerDNS Authoritative,
+where some operations that have an impact on the state of the server
+are still allowed even though the API has been configured as read-only
+via the
+`api-readonly <https://docs.powerdns.com/authoritative/settings.html#api-readonly>`__
+keyword.
+This missing check allows an attacker with valid API credentials to flush
+the cache, trigger a zone transfer or send a NOTIFY. This issue has been
+assigned CVE-2017-15091.
+
+PowerDNS Authoritative up to and including 4.0.4 and 3.4.11 are affected.
+
+For those unable to upgrade to a new version, a minimal patch is
+`available <https://downloads.powerdns.com/patches/2017-04>`__
+
+We would like to thank everyman for finding and subsequently reporting
+this issue.
index 97bab5eb56a9fcb9c3e8b6e13d5cca6b6cbe4321..8e3bb547bd42528ff093f218e5fd144e531f039f 100644 (file)
@@ -474,7 +474,7 @@ void OpenSSLRSADNSCryptoKeyEngine::fromISCMap(DNSKEYRecordContent& drc, std::map
   if (iqmp == NULL) {
     RSA_free(key);
     BN_clear_free(dmq1);
-    BN_clear_free(iqmp);
+    BN_clear_free(dmp1);
     throw runtime_error(getName()+" allocation of BIGNUM iqmp failed");
   }
   RSA_set0_crt_params(key, dmp1, dmq1, iqmp);
@@ -562,6 +562,7 @@ void OpenSSLRSADNSCryptoKeyEngine::fromPublicKeyString(const std::string& input)
   BIGNUM *n = BN_bin2bn((unsigned char*)modulus.c_str(), modulus.length(), NULL);
   if (!n) {
     RSA_free(key);
+    BN_clear_free(e);
     throw runtime_error(getName()+" error loading n value of public key");
   }
 
@@ -866,6 +867,7 @@ void OpenSSLECDSADNSCryptoKeyEngine::fromPublicKeyString(const std::string& inpu
 
   int ret = EC_POINT_oct2point(d_ecgroup, pub_key, (unsigned char*) ecdsaPoint.c_str(), ecdsaPoint.length(), d_ctx);
   if (ret != 1) {
+    EC_POINT_free(pub_key);
     throw runtime_error(getName()+" reading ECP point from binary failed");
   }
 
index fed8b01a33841ea56951af4c6db2836947db8025..e9b9268679cd896f5bfb1ad3da2820cef6b71896 100644 (file)
@@ -2166,6 +2166,10 @@ static void houseKeeping(void *)
         {
           L<<Logger::Error<<"Exception while performing security poll: "<<e.reason<<endl;
         }
+        catch(ImmediateServFailException &e)
+        {
+          L<<Logger::Error<<"Exception while performing security poll: "<<e.reason<<endl;
+        }
         catch(...)
         {
           L<<Logger::Error<<"Exception while performing security poll"<<endl;
index d7694095b3ce9b55424365d050136112b0907b2b..82c24b96cf08ea455305e9a1dbc288e7f127fe8a 100644 (file)
@@ -6,7 +6,11 @@ This page has all the changelogs for the PowerDNS Recursor 4.0 release train.
 PowerDNS Recursor 4.0.7
 -----------------------
 
-Unreleased
+Released 27th of November 2017
+
+This release fixes PowerDNS Security Advisories :doc:`2017-03 <../security-advisories/powerdns-advisory-2017-03>`,
+:doc:`2017-05 <../security-advisories/powerdns-advisory-2017-05>`, :doc:`2017-06 <../security-advisories/powerdns-advisory-2017-06>`
+and :doc:`2017-07 <../security-advisories/powerdns-advisory-2017-07>`.
 
 Bug fixes
 ^^^^^^^^^
@@ -18,6 +22,9 @@ Bug fixes
 - `#5740 <https://github.com/PowerDNS/pdns/pull/5740>`__: Lowercase all outgoing qnames when lowercase-outgoing is set
 - `#5599 <https://github.com/PowerDNS/pdns/pull/5599>`__: Fix libatomic detection on ppc64
 - `#5961 <https://github.com/PowerDNS/pdns/pull/5961>`__: Edit configname definition to include the 'config-name' argument (Jake Reynolds)
+- `#5995 <https://github.com/PowerDNS/pdns/pull/5995>`__: Security Advisories :doc:`2017-03 <../security-advisories/powerdns-advisory-2017-03>`,
+  :doc:`2017-05 <../security-advisories/powerdns-advisory-2017-05>`, :doc:`2017-06 <../security-advisories/powerdns-advisory-2017-06>` and
+  :doc:`2017-07 <../security-advisories/powerdns-advisory-2017-07>`.
 
 Improvements
 ^^^^^^^^^^^^
diff --git a/pdns/recursordist/docs/security-advisories/powerdns-advisory-2017-03.rst b/pdns/recursordist/docs/security-advisories/powerdns-advisory-2017-03.rst
new file mode 100644 (file)
index 0000000..c13a066
--- /dev/null
@@ -0,0 +1,28 @@
+PowerDNS Security Advisory 2017-03: Insufficient validation of DNSSEC signatures
+================================================================================
+
+-  CVE: CVE-2017-15090
+-  Date: November 27th 2017
+-  Credit: Kees Monshouwer
+-  Affects: PowerDNS Recursor from 4.0.0 and up to and including 4.0.6
+-  Not affected: PowerDNS Recursor < 4.0.0, 4.0.7
+-  Severity: Medium
+-  Impact: Records manipulation
+-  Exploit: This problem can be triggered by an attacker in position of
+   man-in-the-middle
+-  Risk of system compromise: No
+-  Solution: Upgrade to a non-affected version
+
+An issue has been found in the DNSSEC validation component of PowerDNS Recursor,
+where the signatures might have been accepted as valid even if the signed data
+was not in bailiwick of the DNSKEY used to sign it. This allows an attacker in
+position of man-in-the-middle to alter the content of records by issuing a valid
+signature for the crafted records. This issue has been assigned CVE-2017-15090.
+
+PowerDNS Recursor from 4.0.0 up to and including 4.0.6 are affected.
+
+For those unable to upgrade to a new version, a minimal patch is
+`available <https://downloads.powerdns.com/patches/2017-03>`__
+
+We would like to thank Kees Monshouwer for finding and subsequently reporting
+this issue.
diff --git a/pdns/recursordist/docs/security-advisories/powerdns-advisory-2017-05.rst b/pdns/recursordist/docs/security-advisories/powerdns-advisory-2017-05.rst
new file mode 100644 (file)
index 0000000..5ab5e47
--- /dev/null
@@ -0,0 +1,27 @@
+PowerDNS Security Advisory 2017-05: Cross-Site Scripting in the web interface
+=============================================================================
+
+-  CVE: CVE-2017-15092
+-  Date: November 27th 2017
+-  Credit: Nixu, Chris Navarrete of Fortinet's Fortiguard Labs
+-  Affects: PowerDNS Recursor from 4.0.0 up to and including 4.0.6
+-  Not affected: PowerDNS Recursor 4.0.7, 3.7.x
+-  Severity: Medium
+-  Impact: Alteration and denial of service of the web interface
+-  Exploit: This problem can be triggered by an attacker sending DNS queries
+   to the server
+-  Risk of system compromise: No
+-  Solution: Upgrade to a non-affected version
+
+An issue has been found in the web interface of PowerDNS Recursor, where the
+qname of DNS queries was displayed without any escaping, allowing a remote
+attacker to inject HTML and Javascript code into the web interface, altering
+the content. This issue has been assigned CVE-2017-15092.
+
+PowerDNS Recursor from 4.0.0 up to and including 4.0.6 are affected.
+
+For those unable to upgrade to a new version, a minimal patch is
+`available <https://downloads.powerdns.com/patches/2017-05>`__
+
+We would like to thank Nixu and Chris Navarrete of Fortinet's Fortiguard Labs
+for independently finding and reporting this issue.
diff --git a/pdns/recursordist/docs/security-advisories/powerdns-advisory-2017-06.rst b/pdns/recursordist/docs/security-advisories/powerdns-advisory-2017-06.rst
new file mode 100644 (file)
index 0000000..635c7cf
--- /dev/null
@@ -0,0 +1,33 @@
+PowerDNS Security Advisory 2017-06: Configuration file injection in the API
+===========================================================================
+
+-  CVE: CVE-2017-15093
+-  Date: November 27th 2017
+-  Credit: Nixu
+-  Affects: PowerDNS Recursor up to and including 4.0.6, 3.7.4
+-  Not affected: PowerDNS Recursor 4.0.7
+-  Severity: Medium
+-  Impact: Alteration of configuration by an API user
+-  Exploit: This problem can be triggered by an attacker with valid API
+   credentials
+-  Risk of system compromise: No
+-  Solution: Upgrade to a non-affected version
+-  Workaround: Disable the ability to alter the configuration via the API
+   by setting `api-config-dir` to an empty value (default), or set the API
+   read-only via the `api-readonly` setting.
+
+An issue has been found in the API of PowerDNS Recursor during a source code
+audit by Nixu. When `api-config-dir` is set to a non-empty value, which is not
+the case by default, the API allows an authorized user to update the Recursor's
+ACL by adding and removing netmasks, and to configure forward zones. It was
+discovered that the new netmask and IP addresses of forwarded zones were not
+sufficiently validated, allowing an authenticated user to inject new
+configuration directives into the Recursor's configuration. This issue has been
+assigned CVE-2017-15093.
+
+PowerDNS Recursor up to and including 4.0.6 and 3.7.4 are affected.
+
+For those unable to upgrade to a new version, a minimal patch is
+`available <https://downloads.powerdns.com/patches/2017-06>`__
+
+We would like to thank Nixu for finding and subsequently reporting this issue.
diff --git a/pdns/recursordist/docs/security-advisories/powerdns-advisory-2017-07.rst b/pdns/recursordist/docs/security-advisories/powerdns-advisory-2017-07.rst
new file mode 100644 (file)
index 0000000..a8537ff
--- /dev/null
@@ -0,0 +1,30 @@
+PowerDNS Security Advisory 2017-07: Memory leak in DNSSEC parsing
+=================================================================
+
+-  CVE: CVE-2017-15094
+-  Date: November 27th 2017
+-  Credit: Nixu
+-  Affects: PowerDNS Recursor from 4.0.0 up to and including 4.0.6
+-  Not affected: PowerDNS Recursor 4.0.7
+-  Severity: Medium
+-  Impact:  Denial of service
+-  Exploit: This problem can be triggered by an authoritative server
+   sending crafted ECDSA DNSSEC keys to the Recursor.
+-  Risk of system compromise: No
+-  Solution: Upgrade to a non-affected version
+-  Workaround: Disable DNSSEC validation by setting the `dnssec` parameter
+   to `off` or `process-no-validate` (default).
+
+An issue has been found in the DNSSEC parsing code of PowerDNS Recursor during
+a code audit by Nixu, leading to a memory leak when parsing specially crafted
+DNSSEC ECDSA keys. These keys are only parsed when validation is enabled by
+setting `dnssec` to a value other than `off` or `process-no-validate` (default).
+This issue has been assigned CVE-2017-15094.
+
+PowerDNS Recursor from 4.0.0 up to and including 4.0.6 are affected.
+
+For those unable to upgrade to a new version, a minimal patch is
+`available <https://downloads.powerdns.com/patches/2017-07>`__
+
+We would like to thank Nixu for finding and subsequently reporting
+this issue.
index d51c43d41e5072db6fc89f78cd32d4398fa0c8b6..d7684150879a4ecdd66567df61de8afd1c9efe39 100644 (file)
@@ -5855,6 +5855,121 @@ BOOST_AUTO_TEST_CASE(test_dnssec_ds_sign_loop) {
   BOOST_CHECK_EQUAL(queriesCount, 9);
 }
 
+BOOST_AUTO_TEST_CASE(test_dnssec_dnskey_signed_child) {
+  /* check that we don't accept a signer below us */
+  std::unique_ptr<SyncRes> sr;
+  initSR(sr, true);
+
+  setDNSSECValidation(sr, DNSSECMode::ValidateAll);
+
+  primeHints();
+  const DNSName target("www.powerdns.com.");
+  testkeysset_t keys;
+
+  auto luaconfsCopy = g_luaconfs.getCopy();
+  luaconfsCopy.dsAnchors.clear();
+  generateKeyMaterial(g_rootdnsname, DNSSECKeeper::ECDSA256, DNSSECKeeper::SHA256, keys, luaconfsCopy.dsAnchors);
+  generateKeyMaterial(DNSName("com."), DNSSECKeeper::ECDSA256, DNSSECKeeper::SHA256, keys);
+  generateKeyMaterial(DNSName("powerdns.com."), DNSSECKeeper::ECDSA256, DNSSECKeeper::SHA256, keys);
+  generateKeyMaterial(DNSName("www.powerdns.com."), DNSSECKeeper::ECDSA256, DNSSECKeeper::SHA256, keys);
+  generateKeyMaterial(DNSName("sub.www.powerdns.com."), DNSSECKeeper::ECDSA256, DNSSECKeeper::SHA256, keys);
+
+  g_luaconfs.setState(luaconfsCopy);
+
+  size_t queriesCount = 0;
+
+  sr->setAsyncCallback([target,&queriesCount,keys](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, std::shared_ptr<RemoteLogger> outgoingLogger, LWResult* res) {
+      queriesCount++;
+
+      if (type == QType::DS) {
+        DNSName auth(domain);
+        auth.chopOff();
+
+        setLWResult(res, 0, true, false, true);
+        if (domain == target) {
+          addRecordToLW(res, domain, QType::SOA, "ns1.powerdns.com. blah. 2017032800 1800 900 604800 86400", DNSResourceRecord::AUTHORITY, 86400);
+          addRRSIG(keys, res->d_records, target, 300);
+        }
+        else {
+          addDS(domain, 300, res->d_records, keys, DNSResourceRecord::ANSWER);
+          addRRSIG(keys, res->d_records, auth, 300);
+        }
+        return 1;
+      }
+      else if (type == QType::DNSKEY) {
+        setLWResult(res, 0, true, false, true);
+        addDNSKEY(keys, domain, 300, res->d_records);
+        if (domain == DNSName("www.powerdns.com.")) {
+          addRRSIG(keys, res->d_records, DNSName("sub.www.powerdns.com."), 300);
+        }
+        else {
+          addRRSIG(keys, res->d_records, domain, 300);
+        }
+        return 1;
+      }
+      else {
+        if (isRootServer(ip)) {
+          setLWResult(res, 0, false, false, true);
+          addRecordToLW(res, "com.", QType::NS, "a.gtld-servers.com.", DNSResourceRecord::AUTHORITY, 3600);
+          addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
+          addDS(DNSName("com."), 300, res->d_records, keys);
+          addRRSIG(keys, res->d_records, DNSName("."), 300);
+          return 1;
+        }
+        else if (ip == ComboAddress("192.0.2.1:53")) {
+          if (domain == DNSName("com.")) {
+            setLWResult(res, 0, true, false, true);
+            addRecordToLW(res, domain, QType::NS, "a.gtld-servers.com.");
+            addRRSIG(keys, res->d_records, domain, 300);
+            addRecordToLW(res, "a.gtld-servers.com.", QType::A, "192.0.2.1", DNSResourceRecord::ADDITIONAL, 3600);
+            addRRSIG(keys, res->d_records, domain, 300);
+          }
+          else {
+            setLWResult(res, 0, false, false, true);
+            addRecordToLW(res, "powerdns.com.", QType::NS, "ns1.powerdns.com.", DNSResourceRecord::AUTHORITY, 3600);
+            addDS(DNSName("powerdns.com."), 300, res->d_records, keys);
+            addRRSIG(keys, res->d_records, DNSName("com."), 300);
+            addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
+          }
+          return 1;
+        }
+        else if (ip == ComboAddress("192.0.2.2:53")) {
+          if (type == QType::NS) {
+            setLWResult(res, 0, true, false, true);
+            addRecordToLW(res, domain, QType::NS, "ns1.powerdns.com.");
+            addRRSIG(keys, res->d_records, domain, 300);
+            addRecordToLW(res, "ns1.powerdns.com.", QType::A, "192.0.2.2", DNSResourceRecord::ADDITIONAL, 3600);
+            addRRSIG(keys, res->d_records, domain, 300);
+          }
+          else {
+            setLWResult(res, 0, true, false, true);
+            addRecordToLW(res, domain, QType::A, "192.0.2.42");
+            addRRSIG(keys, res->d_records, domain, 300);
+          }
+
+          return 1;
+        }
+      }
+
+      return 0;
+    });
+
+  vector<DNSRecord> ret;
+  int res = sr->beginResolve(target, QType(QType::A), QClass::IN, ret);
+  BOOST_CHECK_EQUAL(res, RCode::NoError);
+  BOOST_CHECK_EQUAL(sr->getValidationState(), Bogus);
+  BOOST_REQUIRE_EQUAL(ret.size(), 2);
+  BOOST_CHECK_EQUAL(queriesCount, 9);
+
+  /* again, to test the cache */
+  ret.clear();
+  res = sr->beginResolve(target, QType(QType::A), QClass::IN, ret);
+  BOOST_CHECK_EQUAL(res, RCode::NoError);
+  BOOST_CHECK_EQUAL(sr->getValidationState(), Bogus);
+  BOOST_REQUIRE_EQUAL(ret.size(), 2);
+  BOOST_CHECK_EQUAL(queriesCount, 9);
+}
+
 BOOST_AUTO_TEST_CASE(test_dnssec_no_ds_on_referral_insecure) {
   std::unique_ptr<SyncRes> sr;
   initSR(sr, true);
@@ -8879,6 +8994,86 @@ BOOST_AUTO_TEST_CASE(test_dnssec_validation_from_cname_cache_bogus) {
   BOOST_CHECK_EQUAL(queriesCount, 5);
 }
 
+BOOST_AUTO_TEST_CASE(test_dnssec_validation_additional_without_rrsig) {
+  /*
+    We get a record from a secure zone in the additional section, without
+    the corresponding RRSIG. The record should not be marked as authoritative
+    and should be correctly validated.
+  */
+  std::unique_ptr<SyncRes> sr;
+  initSR(sr, true);
+
+  setDNSSECValidation(sr, DNSSECMode::Process);
+
+  primeHints();
+  const DNSName target("com.");
+  const DNSName addTarget("nsX.com.");
+  testkeysset_t keys;
+
+  auto luaconfsCopy = g_luaconfs.getCopy();
+  luaconfsCopy.dsAnchors.clear();
+  generateKeyMaterial(g_rootdnsname, DNSSECKeeper::ECDSA256, DNSSECKeeper::SHA256, keys, luaconfsCopy.dsAnchors);
+  g_luaconfs.setState(luaconfsCopy);
+
+  size_t queriesCount = 0;
+
+  sr->setAsyncCallback([target,addTarget,&queriesCount,keys](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, std::shared_ptr<RemoteLogger> outgoingLogger, LWResult* res) {
+      queriesCount++;
+
+      if (type == QType::DS || type == QType::DNSKEY) {
+        if (domain == addTarget) {
+          DNSName auth(domain);
+          /* no DS for com, auth will be . */
+          auth.chopOff();
+          return genericDSAndDNSKEYHandler(res, domain, auth, type, keys, false);
+        }
+        return genericDSAndDNSKEYHandler(res, domain, domain, type, keys, false);
+      }
+      else {
+        if (domain == target && type == QType::A) {
+          setLWResult(res, 0, true, false, true);
+          addRecordToLW(res, target, QType::A, "192.0.2.1");
+          addRRSIG(keys, res->d_records, DNSName("."), 300);
+          addRecordToLW(res, addTarget, QType::A, "192.0.2.42", DNSResourceRecord::ADDITIONAL);
+          /* no RRSIG for the additional record */
+          return 1;
+        } else if (domain == addTarget && type == QType::A) {
+          setLWResult(res, 0, true, false, true);
+          addRecordToLW(res, addTarget, QType::A, "192.0.2.42");
+          addRRSIG(keys, res->d_records, DNSName("."), 300);
+          return 1;
+        }
+      }
+
+      return 0;
+    });
+
+  vector<DNSRecord> ret;
+  /* first query for target/A, will pick up the additional record as non-auth / unvalidated */
+  sr->setDNSSECValidationRequested(false);
+  int res = sr->beginResolve(target, QType(QType::A), QClass::IN, ret);
+  BOOST_CHECK_EQUAL(res, RCode::NoError);
+  BOOST_CHECK_EQUAL(sr->getValidationState(), Indeterminate);
+  BOOST_CHECK_EQUAL(ret.size(), 2);
+  for (const auto& record : ret) {
+    BOOST_CHECK(record.d_type == QType::RRSIG || record.d_type == QType::A);
+  }
+  BOOST_CHECK_EQUAL(queriesCount, 1);
+
+  ret.clear();
+  /* ask for the additional record directly, we should not use
+     the non-auth one and issue a new query, properly validated */
+  sr->setDNSSECValidationRequested(true);
+  res = sr->beginResolve(addTarget, QType(QType::A), QClass::IN, ret);
+  BOOST_CHECK_EQUAL(res, RCode::NoError);
+  BOOST_CHECK_EQUAL(sr->getValidationState(), Secure);
+  BOOST_CHECK_EQUAL(ret.size(), 2);
+  for (const auto& record : ret) {
+    BOOST_CHECK(record.d_type == QType::RRSIG || record.d_type == QType::A);
+  }
+  BOOST_CHECK_EQUAL(queriesCount, 5);
+}
+
 BOOST_AUTO_TEST_CASE(test_dnssec_validation_from_negcache_secure) {
   /*
     Validation is optional, and the first query does not ask for it,
index f55b5b6880659986bc3dde555c2c035707ace937..fa7a0fd69f3cdedf0d2de08f42460993a85bfa52 100644 (file)
@@ -63,12 +63,7 @@ bool editSOARecord(DNSZoneRecord& rr, const string& kind) {
 uint32_t calculateEditSOA(const DNSZoneRecord& rr, const string& kind)
 {
   auto src = getRR<SOARecordContent>(rr.dr);
-  if(pdns_iequals(kind,"INCEPTION")) {
-    L<<Logger::Warning<<"Deprecation warning: The 'INCEPTION' soa-edit value will be removed in PowerDNS 4.1"<<endl;
-    time_t inception = getStartOfWeek();
-    return localtime_format_YYYYMMDDSS(inception, 1);
-  }
-  else if(pdns_iequals(kind,"INCEPTION-INCREMENT")) {
+  if(pdns_iequals(kind,"INCEPTION-INCREMENT")) {
     time_t inception = getStartOfWeek();
     uint32_t inception_serial = localtime_format_YYYYMMDDSS(inception, 1);
     uint32_t dont_increment_after = localtime_format_YYYYMMDDSS(inception + 2*86400, 99);
@@ -79,17 +74,11 @@ uint32_t calculateEditSOA(const DNSZoneRecord& rr, const string& kind)
       return (src->d_st.serial + 2); /* "<inceptionday>00" and "<inceptionday>01" are reserved for inception increasing, so increment sd.serial by two */
     }
   }
-  else if(pdns_iequals(kind,"INCEPTION-WEEK")) {
-    L<<Logger::Warning<<"Deprecation warning: The 'INCEPTION-WEEK' soa-edit value will be removed in PowerDNS 4.1"<<endl;
-    time_t inception = getStartOfWeek();
-    return ( inception / (7*86400) );
-  }
   else if(pdns_iequals(kind,"INCREMENT-WEEKS")) {
     time_t inception = getStartOfWeek();
     return (src->d_st.serial + (inception / (7*86400)));
   }
   else if(pdns_iequals(kind,"EPOCH")) {
-    L<<Logger::Warning<<"Deprecation warning: The 'EPOCH' soa-edit value will be removed in PowerDNS 4.1"<<endl;
     return time(0);
   }
   else if(pdns_iequals(kind,"INCEPTION-EPOCH")) {
index 111128258e9e99ed5fc3bb21773f4159f55f814a..49bb16513061cb3e97a64ba493ef11ffe7d77749 100644 (file)
@@ -1772,7 +1772,7 @@ vState SyncRes::validateDNSKeys(const DNSName& zone, const std::vector<DNSRecord
   if (!signatures.empty()) {
     DNSName signer = getSigner(signatures);
 
-    if (!signer.empty() && signer.isPartOf(zone)) {
+    if (!signer.empty() && zone.isPartOf(signer)) {
       vState state = getDSRecords(signer, ds, false, depth);
 
       if (state != Secure) {
@@ -2008,7 +2008,19 @@ RCode::rcodes_ SyncRes::updateCacheFromRecords(unsigned int depth, LWResult& lwr
     if(i->second.records.empty()) // this happens when we did store signatures, but passed on the records themselves
       continue;
 
-    bool isAA = lwr.d_aabit;
+    /* Even if the AA bit is set, additional data cannot be considered
+       as authoritative. This is especially important during validation
+       because keeping records in the additional section is allowed even
+       if the corresponding RRSIGs are not included, without setting the TC
+       bit, as stated in rfc4035's section 3.1.1.  Including RRSIG RRs in a Response:
+       "When placing a signed RRset in the Additional section, the name
+       server MUST also place its RRSIG RRs in the Additional section.
+       If space does not permit inclusion of both the RRset and its
+       associated RRSIG RRs, the name server MAY retain the RRset while
+       dropping the RRSIG RRs.  If this happens, the name server MUST NOT
+       set the TC bit solely because these RRSIG RRs didn't fit."
+    */
+    bool isAA = lwr.d_aabit && i->first.place != DNSResourceRecord::ADDITIONAL;
     if (isAA && isCNAMEAnswer && (i->first.place != DNSResourceRecord::ANSWER || i->first.type != QType::CNAME)) {
       /*
         rfc2181 states:
index d30bd6d771290d49432f46a531915b036d003e83..70f4ce779da0a78f4bed30bc53f07a44294cbf16 100644 (file)
@@ -1443,7 +1443,7 @@ static void apiServerZoneExport(HttpRequest* req, HttpResponse* resp) {
 static void apiServerZoneAxfrRetrieve(HttpRequest* req, HttpResponse* resp) {
   DNSName zonename = apiZoneIdToName(req->parameters["id"]);
 
-  if(req->method != "PUT")
+  if(req->method != "PUT" || ::arg().mustDo("api-readonly"))
     throw HttpMethodNotAllowedException();
 
   UeberBackend B;
@@ -1462,7 +1462,7 @@ static void apiServerZoneAxfrRetrieve(HttpRequest* req, HttpResponse* resp) {
 static void apiServerZoneNotify(HttpRequest* req, HttpResponse* resp) {
   DNSName zonename = apiZoneIdToName(req->parameters["id"]);
 
-  if(req->method != "PUT")
+  if(req->method != "PUT" || ::arg().mustDo("api-readonly"))
     throw HttpMethodNotAllowedException();
 
   UeberBackend B;
@@ -1824,7 +1824,7 @@ static void apiServerSearchData(HttpRequest* req, HttpResponse* resp) {
 }
 
 void apiServerCacheFlush(HttpRequest* req, HttpResponse* resp) {
-  if(req->method != "PUT")
+  if(req->method != "PUT" || ::arg().mustDo("api-readonly"))
     throw HttpMethodNotAllowedException();
 
   DNSName canon = apiNameToDNSName(req->getvars["domain"]);
index e1192d92594a49a93a05145a8adc45019b06c4d9..a33c259660bec515a4b9f70a5e092d57ada0c776 100644 (file)
@@ -655,7 +655,7 @@ distributor-threads=1""".format(confdir=confdir,
         msgFlags = dns.flags.to_text(msg.flags).split()
         missingFlags = [flag for flag in flags if flag not in msgFlags]
 
-        msgEdnsFlags = dns.flags.edns_to_text(msg.flags).split()
+        msgEdnsFlags = dns.flags.edns_to_text(msg.ednsflags).split()
         missingEdnsFlags = [ednsflag for ednsflag in ednsflags if ednsflag not in msgEdnsFlags]
 
         if len(missingFlags) or len(missingEdnsFlags) or len(msgFlags) > len(flags):
index 4e4c3eb88585c4f59bfda6db518865e0349ebf7c..3462ee267dcc380b8f31051955fca2b500b2ac1f 100644 (file)
@@ -40,7 +40,7 @@ forward-zones+=undelegated.insecure.example=%s.12
         res = self.sendUDPQuery(query)
 
         self.assertRcodeEqual(res, dns.rcode.NOERROR)
-        self.assertMessageHasFlags(res, ['QR', 'RA', 'RD'], ['DO'])
+        self.assertMessageHasFlags(res, ['QR', 'RA', 'RD'], [])
         self.assertRRsetInAnswer(res, expected)
 
     def testUndelegatedForwardedZoneExisting(self):
@@ -56,7 +56,7 @@ forward-zones+=undelegated.insecure.example=%s.12
         res = self.sendUDPQuery(query)
 
         self.assertRcodeEqual(res, dns.rcode.SERVFAIL)
-        self.assertMessageHasFlags(res, ['QR', 'RA', 'RD'], ['DO'])
+        self.assertMessageHasFlags(res, ['QR', 'RA', 'RD'], [])
 
     def testUndelegatedForwardedZoneNXDOMAIN(self):
         """
@@ -71,7 +71,7 @@ forward-zones+=undelegated.insecure.example=%s.12
         res = self.sendUDPQuery(query)
 
         self.assertRcodeEqual(res, dns.rcode.SERVFAIL)
-        self.assertMessageHasFlags(res, ['QR', 'RA', 'RD'], ['DO'])
+        self.assertMessageHasFlags(res, ['QR', 'RA', 'RD'], [])
 
     def testUndelegatedForwardedInsecureZoneExisting(self):
         """
@@ -87,7 +87,7 @@ forward-zones+=undelegated.insecure.example=%s.12
         res = self.sendUDPQuery(query)
 
         self.assertRcodeEqual(res, dns.rcode.NOERROR)
-        self.assertMessageHasFlags(res, ['QR', 'RA', 'RD'], ['DO'])
+        self.assertMessageHasFlags(res, ['QR', 'RA', 'RD'], [])
         self.assertRRsetInAnswer(res, expected)
 
     def testUndelegatedForwardedInsecureZoneNXDOMAIN(self):
@@ -103,7 +103,7 @@ forward-zones+=undelegated.insecure.example=%s.12
         res = self.sendUDPQuery(query)
 
         self.assertRcodeEqual(res, dns.rcode.NXDOMAIN)
-        self.assertMessageHasFlags(res, ['QR', 'RA', 'RD'], ['DO'])
+        self.assertMessageHasFlags(res, ['QR', 'RA', 'RD'], [])
 
     def testBothSecureCNAMEAtApex(self):
         """
@@ -119,7 +119,7 @@ forward-zones+=undelegated.insecure.example=%s.12
         self.assertRRsetInAnswer(res, expectedA)
         self.assertRRsetInAnswer(res, expectedCNAME)
         self.assertRcodeEqual(res, dns.rcode.NOERROR)
-        self.assertMessageHasFlags(res, ['QR', 'RD', 'RA', 'AD'], ['DO'])
+        self.assertMessageHasFlags(res, ['QR', 'RD', 'RA', 'AD'], [])
 
     @classmethod
     def startResponders(cls):
index 79fbe43fba67b145013fe0f8a1be98eb10dacd76..7665602bd0a67a426b435df2a9936b685f1d3ae1 100644 (file)
@@ -18,7 +18,7 @@ class testSortlist(RecursorTest):
 
         res = self.sendUDPQuery(msg, fwparams=dict(one_rr_per_rrset=True))
 
-        self.assertMessageHasFlags(res, ['QR', 'RA', 'RD'], ['DO'])
+        self.assertMessageHasFlags(res, ['QR', 'RA', 'RD'], [])
         self.assertRcodeEqual(res, dns.rcode.NOERROR)
 
         indexCNAME = -1