image

Column: DNS, onbekend maakt onbemind ?

maandag 18 juni 2001, 15:27 door Redactie, 0 reacties

De beveiligingsrisico's van een verborgen protocol

Ramen, Lion en Adore zijn de namen van een aantal Linux wormen die zich op dit moment over het Internet verspreiden, mede dankzij fouten in cruciale Internet software. Het gaat hier om software voor DNS, de Domain Name Service, het 'telefoonboek' van het Internet (overigens is DNS ook bekend onder de naam BIND, Berkeley Internet Name Domain). DNS is een van de protocollen die essentieel zijn voor een goede werking van het Internet of interne netwerken. Naast de eerder genoemde fouten in DNS software, komen fouten in de configuratie ook regelmatig voor. Hierdoor is het soms zelfs mogelijk een compleet Internet domein 'over te nemen' zonder op een machine in te breken.






Linux wormen

Een worm is, net als een virus, een programma dat zichzelf automatisch van computer
naar computer kopieert. Om zichzelf automatisch te kunnen kopiëren maakt de worm
gebruik van bekende zwakke plekken. Het grote verschil met een virus is gelukkig wel
dat een worm zichzelf alleen maar kopieert zonder verder schade aan te richten.
De hier genoemde Linux wormen bestaan uit een verzameling programma's die volledig
automatisch worden uitgevoerd als de worm zich heeft geïnstalleerd. Met behulp van
een scan programma scant de worm op een beperkt aantal bekende Linux kwetsbaarheden
op alle adressen in een grote reeks. Vindt de worm een kwetsbare machine, dan breekt
de worm automatisch in, kopieert zichzelf naar deze machine en vanaf daar begint de
hele cyclus opnieuw.

Omdat DNS echter onzichtbaar voor de gebruiker 'onder water' zijn werk doet, worden deze risico's wel eens vergeten. Het gevolg hiervan kan zijn dat er 'onder water' wordt ingebroken, een of meer machines uit een domein worden omgeleid en zo verkeer kan worden afgetapt. Juist vanwege het feit dat het DNS protocol zo onzichtbaar is voor de gebruikers, is het noodzakelijk de veiligheid van zowel de configuratie als de software streng te bewaken. En op het moment dat een bug wordt ontdekt in DNS software is het van levensbelang zo snel mogelijk security patches aan te brengen.

Het lijkt zo vanzelfsprekend voor een gebruiker. Hij geeft een URL op in de browser en enkele tellen later (dit kan in de praktijk ook een aantal tellen meer zijn) staat de pagina in beeld. Tijdens deze tellen is er, onzichtbaar voor deze gebruiker, een aantal acties uitgevoerd om uiteindelijk de bewuste pagina te kunnen tonen.
Vrijwel als eerste moet de naam van de opgegeven webserver vertaald worden naar een IP adres. Alle verkeer op het Internet geschiedt op basis van deze IP adressen. Elk IP adres is uniek, en met zo'n 30 miljoen aangesloten computers is het niet praktisch deze allemaal te onthouden, vandaar dat DNS in het leven is geroepen.
Voor deze vertaling van naam naar IP adres wordt een beroep gedaan op DNS. DNS fungeert als het telefoonboek van het Internet, het stelt een computer in staat het IP adres te vinden dat bij een naam hoort. Om deze vertaling snel en efficiënt te kunnen laten verlopen is DNS opgebouwd als een piramide. Aan de top van deze piramide staat een aantal root-servers. Deze zijn onderling zo gekoppeld dat zij elkaars taak kunnen overnemen en zo de beschikbaarheid kunnen garanderen van DNS.
Onder deze top hangen de nameservers van een TLD (Top Level Domain). Een voorbeeld van zo'n TLD is het .nl domein voor Nederland. De root nameservers weten welke nameservers bij een TLD horen. Binnen een TLD zijn subdomeinen actief, zoals .fictiefdomein.nl. De nameserver van het TLD weet welke nameserver er voor dat domein actief is. Op deze manier is de hierarchie van de DNS piramide terug te vinden in de opbouw van een domeinnaam, de verschillende niveaus worden van elkaar gescheiden door een punt.

