(from http://cr.yp.to/dnscache/ad/security.html)

Security features: 

- dnscache runs as a dedicated non-root uid inside a chroot jail,
  so it can't touch the rest of the machine.
- tinydns runs as another dedicated non-root uid inside its own
  chroot jail.
- pickdns runs as another dedicated non-root uid inside its own
  chroot jail.
- walldns runs as another dedicated non-root uid inside its own
  chroot jail.
- dnscache discards DNS queries from outside a specified list of
  IP addresses.
- dnscache and the dns library use a new query ID and a new UDP
  port for each query packet. They discard DNS responses from any IP
  address other than the one that the corresponding query was just
  sent to.
- dnscache uses a cryptographic generator to select unpredictable
  port numbers and IDs.
- dnscache is immune to cache poisoning.
- tinydns, pickdns, and walldns never cache information. They do
  not support recursion.

Security metafeatures: 

- Security was, and is, one of the primary motivations for the
development of DNScache. Every step of the design and implementation
has been carefully evaluated from a security perspective.

- The DNScache package has been structured to minimize the complexity
of security-critical code. The package is modularized for easy
review.

- Bug-prone coding practices and libraries have been systematically
identified and rejected.

Beware, however, that the DNS infrastructure is inherently vulnerable
to forgery.
