Vulnerability Note VU#531342

Unbound DNS resolver denial of service vulnerability

Original Release date: 25 May 2011 | Last revised: 25 May 2011

Overview

A specially crafted DNS query may cause Unbound to respond with an empty UDP packet which triggers an assertion failure and stops the daemon.

Description

NLnetLabs advisory states:

"Certain types of DNS queries may cause Unbound to respond with a DNS error message. The code generating this error message contains an error whereby Unbound constructs an empty UDP message. That empty UDP message triggers an assertion failsafe in the part of Unbound that is invoked when the interface-automatic option is set. In the case that the interface-automatic option was not set or assertion failsafe is not configured the empty packets would be sent, which is not harmful. The error can only be triggered when Unbound is configured with assertions (--enable-checking or --enable-debug) and has the option interface-automatic turned on.

Versions in which this error occurs: Unbound 1.0 up to and including Unbound 1.4.9

  • FreeBSD ports for Unbound are not susceptible by default, as it does not enable assertions.
  • RHEL/Fedora systems do compile Unbound with --enable-checking but do not set automatic-interface:yes per default.
  • Debian/Ubuntu Unbound packages do not compile with assertions by default."

  • Impact

    A remote, unauthenticated attacker can cause the Unbound daemon to crash creating a denial of service condition.

    Solution

    Apply an Update
    This vulnerability has been addressed in Unbound 1.4.10. The following patch may also be applied to resolve the issue:

    Index: daemon/worker.c
    ===================================================================
    --- daemon/worker.c (revision 2416)
    +++ daemon/worker.c (working copy)
    @@ -779,6 +779,7 @@
    qinfo.qtype == LDNS_RR_TYPE_IXFR) {
    verbose(VERB_ALGO, "worker request: refused zone transfer.");
    log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen);
    + ldns_buffer_rewind(c->buffer);
    LDNS_QR_SET(ldns_buffer_begin(c->buffer));
    LDNS_RCODE_SET(ldns_buffer_begin(c->buffer),
    LDNS_RCODE_REFUSED);

    Vendor Information (Learn More)

    VendorStatusDate NotifiedDate Updated
    NLnet LabsAffected19 May 201125 May 2011
    If you are a vendor and your product is affected, let us know.

    CVSS Metrics (Learn More)

    Group Score Vector
    Base N/A N/A
    Temporal N/A N/A
    Environmental N/A N/A

    References

    Credit

    This vulnerability was found by Christopher Olah and reported by NLnetLabs.

    This document was written by Jared Allar.

    Other Information

    • CVE IDs: CVE-2011-1922
    • Date Public: 25 May 2011
    • Date First Published: 25 May 2011
    • Date Last Updated: 25 May 2011
    • Severity Metric: 0.03
    • Document Revision: 14

    Feedback

    If you have feedback, comments, or additional information about this vulnerability, please send us email.