новости
статьи
.save ass…

RST-уязвимость TCP

Об этой, с позволения сказать, «уязвимости» достаточно много говорили в последние месяцы. Особенно отличались, как обычно, общественно-политические СМИ:
«Обнаружена брешь в TCP, способная привести к концу Интернета!»
«Использование этой уязвимости может разрушить своеобразный „клей“, который скреплял Интернет воедино».
«Это открытие заставило интернет-сообщество принимать срочные меры для поддержания работоспособности всех основных протоколов Всемирной паутины.»
«Риск очень значителен. Очень важно вовремя залатать замеченную дыру, пока плохие парни не стали использовать ее для развлечения или перехвата данных!»
Этими и подобными страшилками пестрили новостные ленты сетевых и бумажных СМИ. Последнее высказывание, кстати, приписывается Полу Викси (Paul Vixie) из Internet Systems Consortium. Впрочем, вряд ли Пол в здравом уме и светлой памяти сказал такое относительно RST-уязвимости, скорее всего эту фразу выдернули из какого-то другого контекста :)
Так или иначе, страху нагнали господа журналисты порядочно. Но мы-то – сетевики – народ не из пугливых, так что давайте спокойно и обстоятельно разберемся, что же это за уязвимость. За основу изложения, дабы не изобретать велосипед, взят отчет National Infrastructure Security Co-ordination Centre (NISCC).

шеф-редактор

на что воздействует?

Уязвимость затрагивает реализацию TCP-протокола, описанную группой проектирования Internet в технической документации (RFC) для TCP, включая RFC 793 и RFC 1323.
TCP - базовый сетевой протокол, в настоящее время используемый в большинстве сетевых компьютерных систем. Многие производители включают поддержку этого протокола в свои программы, которые могут быть в различной степени уязвимы. Кроме того, любые сетевые службы или приложения, опирающиеся на TCP, тоже подвержены нападениям, причем опасность нападения зависит, прежде всего, от продолжительности TCP-сеанса.

степень опасности

Влияние этой уязвимости зависит от производителя и от приложения, но в некоторых случаях оно оценивается как критическое.
При эксплуатации уязвимости у злоумышленника появляется возможность создания условий для отказа в обслуживании (DoS) для существующих TCP-подключений, что приводит к преждевременному завершению сеанса. Завершения сеанса воздействует на уровне приложения, а характер и степень опасности зависят от протокола приложения.
BGP оценивают как потенциально наиболее подверженный этой уязвимости.
BGP основывается на устойчивом TCP-сеансе между двумя сетевыми узлами. Сброс подключения может привести к недоступности узла в течение времени, необходимого для восстановления таблиц маршрутизации и перестройки маршрута. Перестройка маршрута может привести к недоступности маршрута, если он происходит слишком часто в течение короткого промежутка времени. Однако даже при успешной атаке, воздействие на BGP, вероятно, будет уменьшено в случае использования TCP MD5 сигнатур и антиспуфинговых мероприятий, поскольку они успешно смягчают воздействие уязвимости.
Имеется потенциальная опасность воздействия уязвимости на другие протоколы приложений типа DNS и SSL в случае зональных передач и транзакций электронной коммерции соответственно, но продолжительность таких сеансов относительно небольшая, и они могут быть без проблем перезапущены. В случае с SSL может быть затруднение с определением исходного IP-адреса.
Возможна также инъекция данных, но это не демонстрировалось и кажется довольно проблематичным. /* Решительно непонятно мне это заявление. Если имеется в виду перехват сессии (man in the middle attack), описанный еще Митником черте сколько лет назад (метод известен также как TCP-hijacking, мы о нем писали в СР) – то это а) далеко не новость и б) мало имеет отношения к RST-уязвимости. В противном случае, применительно именно к описываемой в статье проблеме, непонятно, куда даже теоретически эти данные можно «инъектить»? – прим. ред. */

краткое описание

Проблема, о которой идет речь - возможность сброса установленного TCP-подключения с помощью посылки соответствующих TCP-пакетов с набором флагов RST или SYN.
Пакеты должны иметь IP-адреса источника и назначения, соответствующие установленному подключению и те же самые TCP порты источника и назначения.
Хотя DoS-атака, использующая обработанные TCP-пакеты, является известным слабым местом в TCP-протоколе, но до недавнего времени она считалась практически неосуществимой. Причиной этого является проверка SN (Sequence Number) RST- или SYN-пакета (32-разрядное число), а вероятность правильного определения этого номера равна 1/2^32.
Исследователем RST-атак - Пауль Ватсон - заметил, что вероятность правильного определения нужного порядкового номера пакета гораздо выше, чем 1/2^32. Это происходит из-за того, что протокол принимает любой порядковый номер в некотором диапазоне (TCP window size) от требуемого числа, что делает реальным выполнение такого вида нападения.
Любой протокол уровня приложений, основывающийся на долговременном TCP-соединении и для которого известны TCP-порты и IP-адреса источника и назначения будет уязвим, по крайней мере, к DoS-атаке.

