Bug 251563

Summary: dns/unbound: Update to 1.13.0
Product: Ports & Packages Reporter: Jaap Akkerhuis <jaap>
Component: Individual Port(s)Assignee: Bernard Spil <brnrd>
Status: Closed FIXED    
Severity: Affects Many People CC: brnrd, fernape, garga, ports-secteam, tatsuki_makino
Priority: --- Keywords: buildisok
Version: LatestFlags: brnrd: merge-quarterly+
Hardware: Any   
OS: Any   
URL: https://www.nlnetlabs.nl/news/2020/Dec/03/unbound-1.13.0-released/
Attachments:
Description Flags
Patch to update jaap: maintainer-approval+

Description Jaap Akkerhuis 2020-12-03 13:51:23 UTC
Created attachment 220216 [details]
Patch to update

This version has fixes to connect for UDP sockets, slowing down
potential ICMP side channel leakage.  The fix can be controlled with the
option udp-connect: yes, it is enabled by default.

Additionally CVE-2020-28935 is fixed, this solves a problem where the
pidfile is altered by a symlink, and fails if a symlink is encountered.
See https://nlnetlabs.nl/downloads/unbound/CVE-2020-28935.txt for more
information.

New features are upstream TCP and TLS query reuse, where a channel is
reused for several queries.  And http-notls-downstream: yesno for
unencrypted DoH, useful for back end support servers.  The option
infra-keep-probing can be used to probe hosts that are down more
frequently.

The options edns-client-string and edns-client-string-opcode can be used
to add an EDNS option with the specified string in queries towards
servers, with the servers specified by IP address.  It replaces the
edns-client-tag option.

The released version equals the 1.13.0rc4 with an added fix for stream
reuse and tcp fast open.

Features
- Pass the comm_reply information to the inplace_cb_reply* functions
  during the mesh state and update the documentation on that.
- Fix #330: [Feature request] Add unencrypted DNS over HTTPS support.
  This adds the option http-notls-downstream: yesno to change that,
  and the dohclient test code has the -n option.
- Merge PR #228 : infra-keep-probing option to probe hosts that are
  down.  Add infra-keep-probing: yes option. Hosts that are down are
  probed more frequently.
  With the option turned on, it probes about every 120 seconds,
  eventually after exponential backoff, and that keeps that way. If
  traffic keeps up for the domain. It probes with one at a time, eg.
  one query is allowed to probe, other queries within that 120 second
  interval are turned away.
- Merge PR #313 from Ralph Dolmans: Replace edns-client-tag with
  edns-client-string option.
- Merge PR #283 : Stream reuse.  This implements upstream stream
  reuse for performing several queries over the same TCP or TLS
  channel.
- Fix to connect() to UDP destinations, default turned on,
  this lowers vulnerability to ICMP side channels.
  Option to toggle udp-connect, default is enabled.

Bug Fixes
- Fix #319: potential memory leak on config failure, in rpz config.
- Fix dnstap socket and the chroot not applied properly to the dnstap
  socket path.
- Fix warning in libnss compile, nss_buf2dsa is not used without DSA.
- Fix #323: unbound testsuite fails on mock build in systemd-nspawn
  if systemd support is build.
- Fix for python reply callback to see mesh state reply_list member,
  it only removes it briefly for the commpoint call so that it does
  not drop it and attempt to modify the reply list during reply.
- Fix that if there are on reply callbacks, those are called per
  reply and a new message created if that was modified by the call.
- Free up auth zone parse region after use for lookup of host
- Merge PR #326 from netblue30: DoH: implement content-length
  header field.
- DoH content length, simplify code, remove declaration after
  statement and fix cast warning.
- Fix that if there are reply callbacks for the given rcode, those
  are called per reply and a new message created if that was modified
  by the call.
- Fix that the out of order TCP processing does not limit the
  number of outstanding queries over a connection.
- Fix python documentation warning on functions.rst inplace_cb_reply.
- Log ip address when http session recv fails, eg. due to tls fail.
- Fix to set the tcp handler event toggle flag back to default when
  the handler structure is reused.
- Clean the fix for out of order TCP processing limits on number
  of queries.  It was tested to work.
- Fix that http settings have colon in set_option, for
  http-endpoint, http-max-streams, http-query-buffer-size,
  http-response-buffer-size, and http-nodelay.
- Fix memory leak of https port string when reading config.
- local-zone regional allocations outside of chunk
- Merge PR #324 from James Renken: Add modern X.509v3 extensions to
  unbound-control TLS certificates.
- Fix for PR #324 to attach the x509v3 extensions to the client
  certificate.
- Fix #327: net/if.h check fails on some darwin versions; contribution
  by Joshua Root.
- Fix #320: potential memory corruption due to size miscomputation upton
  custom region alloc init.
- Fix #333: Unbound Segmentation Fault w/ log_info Functions From
  Python Mod.
- Fix that minimal-responses does not remove addresses from a priming
  query response.
- In man page note that tls-cert-bundle is read before permission
  drop and chroot.
- Fix #341: fixing a possible memory leak.
- Fix memory leak after fix for possible memory leak failure.
- Fix #343: Fail to build --with-libnghttp2 with error: 'SSIZE_MAX'
  undeclared.
- Fix for #303 CVE-2020-28935 : Fix that symlink does not interfere
  with chown of pidfile.
- Fix #347: IP_DONTFRAG broken on Apple xcode 12.2.
- Fix #350: with the AF_NETLINK permission, to fix 1.12.0 error:
  failed to list interfaces: getifaddrs: Address family not
  supported by protocol.
