Винни...
а никто и не наезжает, просто тут жаркая дискуссия, понимаешь... Я пытаюсь просто объяснить, что теоретически, существует реальная угроза DoS атак (именно атак на отказ в обслуживании!) на интернет сервера, в связи с выявленной уязвимостью протокола TCP. Об этом собственно и говорится изначально в статье, из-за которой разгорелся весь спор... а вот обещаный, мой ДОСЛОВНЫЙ перевод Консультативной рекомендации NISCC 236929, если найдете там неточности по сравнению с оригиналом - пишите, проверю..
"NISCC Консультация по уязвимости 236929
Проблемы уязвимости в TCP
Информация Версии
Консультативная рекомендация 236929 Дата Выпуска 20 апреля 2004 Последний пересмотр 27 апреля 2004 Номер версии 1.6
На что воздействует?
Уязвимость, описанная в этой консультации воздействует на выполнение Transmission Control Protocol (TCP), который описан в Internet Engineering Task Force's Просьбы о (IETF'S) Requests For Comments (RFCs) для TCP, включая RFC 793, первоначальная спецификация, и RFC 1323, Расширения TCP для высокоэффективной производительности.
TCP - основной сетевой протокол, используемый сегодня, в большинстве компьютерных систем с сетевой структурой. Множество производителей включают поддержку этого протокола в своих продуктах и могут быть подвержены уязвимости в различной степени. Кроме того, любая сетевая служба или приложение, которые основываются на TCP подключении, будут также уязвимы, степень серьезности зависит, прежде всего, от продолжительности сессии TCP.
Степень серьезности
Воздействие этой уязвимости изменяется, в зависимости от конкретного производителя и приложения, но в некоторых сценариях развертывания, оно оценивается, как критическое. Для полной информации, пожалуйста, см. ниже в разделе производителей. Альтернативно свяжитесь с вашим производителем для конкретной информации о продукте.
При выполнении, уязвимость могла бы позволить нападающему создать условие Отказа в обслуживании (Denial of Service) против существующих подключений TCP, приводя к преждевременному завершению сессии. В результате, завершение сессии затронет прикладной уровень, характер и серьезность эффектов, зависят от протокола прикладной программы. Первичная зависимость в продолжительности подключения TCP, с дальнейшей зависимостью, знания сетевых адресов (IP) вершинных пунктов подключения TCP.
Border Gateway Protocol (BGP), как оценивают, является потенциально наиболее затронутым этой уязвимостью.
BGP полагается на постоянную сессию TCP между конечными точками BGP. Сброс подключения может привести к среднесрочной неготовности, из-за потребности восстановить таблицы маршрутизации и к колебанию маршрута. Колебания маршрута могут привести к сбросу маршрута (подавлению), если колебания маршрута происходят часто в короткий интервал времени. Полное воздействие на BGP, скорей всего, будет соразмерно основано на вероятности успешного нападения. Если TCP MD5 Signature Option и меры anti-spoofing используется, тогда воздействие будет низким, поскольку эти меры успешно смягчат уязвимость.
Существует потенциальное воздействие на другие протоколы прикладных программ, типа DNS (Доменная система имен) и SSL (Secure Sockets Layer) в случае перемещения зон и сделок э-коммерции соответственно, но продолжительность сессий относительно коротка, и сессии могут быть перезапущены без особых проблем с недоступностью. В случае с SSL, может быть трудно предположить исходный IP адрес.
Инъекция данных может быть возможна. Однако это не демонстрировалось и кажется, будет проблематично.
Итого
Проблема, описанная в этой консультации - осуществимость сброса установленного подключения TCP, посредством посылки подходящих пакетов TCP с RST (Reset), или SYN (Synchronise) набором флажков.
Пакеты должны иметь IP адреса источника и адресата, которые соответствуют установленному подключению, также как исходящие и входящие порты TCP.
Факт то, что сессии TCP могут быть сброшены, при посылке подходящих RST и SYN пакетов - это особенность TCP согласно RFC 793, но reset атака возможна вообще, только потому, что исходный адрес IP и порт TCP могут быть подделанными или "обманными".
Хотя отказ в обслуживании, использующий обработанные пакеты TCP - известная слабость TCP, до недавнего времени полагалось, что успешная атака DoS не достижима практически. Причина для этого - то, что принимающее исполнение TCP проверяет порядковый номер RST или SYN пакета, который является 32-разрядным номером, давая вероятность 1/232 угадать порядковый номер правильно (предположение случайного распределения).
Открывшим осуществимость нападения RST был Пол А. Уотсон, который описывает свои исследование в документе "Slipping In The Window: TCP Reset Attacks", представленном на конференции CanSecWest 2004. Он заметил, что вероятность угадать приемлемый порядковый номер - намного выше, чем 1/232, потому что принимающая реализация TCP примет любой порядковый номер в определенном диапазоне (или "window" ) ожидаемого порядкового номера. Window делает атаки TCP реальными.
Любой протокол прикладной программы, который основывается на долгосрочном подключении TCP и для которого известны адреса IP и порты TCP источника и адресата, можно легко предположить, будет уязвим к, по крайней мере, атакам "отказа в обслуживании".
Детали
TCP - протокол транспортного уровня, разработан, чтобы обеспечить ориентированную на соединение надежную поставку пакетов IP. Делая это, TCP использует смесь флажков, указывающих состояние и порядковые номера, чтоб идентифицировать порядок, в котором пакеты должны быть повторно собраны.
TCP также обеспечивает номер, называемый "номером подтверждения" (acknowledgement number), который используется, чтобы указать порядковый номер следующего ожидаемого пакета. Пакеты повторно собираются принимающей реализацией TCP только, если их порядковые номера выпадают в пределах диапазона номера подтверждения (называемого "Window" ). Номер подтверждения не используется в RST пакете, потому что сброс не ожидает, что пакет вернется. (Чтобы быть полностью точным, последнее заверение истинно также для RST пакета без набора флажков ACK, который указывает, что порт TCP закрыт, RST/ACK используется, чтобы закончить активное подключение в случае ошибки. В RST/ACK пакете номер подтверждения включен в пакет, хотя это не проверяется принимающей реализацией TCP.)
RFC 793, p36, говорит следующее:
" Во всех состояниях кроме SYN-SENT, весь обновляемые (RST) сегменты, подтверждены проверкой их SEQ-областей [порядковые номера]. Сброс имеет силу, если его порядковый номер находится в окне. В SYN-SENT состоянии (RST, полученный в ответ на начальный SYN), RST приемлем, если поле ACK подтверждает SYN. "
Сбросы должны быть обработаны немедленно. RFC 793, p25, сообщает " […] Даже, когда получающееся окно нулевое, TCP должна обработать поля RST И URG всех входящих сегментов. "
Также возможно выполнить, ту же самую атаку с SYN (synchronise) пакетами. Установленное подключение прервется, при послании RST, если получит дубликат SYN пакета с начальным порядковым номером в пределах окна TCP.
RFC 793, p31 сообщает:
" Принципиальная причина для тройного рукопожатия, состоит в том, чтобы помешать двойным инициациям подключения, вызывать неразбериху. Чтобы разобраться с этим, специальным контрольным сообщением и был изобретен reset. […], если TCP находится в одном из синхронизированных состояний (ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT), это прерывает подключение и информирует пользователя. "
Размеры окна TCP заключены в начальном рукопожатии с 3 путями, обычно устанавливают подключение TCP, с более высокими значениями, служащими для улучшения производительности при некоторых обстоятельствах. Выбранные продавцом значения по умолчанию также влияют на выбор. В любом случае, чем больший размер окна, тем больше - вероятность, что беспорядочно выбранный номер последовательности TCP будет лежать в пределах диапазона окна. Это - основа для атаки.
Подключение TCP определено 4-кортежной величиной IP адресов источника и адресата, и исходящим и принимающим портами. Атакующий, стремящийся прерывать существующее подключение TCP должен снабдить 4 величины правильно. Поскольку исходный порт изменяется, дополнительная работа возлагается на атакующего. Однако, исследование (упомянутое ниже) показало, что процесс исходного выбора порта на многих платформах включает предсказуемые элементы, так, что атака на практике - остается реальностью. Взвесив 'вероятные' значения исходящего порта тщательно, Атакующий может прерывать реализацию TCP, которая использует диапазон размеров окна.
Протоколы прикладного уровня, на которые критически отражается уязвимость, те, которые:
• Зависят от долгосрочных подключений TCP • Имеют известные или легко угадываемые конечные пункты адресов IP • Имеют простой, легко предполагаемый исходящий TCP порт
Как отмечено выше BGP использует, долгосрочные подключения TCP, и адрес IP и исходный порт (и порт адресата) иногда доступны с помощью BGP зеркал (мультиисточниковые, мультиадресатные инструментальные средства прослеживания маршрута) или записи ресурса DNS. Использование команд отслеживания маршрута “trace route ” может обеспечить информацией относительно IP адресов спариваемых точек. Таким образом, BGP, вероятно, критически подвержен уязвимости TCP.
Эти DoS атаки могут быть выполнены как одиночной машиной, так и множеством кооперирующих систем (формирование распределенных атак "отказа в обслуживании" ).
Также возможно произвести инъекцию пакетов, которые будут обработаны, если они находятся в окне. Трудность атаки с инъекцией данных состоит в том, что получающая реализация TCP повторно соберет полученные пакеты, согласно номеру последовательности, пропуская любые дубликаты.
Специфическая информация о производителях будет публиковаться, как только станет доступной и если будет получено разрешение производителя. Подписчикам советуется регулярно проверять следующий URL на изменения:
http://www.uniras.gov.uk/vuls/2004/236929/index.htm
[ Пожалуйста, обратите внимание, что об изменениях в этой консультации не будет уведомляться по электронной почте.]
Этой уязвимости было назначено название CVE, CAN-2004-0230.
Open Source Vulnerability Database ID номер для этой уязвимости - 4030.
Смягчение
Следующие шаги по смягчению подверженности, все еще в разработке и могут быть неполными. Клиенты должны сотрудничать с производителями для выработки наиболее соответствующего решения по рассматриваемому продукту.
В отсутствии внесения исправлений производителем в реализацию TCP, вот общие шаги по смягчению:
• Реализуйте защиту IP (IPSEC), которая зашифрует трафик на сетевом уровне, так информация TCP не будет видимой • Уменьшите размер окна TCP (хотя это может повлечь увеличение потери трафика и последующую перепередачу) • Не публикуйте информацию об исходящем порте TCP ...."
Дальнейшее описание смягчения воздействия уязвимости и решения на базе конкретных продуктов, мною опущенны, ввиду своей нецелесообразности в данной теме... |