www.h-ein.de

Großes DNS-Sicherheitsproblem

Mittwoch, 09. Juli 2008, 04:54 Uhr
Kategorie: Blog » Security
Achtung, öffnet in einem neuen Fenster. Drucken

Das US-CERT warnt in einer aktuellen Meldung vor einem schwerwiegenden Problem in zahlreichen Nameserver-Implementierungen. Das Problem versetzt Angreifer in die Lage, den DNS-Cache zu “vergiften” (DNS Cache Poisoning). Damit wären großflächig Spoofing-Attacken möglich.

Betroffen von dieser Design-Schwachstelle sind grundsätzlich erstmal alle Implementierungen auf Server- und auf Client-Seite. Vor allem Betreiber von DNS-Resolvern sollten schnellstmöglich die bereitgestellten Updates einspielen. So genügt beispielsweise unter Debian schon das normale Einspielen von Updates, um eine neue Bind9-Version einzuspielen:

# apt-get update
# apt-get upgrade

Damit sind aber noch nicht alle Probleme gelöst. Auch die Provider-Nameserver von denen man ggf. durch Forwarding DNS-Informationen bezieht müssen auf den neusten Stand gebracht werden, da diese ansonsten auch Opfer des Problems werden könnten und dann falsche Informationen liefern. Kurz gesagt muss die gesamte Kette aktualisiert werden. Angefangen vom Client der Anfragen stellt über den DSL-Router bis hin zu den Root-Nameservern im Netz.

Es ist davon auszugehen, das die eingesetzte Software bei den Root-Nameservern und den für die Toplevel-Domains zuständigen Registrys nicht mehr von der Schwachstelle betroffen sind, aber sicher sein kann man sich derzeit noch nicht.

Wer das eigene Netz absichern möchte, sollte sich überlegen, einen eigenen, nicht anfälligen DNS-Caching-Resolver wie Unbound oder Bind (in aktuellster Version) zu installieren. Anfragen an den lokalen Resolver werden dann an die Root-Nameserver weitergeleitet, so daß man hier eine etwas höhere Sicherheit hat.

Ein weitaus größeres Problem stellen hier allerdings noch die Clients da. Nicht immer hat man einen eigenen Caching Nameserver im lokalen Netz zur Verfügung. Ein Eintrag im Debian Security Advisory zeigt, das es vor allem bei clientseitiger Implementierung noch Probleme geben wird:

At this time, it is not possible to implement the recommended countermeasures in the GNU libc stub resolver. The following workarounds are available:

  1. Install a local BIND 9 resoler on the host, possibly in forward-only mode. BIND 9 will then use source port randomization when sending queries over the network. (Other caching resolvers can be used instead.)
  2. Rely on IP address spoofing protection if available. Successful attacks must spoof the address of one of the resolvers, which may not be possible if the network is guarded properly against IP spoofing attacks (both from internal and external sources).

Auch für zahlreiche Microsoft-Betriebssysteme gibt es schon Updates — für den Client wie auch für die Serverkomponenten. Allerdings ist auch hier die langfristige Wirksamkeit der Änderungen auf Clientseite noch fraglich.

Das eigentliche Problem

Grundsätzlich krankt DNS schon immer an dem Problem, das sich DNS-Antworten prinzipiell fälschen lassen. Aktuelle Systeme verwenden daher schon seit längerem eine zufällige Transaktions-ID. Passt die Antwort-ID nicht zu der zufällig gewählten ID der Anfrage wird die Antwort ignoriert. Bereits letztes Jahr wurden Probleme bei dem von Bind9 verwendeten Zufalls-Algorithmen entdeckt. Der Sicherheitsexperte Dan Kaminsky hat nun allerdings eine Möglichkeit gefunden, den Zufall allgemein soweit zu reduzieren, das prinzipiell Angriffe auf alle DNS-Implementierungen möglich sind. Seine Ergebnisse werden allerdings erst im August auf der Blackhat Konfererenz im August veröffentlicht, damit noch genug Zeit bleibt, das Problem in den Griff zu bekommen.
Ein Ansatz zur “schnellen” Lösung ist es, zusätzlich zu der Transaktions-ID auch die UDP-Quellports der Anfrage komplett zu randomisieren, so daß das erraten der ID allein nicht ausreicht. Allerdings wird von Experten immer wieder betont, das eigentlich nur die Einführung der Erweiterung DNSSEC Abhilfe schaffen würde. So ein Umstieg ist aber leider nicht “über Nacht” flächendeckend zu bewerkstelligen.

Vom Problem betroffen sind weit verbreitete Nameserver wie ISC Bind oder die Server von Microsoft und Cisco. Durch die hohe Verbreitung besteht ein hohes Risiko, das hierdurch ein grundlegender Infrastuktur-Dienst im Internet großflächig angreifbar wird. Gefahr für den Anwender besteht vor allem durch das Umleiten von Anfragen auf “bösartige” Server, Proxys usw. Einmal mehr sollte man z.B. Zertifikats-Sicherheitsmeldungen des Browsers beim Durchführen von kritischen Aktionen (Online-Banking, Logins, etc.) Beachtung schenken.

Es sind allerdings nicht alle Nameserver betroffen. Hier eine kleine Liste von Implementierungen, die nicht verwundbar sind, da sie die UDP-Randomisierung schon länger einsetzen:

Weitere Informationen

»Thou shalt run lint frequently and study its pronouncements with care, for verily its perception and judgement oft exceed thine.«