Protokół ICMP - dziurawy jak rzeszoto?

ICMP, Internet Control Message Protocol, to - mówiąc w uproszczeniu - protokół kontrolujący jakość odbywającego się w sieciach ruchu. To ICMP odpowiedzialny jest za odpowiedzi na pingi (Echo reply) czy za informacje o niedostępności sieci (Network Unreachable). Protokół został opracowany ponad dwadzieścia lat temu, a od ponad dekady nie wprowadzono w nim żadnych poprawek. Niektórych zaczęło to niepokoić...

Jednym z takich "zaniepokojonych" jest Fernando Gont - haker, specjalista do spraw sieci. Jego zdaniem najpoważniejsze problemy z ICMP wynikają nie z konkretnych implementacji, lecz mają swe źródło w specyfikacji protokołu. Wrażliwe są wszystkie systemy, przy projektowaniu których ściśle się jej trzymano - i to niezależnie od producenta (Microsoft, społeczność open source, Sun itp.).

Specyfikacja wymusza m.in. implementację trzech bardzo wątpliwych funkcjonalności. Jedną z nich można wykorzystać generując dużą ilość fałszywych komunikatów "Source quench", które natychmiast zmuszą nadawcę do obniżenia szybkości transmisji.

Połączenie co prawda nie zostanie przerwane, ale przez kilka minut dane dosłownie kapią. Gont pokazuje przykładowe rozwiązanie: programiści powinni mniej polegać na niektórych informacjach przesyłanych przy pomocy ICMP.

To nasze odkrycie, nie twoje!

Przy okazji omawiania problemów z ICMP Gont opowiada także o swoich frustracjach podczas informowania dużych korporacji o odkryciach. Dostaje się Microsoftowi, dostaje się także Cisco - tej ostatniej firmie Gont przez dwa miesiące szczegółowo tłumaczy swoje rewelacje, po czym dowiaduje się nagle, że... fragment jego pracy został już opatentowany.

Więcej informacji: KernelTrap


Zobacz również