Ich hab mir heute mal die Auswirkungen der Nameserver-Patche angesehn, die die letzten paar Wochen rauskamen. Bei den Lücken, die damit geflickt werden sollen, gehts im Wesentlichen darum, noch ein bisschen mehr Zufall in die Abfrage einer Namensauflösung zu bekommen, also das was abläuft, wenn ich im Browser "www.google.de" eingebe und der Browser erfährt, dass er sich zur IP-Adresse "72.14.215.99" verbinden soll.
Damit sich da kein anderer als mein "offizielle" Nameserver und die zuständigen Nameserver für ".de" und "google.de" einmischen, wird eine Zufallszahl zusammen mit der Anfrage losgeschickt und nur Antworten als "echt" gewertet, die auch diese Zufallszahl wieder zurückliefern. Ein Angreifer, der keine Ahnung von meinem Zufallsgenerator hat, wird also keine korrekte Antwort liefern können und mir nicht heimlich seine Homepage (oder Mailserver oder Nameserver ...) unterjubeln können.
So dachte man sich das zumindest bisher. Inzwischen
weiss man, dass die Zufallszahlen nicht reichen. Zumindest nicht, wenn man das Opfer (oder seine Mitnutzer des gleichen Nameservers) dazu bringen kann, ganz viele Anfragen zu erzeugen. Zum Beispiel, indem man den Mitnutzern ein paar Trojaner installiert. Weil der Begriff "Mitnutzer des Nameservers" zum Beispiel alle Kunden von T-Online umfasst, ist diese Lücke ziemlich schlimm und zwingt vor allem grosse Provider zum schnellen Handeln. Ausserdem wäre es natürlich für einen Angreifer so richtig toll, z.B. sämtliche AOL-Kunden statt zu eBay auf seinen Server zu lenken, entsprechend hoch ist seine Motivation und entsprechend eifrig haben die grossen Provider auch schon schnell gepatcht.
Bei diesen Patchen hat man einfach noch ein bisschen mehr Zufälligkeit dazugebastelt. Statt nur der Zufallszahl wird nun zusätzlich der Quellport der Anfragen durchgewechselt. Der Angreifer muss also Zufallszahl und den passenden unter den 64512 möglichen Quellports rausbekommen.
Auf dem Server haut das auch ganz gut hin. Wenn ich die Quellports paarweise aufmale, sieht die Verteilung schön wolkig und recht zufällig aus. Dass die Verteilung auch echten statistischen Tests standhält, glaube ich jetzt einfach mal.
Quellports der DNS-Anfragen auf dem Server
Auf meinem Client zuhause sieht das irgendwie nicht mehr so toll aus. Mein Rechner verteilt die Anfragen zwar ganz brav und zufällig über 32000 Ports (warum nicht 64000, weiss ich nicht), aber mein Router macht die ganze schöne Verwürfelung wieder kaputt und reduziert die Wolke auf gerade mal 1000 Ports.
Quellports der DNS-Anfragen vor und hinter dem NAT-Router
Der Grund dafür ist schon klar: Ich verwende nicht den eingebauten DNS-Server des Routers, sondern in der Regel den meines Providers. Zu dem vermittelt der Router die Pakete mittels NAT, das heisst, er muss alle Verbindungen von der privaten IP-Adresse meines Rechners zum Server unter seiner eigenen externen IP-Adresse nochmal selbst aufmachen. Und sich dazu noch merken, an welchen internen Rechner und an welchen Port er das Paket zurückschicken muss. Bei sowas denkt der Programmierer an Tabellen und geordnete Strukturen, "Zufälligkeit" war dort nie verlangt und wurde auch nicht eingebaut. Mich wundert, dass der Router die Ports nicht einfach hochzählt.
Das ist kein Grund zu grosser Besorgnis, für einen einzelnen Client werden 1000 Verwürfelungen schon reichen, vermutlich gut unterrichteten Kreisen zufolge würfelt auch T-Online nur mit 2000 Ports. Ausserdem macht das Nutzen der Lücke ja erst so richtig Spass, wenn man ein ganzes Botnetz bei einem Provider betreibt, damit man die Angriffe auch ein bisschen streuen kann. Es hilft ja nichts, z.B. mir falsche Einträge für Citybank, EBay und hotmail unterzujubeln, weil ich mit denen garnichts zu tun habe.
Ich finds aber schon bemerkenswert, dass die Rolle der Router bei der Quellportvergabe nie so richtig gewürdigt wird. Zumindest wenn man Heimanwendern die Notwendigkeit der Patcherei erklären will, sollte man freundlicherweise dazusagen, dass sie sich die Mühe auf den Rechnern auch sparen können, wenn ihr Router das wieder kaputtmacht. Ich denke so ein Router wie meiner (sitecom WL-173) ist der Normalfall in den Wohnzimmern und nicht jeder dieser Router wird wenigstens 1000 Quellports verwenden.