27.10.2002

State-based firewalls не в состоянии эффективно управлять истощением ресурсов таблицы состояния сеанса

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

I. Описание

Большинство программ межсетевых защит используют таблицы состояния, чтобы определить, принадлежит ли данный пакет существующему сеансу между двумя хостами на противоположных сторонах межсетевой защиты. Когда межсетевая защита встречает пакет, который соответствуют набору правил, но не соответствуют определенному состоянию, добавляется запись в таблицу состояния, чтобы проследить новый сеанс. Межсетевая защита может удалить записи из таблицы состояния по нескольким причинам, включая истечение значения времени ожидания или при обнаружении сорванных пакетов (типа TCP FIN или TCP RST).

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

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

1. TCP SYN Flood

В SYN Flood нападении, нападающий посылает SYN пакеты с подделанным IP адресом источника, как будто входящий трафик происходит от множественных клиентов. Так как такие пакеты соответствуют набору правил межсетевой защиты, она создаст запись в таблице состояния, чтобы проследить ожидающие подключения. Поскольку адреса клиента подделаны, посланные SYN-ACK сообщения будут отвергнуты, оставляя таблицу состояния межсетевой защиты, заполненную поддельными записями и в конечном счете создавая отказ в обслуживании.

2. UDP Flood

В UDP Flood нападении, нападающий посылает большое число небольших UDP пакетов с подделанным IP адресом источника. Так как UDP протокол не использует установление соединения, нет никаких индикаторов состояния сеанса (SYN, SYN -ACK, ACK, FIN, или RST), чтобы помочь межсетевой защите в обнаружении аварийного протокола, который бы указывал на это нападение. В результате, межсетевые защиты, прослеживающие состояние подключения, должны доверять источнику и адресу назначения, чтобы создать записи в таблице состояния и значение истечении времени сеанса.

3. Crikey CRC Flood

Стивен Джилл обнаружил новый метод нападения на межсетевые защиты, прослеживающие состояние подключения, основанный на Crikey CRC Flood (C2 Flood). CRC контрольные суммы вычисляются на каждом сетевом уровне (Data Link, Transport, и Network) и используются, чтобы обнаружить нарушение целостности данных, вызванное ошибками передачи. C2  Flood состоит из пакетов, содержащих недопустимые контрольные суммы для протоколов транспортного уровня, типа UDP и TCP. Поскольку экспертиза данных транспортного уровня не необходима для операций межсетевой защиты, большинство межсетевых защит игнорируют эти контрольные суммы. Поэтому, если входящий C2 Flood пакет, соответствует набору правил межсетевой защиты, она создаст запись в таблице сеанса и передаст недопустимый пакет к адресуемому хосту.

В отличие от межсетевой защиты, хост адресата должен проверить все контрольные суммы, чтобы не принимать разрушенные пакеты. В соответствии с сетевым соглашением, большинство хостов, которые получают недопустимые пакеты от C2 Flood, просто откажутся от них, предполагая, что ответ заставит исходный хост повторно передать данные. Это представляет проблему для межсетевой защиты, так как при этих условиях хост назначения не дает ответа, который файрвол может использовать для настройки своей таблицы состояния.

II. Воздействие

Удаленные атакующие могут провести DoS нападения против уязвимых межсетевых защит.

III. Решение

Нападения, описанные в этом документе, невозможно блокировать полностью, но есть несколько методов, которые могут уменьшить их воздействия:
  1. Используйте особенности межсетевой защиты для обнаружения и блокирования flood трафика.

    Многие межсетевые зашиты содержат систему блокирования UDP и TCP SYN нападений. Рекомендуется всегда включать такую защиту.

  2. Используйте таблицы состояния изменяемого размера

    Таблицы состояния, которые используют распределенную память, могут увеличить свой размер, чтобы разместить большее число состояний. Важно обратить внимание, что размер динамической таблицы состояний будет все еще ограничиваться доступной памятью межсетевой защиты.

  3. Используйте отдельный тайм-аут для начальных сеансов

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

  4. Использование динамически корректируемые таймеры сеанса (Aggressive Aging)

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

  5. Отключите прослеживание состояние подключения

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

или введите имя

CAPTCHA