On Tue, Feb 09, 2016 at 06:00:40PM -0500, Robert Edmonds wrote:
> Matija Nalis wrote:
> > dnscache component only is RC-buggy. The solution has been proposed
> > by Robert Edmonds (remove only buggy component /usr/bin/dnscache).
> > 
> > It is not upstream orphaned.
> 
> As far as I can tell, the only maintenance activity that djbdns has
> received from its upstream developer has been the release of a two-line
> patch, about 7 years ago:
> 
>     http://marc.info/?l=djbdns&m=123613000920446&w=2

I would consider a fact that software did not have serious security
bug nor other compelling need to change for 7 years a big *plus* for
using it, not as a problem.  
(But then again, I'm one of those guys running stuff on Debian Stable
or even oldstable LTS)

> The only upstream maintenance attention djbdns has received in the past
> 15 years has been related to the security guarantee, and that security
> guarantee is very narrowly tailored to problems that DJB finds
> worthwhile; attacks enabled by the ease of forging UDP packets on the
> Internet, or denial-of-service attacks are both specifically excluded
> classes of problems.

While I'd love to engage to in comparative analyses of various DNS
software, or discuss how for example any DNS software supporting
DNSSEC is by far a biggest denial-of-service amplifier attack, how
BIND and other DNS tools were not even considered for removal even 
after having way bigger problems with forged UDP packets (for
example, see https://cr.yp.to/talks/2012.03.08-1/slides.pdf)  or
note that other DNS software does not offer *any* gurantees at all, I
do not feel that this bug report is a right place for it.  

> Other routine maintenance such as updating the list of root nameserver
> address hints has simply been neglected.  E.g., the dnsroots.global file

One might say that editing a default list of servers is in domain of
responsibility of sysadmin, not programmer (hey, I still remember
days of AlterNIC and not using default InterNIC root server list). 
Still, I did offer to fix that trivial bug.

> > It is just stable piece of software which does not change often, as it
> > was engineered on KISS principle, so it does not *need* to be changed.
> > That is great engineering feat, and I'd love if way more software
> > would be like that instead of having everincreasing featurecreep.
> 
> Many djbdns users speak about how well engineered or elegant the servers
> are, but I suspect this comes from the experience of configuring the
> daemons (which have very few configuration knobs compared to other DNS
> implementations), rather than reading the code.  Here are comments from
> a security researcher with extensive experience analyzing source code:

What does anecdotal rants with beauty of the code have to do with
this bug?  While I have not editied djbdns source (didn't have the
need!) I did modify DJB's qmail and ucspi-tcp code written in similar
style at times past, and had much less difficulty than average
(see http://linux.voyager.hr/ for patches).

But yes, the admin part is where tinydns and friends just shines.
Does the job fast, efficient, with minimum administrative overhead,
not getting in the way, providing the extremly easy way to integrate
into it's surroundings. And no uneeded updates breaking stuff.
Excellent security record for all tools but dnscache (and even there,
it was first with improved protections

> > I do not know why you think it *has* to be heavily patched. 
> > It works for me without patching just fine, for example.
> 
> Many users have requirements that are not satisfied by the original
> djbdns-1.05 source release.  For example, the following post from a
> Facebook developer mentions that tinydns is used at Facebook, with
> multiple patches, including an in-house IPv6 support patch:
> 
>     
> https://lists.dns-oarc.net/pipermail/dns-operations/2016-February/014250.html

well, yes, adding support for whole new core layer3 technology does
usually require some work. Upstream didn't do it as he doesn't belive
it was the right way to do thinks (http://cr.yp.to/djbdns/ipv6mess.html). 
Some might agree that it could've been done way better. Too late for
that now, IPv6 is here to stay.
        
> > The recent DNS standards (DNSSEC, I assume) it doesn't support is by
> > design, as it is deemed broken by upstream author (see
> > http://dnscurve.org/ for more details, for example) and the whole
> > point of KISS principle is to keep it simple and use modular design
> > for extra bloat if wanted (for example, even DJB's dnscurve is to be 
> > implemented as separate independent software part, and not patching 
> > tinydns with its functionality)
> 
> Can you cite any evidence that djbdns has a modular design, or that
> enhancements can be implemented modularly, without patching core parts

only by my own experience; I do not recall any papers being published
on the subject.

> The only modularity I can see in djbdns is that recursive and
> authoritative name service have been split into separate but still
> monolithic daemons.  But this is the case for many other DNS servers
> anyway.

yes, separate binaries for doing separate tasks, which can be chained
together to accomplish something bigger than the sum of its parts. 

Not only the tinynds/rbldns/walldns/pickdns/dnscache daemon
distinction, or axfrdns which runs on tinydns-data output too, but
also the commandline tools - you'd put axfr-get into you scripting
pipeline, you'd use rsync over ssh or netcat over openvpn to sync
authorative servers, put put some sed(1)s between dnstrace and
dnsfilter, you'll create your backend cdb database by running a
Makefile (even default install does that!) which uses your own tools
(for example for providing IPv6, DNSSEC or any yet-unknown DNS
protocol extension or implementing dyndns-alike functionality without
changing single line of DJB source code -- and yes I've had a need
and done fair number of such things).  Daemon output would go to
multilog by default , but you might want to insert your perl script
in between that pipeline to raise nagios passive check if something
interested is detected, or put in awk and tee to keep a separate copy
of stuff you want to debug or make your munin stats of.  Or any of
million other lets-combine-different-pieces that such modularity
offers.

But still, while I love to talk about comparative advantages of DNS
programs, I see little that advocating djbdns advantages can do to
alleviate this RC-bug.  People like it or don't, and use it or don't. 
But that isn't related with its RC-bugginess.

> Tinydns is not as problematic as dnscache; I don't know of any bugs that
> would prevent tinydns alone from remaining in the archive.

Why "tinydns alone"? Do you have problems with axfrdns? walldns? 
rbldns?  pickdns? Any of the command line tools (axfr-get, dnsip,
dnsipq, dnsname, dnstxt, dnsmx, dnsfilter, dnsqr, dnsq, dnstrace)?
And which problem if so?

Because all of them are there in djbdns (or dbndns) package.

Or did you want to say that you're fine with "all of the djbdns
EXCEPT the dnscache binary" (which sounds reasonable to me)?

> > I'm not a DD, but I am willing to do the work if it will be accepted.
> > 
> > For that, I propose to do the following:
> > - fix J-ROOT
> > - split djbdns source package into:
> >    - djbdns-dnscache (dnscache only), 
> >    - djbdns-auth (authorative DNS servers, like tinydns, axfrdns, walldns), 
> >    - djbdns-tools (all the command line tools)
> > 
> > Are there other issues that need fixing in order for most of djbdns
> > package (everything except dnscache) friends not be RC-buggy? only
> > djbdns-dnscache can remain RC-buggy then (until patched by someone).

All of your answer above seems to indicate that there is no other
objections but to dnscache part of the djbdns - is that correct?

> > Would that work for everyone?

So, would that work (containing all the RC problems only in
djbdns-dnscache package) in order for other parts of djbdns to remain
securely in Debian archives?

> Why do you think the RC bugs in dnscache will suddenly get fixed after
> many years of not being fixed, simply because /usr/bin/dnscache has been
> shifted to a different binary package?

I do not thinks it would SOLVE dnscache problems, but I think that it
would ISOLATE them, allowing the other parts of djbdns to exist in
Debian Stable, while only djbdns-dnscache remains being RC-buggy
(until someone possibly step up to fix it, or is it perhaps removed
from unstable)

I'm not that well versed in Debian policy intricacies though (not
being the DD and all), so I would appreciate some education if that
is not possible (eg. if a RC bug in one binary package MUST lead to
removal of all binary packages which share the same source package).

> Your proposal also ignores the 'dbndns' binary package, which is built
> by src:djbdns.  IIUC, this package split exists because some djbdns
> users prefer a less patched variant while others prefer additional
> patches.  If that scheme were still maintained (but split into
> djbdns-dnscache/dbndns-dnscache, djbdns-auth/dbndns-auth, etc.), there
> would still be a binary package containing an RC buggy component.

My offer extends to dbndns as you described it, yes.

To sum: if dnscache is deemed to be broken beyond repair by
powers-that-be (which I do not personally agree with, but will
accept), I would like other (very usable!) parts of djbdns to 
remain in Debian (and so am offering to do the work needed).

-- 
Opinions above are GNU-copylefted.

Reply via email to