Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Popularny firewall PF (packet filter) – DoS systemu operacyjnego / obejście firewalla pakietami IPv6
Świetne opracowanie pokazujące możliwość wysłania odpowiednio spreparowanych pakietów IPv6 (z fragmentacją), co umożliwia DoS na system operacyjny czy obejście firewalla opartego na PF. Nie wygląda to zachęcająco, prawda?
Na czym polega istota problemu? Zobaczmy jak wygląda normalna defragmentacja dwóch sfragmentowanych pakietów IPv6. Widać tutaj standardowy 40-bajtowy nagłówek IPv6, kilka nagłówków rozszerzeń (Ext), nagłówek rozszerzenia Fragment Header (Frag – odpowiedzialny za fragmentację) i payload (np. segment TCP):
Zauważcie że w zdefragmentowanym pakiecie pole nh (next header) w ostatnim nagłówku rozszerzeń wskazuje ładnie na payload TCP.
Ale co się stanie jeśli złośliwie podamy do defragmentacji dwa pakiety z różną liczbą nagłówków rozszerzeń? (nie powinno się tak wydarzyć w normalnej sytuacji – oryginalny pakiet przed defragmentacją ma przecież jeden zestaw nagłówków rozszerzeń). Wtedy lądujemy w „krzakach” (czyli pole nh w ostatnim nagłówku – Ext2 – wskazuje na pewno nie na początek payloadu):
W końcu można tak dobrać ilośc rozszerzeń w drugim pakiecie, że pole NH będzie wskazywało na nieistniejące miejsce w pakiecie = game over (kernel panic). Może to tez służyć czasem do omijania reguł firewalla (np. wysyłanie pakietów TCP na blokowane porty).
FreeBSD wypuściło właśnie łatę. OpenBSD nieco wcześniej – podatność istniała od wersji 5.0 OpenBSD (czyli od 2011 roku).
–ms