Als een systeem de vertaling wil laten uitvoeren van naam naar adres, dan wordt dit vanuit de bodem van de piramide opgestart. Eerst raadpleegt het systeem de dichtstbijzijnde nameserver, weet deze het niet dan zal deze nameserver zijn omliggende nameservers raadplegen en zo langzaam naar boven in de piramide totdat een nameserver het gezochte antwoord heeft. Hiermee is de zoektocht ten einde. Dit is een sterke simplificatie van het daadwerkelijke proces, gedetailleerde informatie is te vinden in de betreffende RFC's (Request For Comments) op het Internet.
Overigens werkt dit mechanisme ook voor het vertalen van een IP adres naar een naam. Deze informatie wordt vaak gebruikt om te controleren of een systeem in een vertrouwd domein zit en al dan niet moet worden toegelaten tot het netwerk of een machine.

Waarom is DNS nu zo belangrijk op het Internet ?
De DNS informatie die is opgeslagen in de nameservers bepaalt iemands identiteit, eigenlijk die van de computers, op het Internet. Het is de enige plek op het Internet waar de relatie tussen een computernaam en het bijbehorende IP adres is vastgelegd. Alleen via deze nameservers kan een domeinnaam worden vertaald naar een IP adres. Als een hacker deze vertaling kan manipuleren, of de informatie in de nameserver kan wijzigen, kan hij of zij zelfs de identiteit overnemen van een domein, de zogenaamde domain hijack.

Stel dat een gebruiker een boek wilt bestellen op het Internet, bij een van de bekende virtuele boekwinkels. Hij of zij maakt met een browser verbinding met deze boekwinkel, en vertrouwt er impliciet op dat de nameserver die het domein beheert het juiste IP adres teruggeeft dat daadwerkelijk bij die bewuste boekwinkel hoort. Dit wordt nog belangrijker als hij vervolgens een aantal boeken bestelt en deze met zijn creditcard betaalt. Hij stuurt zijn creditcard informatie terug naar de boekwinkel en vertrouwt nog steeds op de juiste informatie in de nameserver. Het feit dat deze laatste verbinding beveiligd is doet hier niet zoveel aan af. Ook de certificaten van een beveiligde verbinding zijn gekoppeld aan namen van systemen, en hiermee indirect aan de betrouwbaarheid van een nameserver. Weliswaar zal een inbreker extra moeite moeten doen om het hele certificaat over te nemen, maar ook dat blijkt niet onmogelijk, zeker met wat hulp (lees: misbruik van vertrouwen) van de gebruiker zelf.

Ook bij de vertaling van IP adres naar naam ontstaan beveiligingsrisico's. Veel beveiligingssoftware is zodanig te configureren dat aan sommige computers (lees: computernamen) extra privileges of toegang wordt toegekend. Zo kan een firewall de toegang tot specifieke netwerkdiensten blokkeren voor alle computers, behalve die computers die in een speciaal domein zitten, bijvoorbeeld dat van een leverancier. Als een systeem verbinding maakt met de firewall 'ziet' de firewall vanaf welk IP adres dit gebeurt. Via DNS software vertaalt de firewall dit IP adres eerst terug naar een naam, en vergelijkt deze naam vervolgens met de lijst van vertrouwde namen. Is de naam vertrouwd, dan wordt de verbinding geaccepteerd. Een hacker die de nameserver 'in handen heeft' die deze terugvertaling doet heeft ongekende mogelijkheden. Hij kan bijvoorbeeld zijn eigen IP adres in de nameserver opnemen zodanig dat dit altijd wordt terugvertaald naar een naam die de firewall vertrouwt. Het mag duidelijk zijn dat de hacker zichzelf op deze manier wel heel eenvoudig toegang kan verschaffen tot de eerder genoemde firewall.

