Пинг смерти - Ping of death

А пинг смерти это тип атаки на компьютерную систему, который включает отправку уродливый или иным образом злонамеренный пинг к компьютеру.

Правильно сформированный пакет ping обычно составляет 56 байты размером, или 64 байта, когда ICMP заголовок считается, и 84 включая протокол Интернета Заголовок версии 4. Однако любой IPv4 размер пакета (включая эхо-запросы) может достигать 65 535 байт. Некоторые компьютерные системы никогда не были разработаны для правильной обработки пакетов ping, превышающих максимальный размер пакета, потому что он нарушает протокол Интернета задокументировано в RFC 791.[1] Как и другие большие, но хорошо сформированные пакеты, эхо-запрос смерти перед передачей разбивается на группы по 8 октетов. Однако, когда целевой компьютер повторно собирает искаженный пакет, переполнение буфера может произойти, вызывая сбой системы и потенциально позволяя внедрение вредоносного кода.

В ранних реализациях TCP / IP, эту ошибку легко использовать и она может затронуть широкий спектр систем, включая Unix, Linux, Mac, Windows, и периферийные устройства. Когда системы начали фильтровать эхо-запросы смерти через брандмауэры и другие методы обнаружения, появился другой вид пинг-атаки, известный как пинг флуд позже появился, который наводняет жертву таким количеством запросов ping, что нормальный трафик не достигает системы (базовый атака отказа в обслуживании ).

Подробная информация

Как определено в RFC 791 максимальная длина пакета IPv4, включая заголовок IP, составляет 65 535 (216 - 1) байтов, ограничение, представленное использованием поля заголовка IP шириной 16 бит, которое описывает общую длину пакета.

Лежащий в основе Уровень канала передачи данных почти всегда ограничивает максимальный размер кадра (см. MTU ). В Ethernet, обычно это 1500 байт. В таком случае большой IP-пакет разделяется на несколько IP-пакетов (также известных как IP-фрагменты), так что каждый IP-фрагмент будет соответствовать установленному пределу. Получатель IP-фрагментов соберет их в полный IP-пакет и продолжит его обработку как обычно.

Когда фрагментация выполняется, каждый IP-фрагмент должен нести информацию о том, какую часть исходного IP-пакета он содержит. Эта информация хранится в поле «Смещение фрагмента» в заголовке IP. Поле имеет длину 13 бит и содержит смещение данных в текущем IP-фрагменте в исходном IP-пакете. Смещение указывается в единицах по 8 байтов. Это позволяет максимальное смещение 65 528 ((213-1) * 8). Тогда при добавлении 20 байтов IP-заголовка максимум будет 65 548 байтов, что превышает максимальный размер кадра. Это означает, что IP-фрагмент с максимальным смещением должен содержать данные не более 7 байтов, иначе он превысит предел максимальной длины пакета. Злоумышленник может отправить IP-фрагмент с максимальным смещением и с гораздо большим объемом данных, чем 8 байтов (насколько это позволяет физический уровень).

Когда получатель соберет все IP-фрагменты, он получит IP-пакет размером более 65 535 байт. Это может привести к переполнению буферов памяти, выделенных получателем для пакета, и вызвать различные проблемы.

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

Исправление проблемы - добавление проверок в процессе сборки. Проверка каждого входящего IP-фрагмента гарантирует, что сумма полей «Смещение фрагмента» и «Общая длина» в IP-заголовке каждого IP-фрагмента меньше или равна 65 535. Если сумма больше, значит пакет недействителен, а IP-фрагмент игнорируется. Эта проверка выполняется некоторыми брандмауэры, для защиты хостов, на которых ошибка не исправлена. Другое решение проблемы - использование буфера памяти размером более 65 535 байт для повторной сборки пакета. (По сути, это нарушение спецификации, поскольку она добавляет поддержку пакетов большего размера, чем разрешено.)

Пинг смерти в IPv6

В 2013 г. IPv6 версия уязвимости ping of death была обнаружена в Майкрософт Виндоус. Стек Windows TCP / IP некорректно обрабатывал выделение памяти при обработке входящего неверного формата ICMPv6 пакеты, которые могут вызвать удаленный отказ в обслуживании. Эта уязвимость была исправлена ​​в MS13-065 в августе 2013 года.[2][3] В CVE-ID для этой уязвимости CVE -2013-3183.[4] В 2020 году еще одна ошибка (CVE-2020-16898) в ICMPv6 была обнаружена около Объявление маршрутизатора, что может даже привести к удаленное выполнение кода. [5]

Смотрите также

Рекомендации

  1. ^ Эриксон, Джон (2008). Взлом искусства эксплуатации (2-е изд.). Сан-Франциско: NoStarch Press. п.256. ISBN  1-59327-144-1.
  2. ^ «Бюллетень по безопасности Microsoft MS13-065 - Важно». Microsoft. 13 августа 2013 г.. Получено 25 февраля, 2017.
  3. ^ Джексон, Иоав (13 августа 2013 г.). «Вторник, патч Microsoft: Возвращение пинга смерти, в стиле IPv6». Получено 25 февраля, 2017.
  4. ^ "CVE - CVE-2013-3183". Корпорация МИТЕР. Получено 25 февраля, 2017.
  5. ^ "CVE-2020-16898 - уязвимость Windows TCP / IP, связанная с удаленным выполнением кода". Microsoft. 13 октября 2020 г.. Получено 14 октября, 2020.

внешняя ссылка