Ping of death

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Ping of death — тип сетевой атаки, при которой компьютер-жертва получает особым образом подделанный эхо-запрос (ping), после которого он перестает отвечать на запросы вообще (DoS). Эта уязвимость была широко распространена в середине 1990-х годов на различных операционных системах и сетевых устройствах, включая Unix, Linux, Mac, Windows, сетевые принтеры и маршрутизаторы. Чтобы исполнить эту атаку, хватало одной команды из Windows 95 или NT:[1]

ping -l 65500 example.com

Подавляющее большинство систем было исправлено в 19971998 годах, поэтому эта уязвимость ныне является исторической.

Принципы атаки[править | править вики-текст]

Обычный эхо-запрос имеет длину 64 байта (плюс 20 байт IP-заголовка). По стандарту RFC 791 IPv4 суммарный объем пакета не может превышать 65 535 байт ((2^{16}-1)). Отправка же ICMP-пакета такого или большего размера может привести к переполнению сетевого стека компьютера и вызвать отказ от обслуживания. Такой пакет не может быть передан по сети целиком, однако для передачи его можно фрагментировать на несколько частей, число которых зависит от MTU физического канала.

При фрагментации каждая часть получает смещение фрагментации, которое представляет собой положение начала содержимого части относительно исходного пакета и занимает в заголовке IP-пакета 13 бит. Это позволяет получить максимальное смещение, равное 65 528 байт ((2^{13}-1)\times8), что означает, что фрагмент с максимальным смещением не должен превышать 7 байт (65 535-65 528 = 7), иначе он превысит разрешённый размер IP-пакета, что может вызвать переполнение буфера жертвы, размер которого рассчитан на стандартный пакет, и аварийную остановку компьютера.

Данная уязвимость применима к любому транспортному протоколу, который поддерживает фрагментацию (TCP, UDP, IGMP, ICMP и др.).

Способы противодействия[править | править вики-текст]

Решением данной проблемы является введение дополнительной проверки размера собираемого пакета при получении, которая суммирует смещения фрагментации всех связанных пакетов. Если общая сумма превысит 65 535, пакет считается неправильным и отбрасывается. Подобная проверка может проводиться и в межсетевых экранах.

Примечания[править | править вики-текст]

  1. Эти ОС не только некорректно реагировали на такой пакет, но и умели его фабриковать.

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]