Лекция: Тогда при заполнении структуры, описывающей копируемый блок данных, возникает следующая

ситуация:

fp->offset = offset

fp->end = end

fp->len = end-offset (Отрицательная)

Заключенная в цикл инструкция по сборке фрагментов выглядит следующим образом:

memcpy((ptr+fp->offset), fp->ptr, fp->len),

где: ptr+fp->offset — смещение фрагмента в буфере; fp->ptr — область данных фрагмента; fp->len — длина

Копируемого блока данных.

Попытка скопировать блок данных отрицательной длины (что равносильно копированию очень большого

блока данных) приводит к затиранию достаточно большого участка памяти и к <зависанию> или перезаг-

Рузке компьютера.

Таким образом, для реализации данной атаки пакеты формируются по следующему правилу (рассмотрим

атаку из двух пакетов):

1. Посылается пакет, предполагающий фрагментацию (флаг MF = 1), со смещением фрагмента 0, блоком

Данных длиной N.

2. Посылается последний фрагмент сообщения (флаг MF = 0) с положительным смещением фрагмента

offset < N и блоком данных, длина которого меньше N-offset.

Последовательная передача таких пакетов приводит к возникновению рассмотренной выше ситуации,

Когда копирование блока отрицательной длины вызывает выход компьютера из строя.

Для NT существуют две похожие программы, которые реализуют этот механизм, связанный с наложением

IP-фрагментов: teardrop и newtear (с несущественными отличиями в константах). Пакеты посылаются с лю-

еще рефераты
Еще работы по информатике