Bezpečnostní chyba v DNS, upgrade doporučen

25.07.2008 14:52

V souvislosti s bezpečnostní chybou v DNS, uveřejněnou již dříve pod číslem VU#800113 americkým CERT, se objevil na internetu exploit, který tuto chybu zneužívá. Důrazně je doporučován upgrade DNS software!

Následuje český překlad oznámení VU#800113 (originální text oznámení v angličtině najdete na stránkách US CERT).

Oznámení Vulnerability Note VU#800113
Mnohé implementace DNS jsou ohroženy útoky typu cache poisoning

Přehled
Nedostatky DNS protokolu a jeho běžných implementací umožňují útoky typu DNS cache poisoning.

Popis
Domain Name System (DNS) je odpovědný za překlad hostitelských jmen na IP adresy a naopak a je kritickým prvkem, 
potřebným pro normální fungování Internetových systémů. DNS cache poisoning (nebo také cache pollution) je technika 
útoku, která útočníkům dovoluje umístit falešnou DNS informaci do cache (mezipaměti) caching nameserveru. DNS cache 
poisoning není nový koncept, byla publikována řada článků o nedostatcích DNS protokolu a běžných DNS implementací, 
které DNS cache poisoning umožňují. Příklady takových nedostatků a chyb jsou tyto:

Nedostatečný transaction ID prostor
Specifikace DNS protokolu obsahuje i pole transaction ID o délce 16 bitů. Pokud je specifikace implementována správně 
a transaction ID je náhodně vybráno robustním generátorem náhodných čísel, bude útočník potřebovat v průměru 32 768 
pokusů, aby ID mohl předpovědět. Některé nekvalitní implementace mohou pro toto pole používat menší počet bitů, 
takže útočníci potřebují méně pokusů. Existují také známé nedostatky generování náhodných čísel v poli transaction ID. 
Amit Klein v roce 2007 některé z nich prověřoval. Tato rizika jsou popsána v těchto upozorněních vulnerability notes: 
VU#484649 - Microsoft Windows DNS Server je ohrožen útoky typu cache poisoning 
VU#252735 - ISC BIND generuje kryptograficky slabé ID pro DNS querry 
VU#927905 - BIND verze 8 generuje kryptograficky slabé identifikátory DNS querry

Mnohonásobné nevyřešené požadavky
Některé implementace DNS služeb obsahují slabá místa, díky nimž mnohonásobné a identické požadavky na stejný záznam 
resource record (RR) generují mnohonásobné nevyřešené požadavky na tento záznam. To pak umožňuje útok typu 'birthday 
attack,' který značně zvyšuje útočníkovu naději na úspěch. Tato problematika byla popsána v dokumentu VU#457875. Řada 
dodavatelů a implementátorů již své produkty upravila.

Pevný zdrojový port generace dotazů
Některé současné implementace alokují při startu nějaký port (někdy náhodně vybraný) a pak jej používají jako zdrojový port 
pro všechny odchozí dotazy. U některých implementací je zdrojový port pro odchozí dotazy dokonce pevný, na tradičním 
čísle portu DNS serveru 53/udp.

Nedávný další výzkum těchto problémů a metod, kombinovaných za účelem zlepšování útoků typu cache poisoning odhalil 
zvláště efektivní techniky. Caching DNS resolvery jsou ohroženy nejvíce, a to jak ty otevřené (DNS resolver je otevřený, pokud 
poskytuje rekurzivní informace o jménech pro klienty mimo svou administrativní doménu), tak ty uzavřené. Caching resolvery 
jsou pro útočníky nejčastějším cílem, nicméně ohroženy jsou i stub resolvery.

Protože tyto útoky spočívají ve schopnosti útočníka předvídatelně přesměrovávat provoz, je použití randomizace zdrojových 
portů praktickou obranou proti nim i při omezeních současné specifickace protokolu DNS. Randomizace zdrojových portů 
zajistí zhruba dalších 16 bitů, které musí útočník uhodnout. I když technicky existuje 65 535 portů, nelze je použít všechny 
(čísla portů <1024 mohou být rezervována, jiná mohou být již použita, atd.). I tak ale randomizace dostupných portů přidá 
podstatnou odolnost proti útokům. Je důležité upozornit, že bez změn DNS protokolu, jako jsou změny, představené v rámci 
DNS Security Extensions (DNSSEC), nemohou tyto metody cache poisoningu zabránit úplně. Pokud jsou ale správně použity, 
redukují několikanásobně šance útočníků a udělají podobné útoky nepraktickými.

Dopad
Útočník, schopný provést úspěšný útok typu cache poisoning může způsobit, že klienti napadeného nameserveru kontaktují 
nesprávné a potenciálně nebezpečné hostitelské počítače. Tak může být Internetový provoz, Email a další důležitá data 
přesměrována na systémy pod kontrolou útočníka.

Řešení
Použijte záplatu od dodavatele 
Řada dodavatelů uvolnila záplaty, implementující randomizaci zdrojových portů nameserveru. Taková záplata značně redukuje 
praktičnost útoků typu cache poisoning. Detailní informace o jednotlivých dodavatelích viz část Ovlivněné systémy.