- Merge #351 from dvzrv: Add AF_NETLINK to set of allowed socket
  address families.
- iana portlist updated.
- Fix crash when TLS connection is closed prematurely, when
  reuse tree comparison is not properly identical to insertion.
- Fix padding of struct regional for 32bit systems.
- with udp-connect ignore connection refused with UDP timeouts.
- Fix udp-connect on FreeBSD, do send calls on connected UDP socket.
- Better fix for reuse tree comparison for is-tls sockets.  Where
  the tree key identity is preserved after cleanup of the TLS state.
- Fix memory leak for edns client tag opcode config element.
- Attempt fix for libevent state in tcp reuse cases after a packet
  is written.
- Fix readagain and writeagain callback functions for comm point
  cleanup.
- Fix to omit UDP receive errors from log, if verbosity low.
  These happen because of udp-connect.
- For #352: contrib/metrics.awk for Prometheus style metrics output.
- Fix that after failed read, the readagain cannot activate.
- Clear readagain upon decommission of pending tcp structure.
- Fix compile warning for type cast in http2_submit_dns_response.
- Fix when use free buffer to initialize rbtree for stream reuse.
- Fix compile warnings for windows.
- Fix compile warnings in rpz initialization.
- Fix contrib/metrics.awk for FreeBSD awk compatibility.
- Fix assertion failure on double callback when iterator loses
  interest in query at head of line that then has the tcp stream
  not kept for reuse.
- Fix stream reuse and tcp fast open.
Comment 1 Automation User 2020-12-03 14:17:25 UTC
Build and package info is available at https://gitlab.com/swills/freebsd-ports/pipelines/224841984
Comment 2 Fernando Apesteguía freebsd_committer freebsd_triage 2020-12-04 07:35:16 UTC
^Triage: Simplifying title

^Triage: If there is a changelog or release notes URL available for this version, please add it to the URL field.

TODO: needs an entry in vuxml

Thanks!
Comment 3 Jaap Akkerhuis 2020-12-04 09:29:27 UTC
(In reply to Fernando Apesteguía from comment #2)
The tittle was the standard title I always use for updates.

The description to the attachment has the relevant notes from the changelog;

I changed the URL to point to the release announcement.
Comment 4 Fernando Apesteguía freebsd_committer freebsd_triage 2020-12-04 10:19:13 UTC
(In reply to Jaap Akkerhuis from comment #3)
Hi Jaap!

Sure thing, it just felt a bit redundant to have "Update Unbound" after "dns/unbound:". I also tend to remove "version" "commit" "release" "from XXX -> to XXX" and such to make the title more compact. But this is just a preference and yours is as good as mine!

Thanks for setting the URL field. It helps doing triage and makes the PR database more searchable :-)
Comment 5 commit-hook freebsd_committer freebsd_triage 2020-12-12 16:54:55 UTC
A commit references this bug:

Author: brnrd
Date: Sat Dec 12 16:54:42 UTC 2020
New revision: 557836
URL: https://svnweb.freebsd.org/changeset/ports/557836

Log:
  dns/unbound: Security update to 1.13.0

   * Sort options and port_docs while here

  PR:		251563
  Submitted by:	Jaap Akkerhuis <jaap nlnetlabs nl> (maintainer)
  Approved by:	maintainer (implicit)
  MFH:		2020Q4
  Security:	388ebb5b-3c95-11eb-929d-d4c9ef517024

Changes:
  head/dns/unbound/Makefile
  head/dns/unbound/distinfo
  head/dns/unbound/pkg-plist
Comment 6 commit-hook freebsd_committer freebsd_triage 2020-12-12 16:58:57 UTC
A commit references this bug:

Author: brnrd
Date: Sat Dec 12 16:58:25 UTC 2020
New revision: 557837
URL: https://svnweb.freebsd.org/changeset/ports/557837

Log:
  MFH: r552135 r557836

   * Don't change default options on 2020Q4

  dns/unbound: Update to 1.12.0

  PR:		250199
  Submitted by:	maintainer
  Sponsored by:	Rubicon Communications, LLC (Netgate)

  dns/unbound: Security update to 1.13.0

   * Sort options and port_docs while here

  PR:		251563
  Submitted by:	Jaap Akkerhuis <jaap nlnetlabs nl> (maintainer)
  Approved by:	maintainer (implicit)
  Security:	388ebb5b-3c95-11eb-929d-d4c9ef517024

  Approved by:	ports-secteam (implicit)

Changes:
_U  branches/2020Q4/
  branches/2020Q4/dns/unbound/Makefile
  branches/2020Q4/dns/unbound/distinfo
  branches/2020Q4/dns/unbound/pkg-plist
Comment 7 Tatsuki Makino 2020-12-13 04:01:15 UTC
It is a little unstable in my environment.
When I ran the following command, the following failure occurred.

command:
lldb -o r -- /usr/local/sbin/unbound -d -c /usr/local/etc/unbound/unbound.conf

error:
* thread #2, name = 'unbound', stop reason = signal SIGSEGV: invalid address (fault address: 0x8)
    frame #0: 0x000000080042397f libevent-2.1.so.7`evmap_io_del_ + 63
libevent-2.1.so.7`evmap_io_del_:
->  0x80042397f <+63>: movzwl 0x8(%r14), %r15d
    0x800423984 <+68>: xorl   %eax, %eax
    0x800423986 <+70>: testl  %r15d, %r15d
    0x800423989 <+73>: setne  %al

If there are others who experience this problem, continue elsewhere :)