Posts Tagged ‘DDNS’

BIND: luka remote DoS powszechnie wykorzystywana

30 lipca 2009

BIND9_exploitW dniu 28 lipca 2009 Micha Krause zgłosił błąd dotyczący popularnego serwera DNS — BIND9, który okazał się być podatny na zdalny atak typu DoS (Denial-of-Service).

Wykorzystanie luki umożliwia wyłączenie serwera BIND9 za pomocą pojedynczego pakietu UDP, o ile atakowany serwer DNS jest serwerem typu master przynajmniej dla jednej ze stref. Należy przy tym pamiętać, że zgodnie z RFC 1912 Common DNS Operational and Configuration Errors każdy serwer DNS powinien być podstawowym serwerem dla stref specjalnych, typu localhost, 0.0.127.in-addr.arpa, 255.in-addr.arpa, 0.in-addr.arpa.

Atak polega na wykorzystaniu mechanizmu aktualizacji DNS opisanego w RFC 2136 Dynamic Updates in the Domain Name System (DNS UPDATE). Atakujący wysyła spreparowane zapytanie do serwera DNS z ustawioną wartością opcode na 5 (UPDATE) oraz rekordem ANY w sekcji Prerequisite. Przetworzenie takiego pakietu skutkuje niespełnioną asercją w funkcji dns_db_findrdataset(), i w efekcie kończy się wyjściem serwera BIND.

Warto w tym miejscu dodać, że w sieci pojawiły się rady, jak zablokować tego typu ataki przy pomocy prostej reguły w iptables. Niestety, są one nieskuteczne ponieważ RFC 2136 2.1 stanowi, że tego typu złośliwe zapytanie może zostać wysłane również przy użyciu protokołu TCP. Zalecanym rozwiązaniem jest aktualizacja serwera BIND do najnowszej wersji. Ostatecznie można zdecydować się również na blokowanie komunikacji do serwera master, zostawiając dostępne jedynie serwery slave. Warto tutaj nadmienić, że wyłączenie funkcji dynamicznej aktualizacji (np. poprzez opcję allow-update) – nie chroni przed opisywanym atakiem. (więcej…)