Stub resolvery mohou být těmto útokům také vystaveny, takže systémoví administrátoři by měli provést patch stub resolverů, 
které vydávají v reakci na chování útočníka dotazy a na které mohou útočníci posílat pakety. Administarátoři by si měli 
opatřit záplaty operačních systémů klienta, které implementují randomizaci portů na stub resolveru.

Omezte přístup
Další cestou, zvláště pro administrátory, kteří nemají k dispozici záplaty, je limitovat možnost útoků omezením zdrojů, které 
mohou požadovat rekurzi. Omezení přístupu však v útocích nezabrání útočníkům, kteří mají přístup k autorizovaným 
hostitelským počítačům. Dokument "Securing an Internet Name Server" (Ochrana Internetového nameserveru) obsahuje 
instrukce pro omezení rekurze v ISC BIND.

Filtrujte přístupy na hranici sítě
Protože k provedení těchto útoků je nutná schopnost produkovat falešné IP adresy, měli by administrátoři takové falešné 
adresy filtrovat na hranici sítě. Dokumenty IETF Request for Comments (RFC) RFC 2827, RFC 3704 a RFC 3013 popisují 
současné nejlepší praktiky implementace této ochrany. Před rozhodnutím o tom, které změny uplatníte, je důležité znát 
konfiguraci vaší sítě a požadavky na jednotlivé služby.

Používejte místní DNS cache
Namísto robustní randomizace portů stub resolveru mohou administrátoři své systémy chránit použitím místních caching 
resolverů jak na klientských systémech, tak na serverech, které jsou topograficky blízké klientským systémům. Použití 
takových resolverů by mělo být doprovázeno segmentací sítě a filtrováním podle popisu výše.

Deaktivujte rekurzi
Deaktivujte rekurzi na jakémkoli nameserveru, odpovídajícím na DNS požadavky z nedůvěřivých systémů. Dokument 
"Securing an Internet Name Server" (Ochrana Internetového nameserveru) obsahuje instrukce pro omezení rekurze v ISC 
BIND.

Používejte randomizaci zdrojového portu
Dodavatelé DNS software by si měli prostudovat dokument IETF "Measures for making DNS more resilient against forged 
answers" (Opatření ke zvyšování odolnosti DNS protokolu proti falešným odpovědím na dotazy). Tento dokument je ve 
stadiu návrhu a před publikací ve formě RFC dokumentu se může změnit. Implementátoři systémů by si měli prostudovat 
i dokument IETF "Port Randomization" (Randomizace portů), který obsahuje informace o tom, jak může randomizace 
portů přispět k ochraně před ostatními druhy spoof útoků.