Het mag ondertussen duidelijk zijn dat de nameserver niet alleen belangrijk is voor het correct functioneren van het Internet, ook de beveiliging van een netwerk staat of valt met een goede, betrouwbare, nameserver.

Een aantal aspecten is belangrijk bij de beveiliging van een nameserver.

Zo is de locatie van deze nameserver van groot belang. Met locatie wordt hier niet alleen de fysieke locatie bedoeld, maar nog meer de plek in het netwerk waar de nameserver is aangesloten. In het algemeen zijn er twee mogelijkheden, ten eerste een bedrijf kan zelf een nameserver inrichten en beheren, op haar eigen Internet aansluiting. In dat geval is het bedrijf 'eigen baas' over haar nameserver en heeft daarmee ook zelf de verantwoordelijkheid voor de beveiliging.


De tweede mogelijkheid is de nameserver onder te brengen bij de provider. Dit betekent vaak dat de DNS informatie wordt opgenomen in een of meer nameservers bij de provider op het netwerk, samen met de DNS informatie van andere klanten. Een bedrijf bespaart daarmee beheerwerkzaamheden, maar vertrouwt wel op de beveiligingsmaatregelen die de provider al dan niet heeft getroffen.


Indien een bedrijf besluit een belangrijke eBusiness toepassing te gaan aanbieden aan haar potentiële klanten op het Internet is het aan te raden om ook het beheer van de nameserver zelf te gaan doen. Zij is dan immers niet afhankelijk van haar provider(s) voor de beveiliging van de nameserver.

Als tweede, organisatorische, factor is de contactinformatie van het domein een belangrijke beveiligingsfactor. Deze contactinformatie bevat de namen en e-mail adressen van personen die wijzigingen in de domeinregistratie mogen aanbrengen. Deze wijzigingen betreffen niet de inhoud van de nameserver, maar cruciale zaken als de IP adressen van de nameservers zelf. Als een hacker deze informatie kan wijzigen (en in sommige gevallen kan dat al via een eenvoudige e-mail !) dan is hij of zij in staat om een andere nameserver op te geven voor het domein. Dat is in natuurlijk een server die hij of zij onder controle heeft. De hacker heeft hiermee het gehele domein overgenomen, vaak zonder in te breken op een van de computers binnen dat domein. In het verleden is het meer malen gebeurd dat op deze wijze een bekend domein is gekaapt. De genoemde informatie is opgeslagen in de whois database van een TLD, en in Nederland is dat domain-registry.nl. Op hun website is deze informatie op te vragen.

De enige manier om te voorkomen een hacker via een vals e-mail bericht uw whois informatie wijzigt, is een duidelijke afspraak te maken met uw provider. Vaak bieden zij extra mogelijkheden ter authenticatie, zoals een PGP sleutel, of een terugbel actie waarbij zij verifiëren of de aanvraag inderdaad van u afkomstig is. Hoewel de overname van een domein via de whois informatie technisch gezien niet spectaculair is, is het wel een van de meest effectieve manieren.

Naast deze organisatorische kwetsbaarheden, kan een verkeerde configuratie van de nameserver leiden tot onnodige risico's. Deze verkeerde configuratie bestaat vaak uit het opnemen van allerlei namen en adressen in een nameserver die daar niet in thuis horen, althans, niet in de nameserver die aan het Internet is gekoppeld. Veel interne netwerken maken ook gebruik van TCP/IP en beschikken daarom ook over interne nameservers. Deze nameservers bevatten informatie over de namen en adressen van interne systemen, informatie die vaak niet bestemd is voor de buitenwereld. Als deze informatie intern blijft is er niets aan de hand, echter op het moment dat deze informatie ook op het Internet beschikbaar komt kunnen er problemen ontstaan. Een hacker kan door dit soort informatie op te vragen meer inzicht krijgen in de interne structuur van het netwerk. En hoewel dit niet direct tot een inbraak hoeft te leiden kan het wel net dat extra beetje informatie zijn dat een hacker nodig heeft om een stap verder te komen.
De eenvoudigste oplossing hiervoor is om de interne informatie in de interne nameserver op te slaan, en de externe informatie in de externe nameserver. Het klinkt simpel, maar in de praktijk blijkt dit nog wel eens moeilijk. Daarnaast is de meeste moderne DNS software in staat om het zonder meer opvragen van informatie te beperken. Alleen vertrouwde systemen (IP adressen) kunnen zo allerlei gevoelige informatie opvragen.

