[MacPorts] #49007: openssh @7.1p1 +ldns SSHFP DNSSEC validation fails

MacPorts noreply at macports.org
Mon Nov 23 20:35:14 PST 2015


#49007: openssh @7.1p1 +ldns SSHFP DNSSEC validation fails
-------------------------------+----------------------
  Reporter:  scott-macports@…  |      Owner:  ionic@…
      Type:  defect            |     Status:  assigned
  Priority:  Normal            |  Milestone:
 Component:  ports             |    Version:  2.3.3
Resolution:                    |   Keywords:  haspatch
      Port:  openssh ldns      |
-------------------------------+----------------------

Comment (by scott-macports@…):

 Replying to [comment:1 raimue@…]:
 > I agree with the [https://bugzilla.mindrot.org/show_bug.cgi?id=2119#c1
 upstream answer]. Was this ever reported to ldns upstream?

 (sorry I didn't answer earlier, been busy with other projects :)

 I looked into submitting a patch to ldns upstream, and created a working
 patch before realizing that I would break existing users of libldns (for
 example, drill) if it was applied.

 Basically, ldns_resolver_new_frm_file() loads policy from a file (as the
 name suggests), one specifically documented to be /etc/resolv.conf if the
 filename parameter is NULL (which is how it's currently called from
 openssh).

 drill uses this function if it's called without a server parameter, and
 the use of /etc/resolv.conf may be overridden with the -c parameter

 If drill is run with a server, ldns_resolver_new() is used and no default
 anchors are loaded -- and then only if in chase/trace mode, and no other
 keys are yet loaded, it specifically loads /etc/unbound/root.key as it's
 default.

 Basically, drill expects to the ldns interface to allow all loaded keys to
 be configurable at runtime, with no "magic policy" loading keys from files
 that it can't override.  If I modified ldns_resolver_new_frm_file() to
 load keys from, say, /etc/trusted-key.key, then users of drill (and
 possibly other library clients) couldn't control the keys they were using
 from parameters, breaking use cases where specific keys need to be loaded
 (eg testing or private roots).

 I could, of course, submit a new interface to ldns that explicitly loaded
 default keys from /etc/trusted-key.key (or some other default), but then
 openssh couldn't use that interface until the new library version was
 available on any particular distribution (as a new api, it can't really be
 backported as fix to distributions using the current or older libraries),
 preventing a working openssh + ldns on those systems for some time...

 That leaves the final option, which is to use libldns the way drill does,
 and load policy from the files explicitly specified... and we're back to
 not being able to modify the default (/etc/resolv.conf) because OSX won't
 let us.

 I agree that having a general purpose "just resolve my hostname" interface
 that loaded keys and policy from reasonable defaults might be a useful
 interface for ldns to have, but we'd need to get that added, and then we
 could use it when compiled against a recent enough version -- in the
 meantime, the only way we can get a working ldns library on OSX is to load
 the keys with ldns_resolver_push_dnssec_anchor()

 I'll submit this analysis to the upstream openssh bug, but again OSX is
 hit harder than other platforms at the moment as we can't modify the
 /etc/resolv.conf config file to add a trust anchor, so we need a fix for
 that.

-- 
Ticket URL: <https://trac.macports.org/ticket/49007#comment:4>
MacPorts <https://www.macports.org/>
Ports system for OS X


More information about the macports-tickets mailing list