Ovlivněné systémy
Dodavatel                                   Statut          Datum aktualizace
3com, Inc.                                  Neznámý         10/7/2008
Akamai Technologies, Inc.                   Neznámý         21/4/2008
Alcatel                                     Neznámý         21/4/2008
Apple Computer, Inc.                        Neznámý         5/5/2008
AT&T                                        Neznámý         21/4/2008
Avaya, Inc.                                 Neznámý         21/4/2008
Avici Systems, Inc.                         Neznámý         21/4/2008
Belkin, Inc.                                Neznámý         13/7/2008
BlueCat Networks, Inc.                      Neznámý         5/5/2008
Check Point Software Technologies           Zabezpečený     10/7/2008
Cisco Systems, Inc.                         Nezabezpečený   10/7/2008
Conectiva Inc.                              Neznámý         5/5/2008
Cray Inc.                                   Neznámý         5/5/2008
D-Link Systems, Inc.                        Neznámý         2/5/2008
Data Connection, Ltd.                       Neznámý         21/4/2008
Debian GNU/Linux                            Nezabezpečený   9/7/2008
djbdns                                      Zabezpečený     10/7/2008
dnsmasq                                     Nezabezpečený   11/7/2008
DragonFly BSD Project                       Neznámý         3/7/2008
EMC Corporation                             Neznámý         21/4/2008
Engarde Secure Linux                        Neznámý         5/5/2008
Ericsson                                    Neznámý         21/4/2008
Extreme Networks                            Neznámý         21/4/2008
F5 Networks, Inc.                           Nezabezpečený   14/7/2008
Fedora Project                              Neznámý         5/5/2008
Force10 Networks, Inc.                      Zabezpečený     11/7/2008
Foundry Networks, Inc.                      Zabezpečený     10/7/2008
FreeBSD, Inc.                               Nezabezpečený   14/7/2008
Fujitsu                                     Neznámý         21/4/2008
Gentoo Linux                                Nezabezpečený   12/7/2008
Gnu ADNS                                    Neznámý         5/5/2008
GNU glibc                                   Neznámý         5/5/2008
Hewlett-Packard Company                     Neznámý         21/4/2008
Hitachi                                     Neznámý         21/4/2008
Honeywell                                   Neznámý         21/4/2008
IBM Corporation                             Nezabezpečený   12/7/2008
IBM Corporation (zseries)                   Neznámý         5/5/2008
IBM eServer                                 Neznámý         21/4/2008
Infoblox                                    Nezabezpečený   10/7/2008
Ingrian Networks, Inc.                      Neznámý         5/5/2008
Intel Corporation                           Neznámý         21/4/2008
Internet Systems Consortium                 Nezabezpečený   14/7/2008
JH Software                                 Zabezpečený     10/7/2008
Juniper Networks, Inc.                      Nezabezpečený   10/7/2008
Linux Kernel Archives                       Neznámý         3/6/2008
Lucent Technologies                         Neznámý         21/4/2008
Luminous Networks                           Neznámý         21/4/2008
Mandriva, Inc.                              Neznámý         5/5/2008
MaraDNS                                     Zabezpečený     10/7/2008
Men & Mice                                  Neznámý         5/5/2008
Metasolv Software, Inc.                     Neznámý         5/5/2008
Microsoft Corporation                       Nezabezpečený   8/7/2008
MontaVista Software, Inc.                   Neznámý         5/5/2008
Motorola, Inc.                              Neznámý         21/4/2008
Multinet (Process Software Corporation)     Neznámý         21/4/2008
Multitech, Inc.                             Neznámý         21/4/2008
NEC Corporation                             Neznámý         21/4/2008
NetApp                                      Neznámý         3/7/2008
NetBSD                                      Neznámý         5/5/2008
Netgear, Inc.                               Neznámý         21/4/2008
Network Appliance, Inc.                     Neznámý         21/4/2008
Nixu                                        Nezabezpečený   9/7/2008
NLnet Labs                                  Zabezpečený     10/7/2008
Nokia                                       Neznámý         21/4/2008
Nominum                                     Nezabezpečený   10/7/2008
Nortel Networks, Inc.                       Neznámý         21/4/2008
Novell, Inc.                                Nezabezpečený   14/7/2008
OpenBSD                                     Neznámý         5/5/2008
OpenDNS                                     Zabezpečený     10/7/2008
Openwall GNU/*/Linux                        Neznámý         5/5/2008
PePLink                                     Zabezpečený     10/7/2008
Posadis project                             Neznámý         14/7/2008
PowerDNS                                    Zabezpečený     10/7/2008
Q1 Labs                                     Zabezpečený     11/7/2008
QNX, Software Systems, Inc.                 Neznámý         5/5/2008
Red Hat, Inc.                               Nezabezpečený   10/7/2008
Redback Networks, Inc.                      Neznámý         21/4/2008
Secure Computing Network Security Division  Neznámý         9/7/2008
Shadowsupport                               Neznámý         5/5/2008
Siemens                                     Neznámý         8/7/2008
Silicon Graphics, Inc.                      Neznámý         5/5/2008
Slackware Linux Inc.                        Nezabezpečený   12/7/2008
Sony Corporation                            Neznámý         21/4/2008
Sun Microsystems, Inc.                      Nezabezpečený   10/7/2008
SUSE Linux                                  Nezabezpečený   11/7/2008
The SCO Group                               Neznámý         5/5/2008
Trustix Secure Linux                        Neznámý         5/5/2008
Turbolinux                                  Neznámý         5/5/2008
Ubuntu                                      Nezabezpečený   10/7/2008
Wind River Systems, Inc.                    Nezabezpečený   9/7/2008
ZyXEL                                       Neznámý         21/4/2008

Reference
http://www.kb.cert.org/vuls/id/484649
http://www.kb.cert.org/vuls/id/252735
http://www.kb.cert.org/vuls/id/927905
http://www.kb.cert.org/vuls/id/457875
http://www.cert.org/archive/pdf/dns.pdf
http://tools.ietf.org/html/draft-ietf-dnsext-forgery-resilience
http://tools.ietf.org/html/rfc3833
http://tools.ietf.org/html/rfc2827
http://tools.ietf.org/html/rfc3704
http://tools.ietf.org/html/rfc3013
http://tools.ietf.org/html/rfc4033
http://tools.ietf.org/html/draft-ietf-tsvwg-port-randomization
http://cr.yp.to/djbdns/dns_random.html
http://cr.yp.to/djbdns/dns_transmit.html
http://cr.yp.to/djbdns/forgery.html
http://www.trusteer.com/microsoftdns
http://www.trusteer.com/bind9dns
http://www.trusteer.com/bind8dns
http://www.sans.org/reading_room/whitepapers/dns/1567.php

Poděkování
Děkuji Danu Kaminskému z IOActive za identifikaci účinnosti a použitelnosti DNS cache poisoning a Paulu Vixiemu 
z Internet Systems Consortium (ISC) za zdůraznění urgence tohoto problému. Daniel J. Bernstein je původním autorem 
a implementátorem randomizovaných zdrojových portů na DNS resolveru. 
Autorem tohoto dokumentu je Chad R Dougherty.

Další informace
Datum publikace             08/07/2008
Datum první publikace       08/07/2008 14:46:15
Datum poslední aktualizace  14/07/2008 
CERT poradenství
CVE jméno                   CVE-2008-1447
US-CERT technická varování  TA08-190B
Metrika                     27,54
Revize                      62