Mocht zowel de locatie van de nameserver als de whois informatie, als de configuratie in orde zijn, dan rest een hacker 'slechts' nog een aantal technische kwetsbaarheden die te maken hebben met bugs in de verschillende implementaties van DNS software. Sommige van deze bugs zijn al langer bekend, andere zijn redelijk recent. Het feit dat een dergelijke bug al langer bekend is houdt niet automatisch in dat deze ook overal opgelost is. Er zijn nog genoeg nameservers die gebruik maken van deze oudere DNS software waardoor zij nog dagelijks risico lopen.

Om een idee te krijgen van welke bugs er op dit moment bekend zijn in de DNS software biedt de website van Security focus uitkomst. Op www.securityfocus.com kan, via de vulnerabilities database, een overzicht worden gemaakt van kwetsbaarheden in de verschillende versie van DNS software. Deze kwetsbaarheden kunnen er toe leiden dat een hacker via het Internet kan inbreken op een nameserver, of dat hij of zij de informatie in een nameserver kan manipuleren.

De reeds genoemde Linux wormen maken misbruik van dit soort kwetsbaarheden. Het is namelijk gebleken dat er een bufferoverflow zit in specifieke versies van versie 8 van de BIND software. Via deze bufferoverflow kan de worm inbreken op de nameserver en zichzelf over kopieren. Een bufferoverflow dankt zijn bestaan aan een programmeerfout in de software. Binnen de software worden tijdelijke buffers gedefinieerd waarin het programma binnenkomende data opslaat. Deze data is bijvoorbeeld afkomstig van het Internet (in het geval van BIND is dat bijvoorbeeld een verzoek tot vertaling van een naam). De programmeur neemt aan dat er een bepaalde maximum hoeveelheid data binnekomt, en stemt daar de afmeting van de buffer op af. Als de programmeur bij het daadwerkelijke inlezen van de data nu niet, of niet goed, bijhoudt of de buffer vol is, dan kan een hacker meer data sturen dan verwacht. Het gevolg hiervan is dat de buffer wordt overschreven en in sommige gevallen zelfs belangrijke systeemdata. Door de juiste systeemdata te overschrijven kan een hacker de beveiliging omzeilen.
U kunt zich voorstellen dat een andere hacker, die gebruik maakt van deze zelfde kwetsbaarheid, zichzelf toegang kan verschaffen tot de nameserver. Hierna is hij of zij in staat om de inhoud van de nameserver te wijzigen met alle gevolgen van dien.

Een andere soort technische kwetsbaarheid stelt een hacker in staat om valse informatie over een ander domein in de nameserver te injecteren. Als er gebruik wordt gemaakt van deze valse informatie voor de authenticatie van computers, dan mag het risico duidelijk zijn.

Al met al is duidelijk dat een goede beveiliging mede afhankelijk is van een betrouwbare DNS. En omdat DNS 'onder water' zijn werk doet wordt nog wel eens vergeten de kwetsbaarheden in DNS op te lossen. Echter met goed beheer en een wakend oog kan DNS betrouwbaar en zonder onnodige risico's zijn werk doen.

Arthur Donkers

Le Reseau netwerksystemen BV

http://www.reseau.nl/

arthur@reseau.nl

Nog geen reacties
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.