подробности

TCP - протокол транспортного уровня, работающий поверх IP. TCP использует наборы флагов, указывающих состояние и порядковые номера для определения порядка реассемблирования пакетов.
В TCP протоколе также используется число, называемое номером подтверждения и используемое для указания порядкового номера следующего ожидаемого пакета. Пакеты реассемблируются только в том случае, если разброс их порядковых номеров происходит в пределах диапазона номера подтверждения. Номер подтверждения не используется в RST-пакете, потому что при сбросе не ожидается возвратный пакет. (Если быть более точными, то последнее утверждение правильно только для RST-пакетов без флага ACK, используемых для указания на закрытие TCP-порта. RST/ACK-пакет используется для приостановления активного соединения в случае ошибки, и в нем заключен номер подтверждения).
Размеры TCP window определяются в процессе синхронизации соединения и при этом обычно устанавливаются наиболее высокие значения TCP window, что в некоторых случаях обеспечивает улучшение производительности. Значения установленные производителем по умолчанию тоже влияют на выборку. В любом случае, чем больше размер TCP window, тем выше вероятность, что случайно выбранный порядковый номер будет лежать в пределах области TCP window. Это и является основой для атаки.
TCP подключение определяется IP-адресами и портами источника и назначения (сокетами). Злоумышленник, пытающийся разорвать существующее соединение, должен правильно подобрать все эти значения. И хотя порт источника меняется, однако в представленном исследовании показано, что процесс выбора исходного порта включает в себя предсказуемые элементы, поэтому атака становится реально осуществимой.
Прикладные программы, на которые оказывается критическое воздействие:
- зависят от долговременных TCP-подключений;
- имеют известные или легко определяемые IP-адреса назначения;
- имеют простой для предположения TCP-порт источника.
Как было отмечено выше, BGP использует долговременные TCP-подключения, а IP-адрес источника и порт источника иногда доступны в BGP-зеркале (looking glass) или в ресурсных записях DNS. Использование команды "traceroute“ может предоставить информацию об IP-адресах сетевых узлов. Таким образом, данная уязвимость имеет критическое воздействие на BGP.
DoS атаки могут быть выполнены как с одной машины, так и множественными системами (для формирования распределенной (DDoS) атаки).

cмягчение последствий

Ниже представлены следующие шаги, необходимые при отсутствии исправлений у производителя:
1. Внедрение IP-защиты (IPSEC), шифрующей трафик на сетевом уровне (при этом становится недоступной TCP-информация).
2. Уменьшение размера TCP window (хотя это может снизить производительность).
3. Запрет оглашения информации о TCP-порте источника.
Необходимо отметить, что IPSEC предоставляет секретность информации и службы аутентификации на сетевом уровне и может поддерживать проверку подлинности конечных точек соединения, равно как и шифрование трафика между ними. Однако в нашем случае IPSEC будет отклонять RST и SYN пакеты, которые не являются частью безопасного потока IP-пакетов.
Для изменения заданного по умолчанию значения размера TCP window в некоторых Unix системах, вы можете использовать переменные sysctl. В случае Microsoft Windows NT /2000/XP/2003, заданный по умолчанию размер TCP window может быть изменен, путем модификации значения ключа реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters.
Как было отмечено выше, следует с осторожностью изменять значение TCP window, т.к. это может привести к большой потере производительности. Ниже приведены действия, которые помогут смягчить проблему в случае с BGP:
1. Выполнять входную и выходную фильтрацию. Это необходимо для проверки того, что входящий и исходящий трафик имеет IP-адрес источника, ожидаемый на интерфейсе маршрутизатора, принимающего трафик.
2. Использовать TCP MD5 Signature Option для подсчета контрольной суммы TCP-пакетов, несущих данные BGP-приложения. (См. RFC 2385).
3. Ограничить количество информации, доступной через BGP-зеркала и ресурсные записи DNS.

По материалам National Infrastructure Security Co-Ordination Centre (NISCC), Великобритания.
обсудить статью

© сетевые решения
.
.