DNS-gyorsítótár-mérgezés

A Wikipédiából, a szabad enciklopédiából

A számítógépes hálózatok területén a DNS-gyorsítótár-mérgezés (DNS cache poisoning vagy DNS cache pollution, azaz a Domain Name Service gyorsítótárának a megmérgezése) egy domainneveket IP-címekre fordító kiszolgáló elleni támadás, amelynek során hamis adatokat juttatnak a szerver gyorsítótárába, így az adott webcímre kapcsolódni próbáló klienseket nem a hozzátartozó számítógéphez, hanem egy a támadó által meghatározott másik géphez irányítja. Így lehetségessé válik például az illetéktelen bejelentkezés, vagy a jelszavak ellopása (az ilyen támadások összefoglaló neve farmolás (pharming).

A DNS-cache megmérgezésének egyik módja a DNS-szoftverek hibáinak kihasználása; ilyen például a nem hiteles válaszok eltárolása. Minden névszerver a domainnevek egy bizonyos csoportjáért felel, az ezekkel kapcsolatos adatoknak ő az elsődleges forrása; más domainekre a gyorsítótárában lévő, más szerverektől kapott válaszokat adja. Ha egy szerver az utóbbi típusú, nem hiteles válaszokat is eltárolja, azt egy támadó ki tudja használni.

Egy másik lehetőség hamis válaszok küldése a DNS-szervernek (IP spoofing), ha az könnyen kitalálható sorszámokat generál a saját lekérdezéseihez; egy ilyen sebezhetőség volt például a Windows 2000 által tartalmazott DNS-szerverben.[1]

Példa nem hiteles válaszon alapuló támadásra[szerkesztés | forrásszöveg szerkesztése]

A támadó megvásárolja a gonosz.hu domaint, és ennek felhasználásával próbálja az otp.hu-nak küldött üzeneteket a saját 1.2.3.4 IP-című szerverére eltéríteni. Ehhez lekéri a kiszemelt névszervertől a www.gonosz.hu domain IP címét. A névszerver továbbítani fogja a kérést a gonosz.hu névszerverének:

www.gonosz.hu. IN A

A névszerver erre az alábbi választ adja:

Answer:
(no response)

Authority section:
gonosz.hu. 3600 IN NS ns.otp.hu.

Additional section:
ns.otp.hu. IN A 1.2.3.4

A kiszemelt névszerver ilyenkor eltárolja az NS bejegyzést (ami hiteles válasz). A hibásan működő névszerver emellett a (nem hiteles) A bejegyzést is eltárolja, és ezáltal az otp.hu tartományban lévő domainek címét az 1.2.3.4-en lévő DNS szervertől fogja lekérdezni. (Ilyen sebezhetőség volt például az alapbeállításokon hagyott, SP3 előtti Windows 2000 szerverekben.[2])

Megelőzés, védekezés[szerkesztés | forrásszöveg szerkesztése]

A DNS-mérgezések nagy része megakadályozható akkor, ha a DNS-szerverek nem bíznak meg olyan könnyen a más DNS-szerverektől kapott információkban, és a visszakapott DNS-rekordok közül a DNS-lekérdezéshez nem közvetlenül kapcsolódóakat figyelmen kívül hagyják. Például a BIND 9.5.0-P1[3] és újabb verziói elvégzik ezeket az ellenőrzéseket.[4] Az időzítésen alapuló DNS-támadások ellen elég nagy védelmet nyújt a DNS-lekérdezések forrásportjának randomizálása, kombinálva a kriptográfiailag erős véletlen számok alkalmazásával a forrásportnál és a 16 bites nonce-nál (egyszer használatos véletlen szám) egyaránt.

Az útválasztók, tűzfalak, proxyk és más határoló eszközök, amik hálózati címfordítást (NAT-olást), vagy még pontosabban portcímfordítást (PAT) végeznek, gyakran átírják a forrásportot, hogy így kövessék nyomon a kapcsolat állapotát. A forrásport átírásakor ezek a PAT-eszközök jellemzően megszüntetik a forrásport véletlenszerűségét, amit a névszerverek és az autoritatív névfeloldást nem végző stub resolverek táplálnak bele.

A biztonságos DNS protokoll (DNSSEC) nyilvános kulcsú infrastruktúra-beli tanúsítványokkal való elektronikus aláírással ellenőrzik az adatok hitelességét. A DNSSEC megakadályozhatja a DNS-mérgezéses támadásokat, de 2008-ban még nem terjedt el széles körben. 2010-ben az internetes DNS-gyökérzóna szervereire telepítették a DNSSEC-et.

Az ilyen támadásokat meg lehet fogni a szállítási réteg vagy az alkalmazási réteg szintjén is, végponttól végpontig terjedő ellenőrzést végezve a kapcsolat kiépülése után. Példa erre a Transport Layer Security és az elektronikus aláírások alkalmazása. Például a HTTP biztonságos változatát, a HTTPS-t használva a felhasználók ellenőrizhetik, hogy a kiszolgáló digitális aláírása valóban érvényes és a webhely tulajdonosához tartozik. Hasonlóan dolgozik a secure shell távoli bejelentkezés, ami a végpontokon ellenőrzi a digitális aláírásokat mielőtt befejezné a kapcsolat kiépítését. Automatikus frissítési lehetőséggel rendelkező alkalmazásoknál célszerű a programban helyileg tárolni egy példányt az aláíró tanúsítványból, és azzal ellenőrizni a letöltött szoftverfrissítés aláírását.

Források[szerkesztés | forrásszöveg szerkesztése]

  1. Alla Bezroutchko: Predictable DNS transaction IDs in Microsoft DNS Server, scanit.be
  2. Description of the DNS Server Secure Cache Against Pollution setting, microsoft.com
  3. BIND Security Matrix. ISC Bind. (Hozzáférés: 2011. május 11.)
  4. ISC Bind Security. ISC Bind. (Hozzáférés: 2011. május 11.)