На конференции Usenix Security Symposium группа исследователей из Калифорнийского университета в Риверсайде и исследовательской лаборатории армии США обнародовали сведения о возможности совершения пассивных атак на TCP, позволяющих удалённо инициировать разрыв сетевого соединения или осуществить подстановку своих пакетов в TCP-поток к клиенту или серверу.

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

Суть проблемы в недоработке механизмов ограничения интенсивности обработки ACK-пакетов, описанных в спецификации RFC 5961, что позволяет вычислить информацию о номере последовательности, идентифицирующей поток в TCP-соединении, и со стороны отправить подставные пакеты, которые будут обработаны как часть атакуемого TCP-соединения. Представленный метод не специфичен для конкретных TCP-стеков и проявляется при наличии расширений ограничения интенсивности обработки пакетов (RFC 5961), реализованных для борьбы с подбором номера последовательности TCP.

Суть атаки в наводнении хоста запросами для срабатывания ограничения в обработчике ACK-пакетов, который манипулирует общим для всей системы счётчиком, параметры которого можно получить меняя характер нагрузки. Атакующий может создать "шумовую завесу" для определения значения общего счётчика ограничения интенсивности ACK-ответов, после чего на основании оценки изменения числа отправленных пакетов, укладывающихся в лимит, определить номер клиентского порта и осуществить подбор номера последовательности для конкретного TCP-соединения (при совпадении счётчик лимита ACK уменьшится при неизменном потоке). Метод существенно упрощает подбор, позволяя осуществить его менее чем за минуту. В зависимости от условий успешность атаки составляет от 88 до 97 процентов.

Проблема уже подтверждена в Linux (CVE-2016-5696) и проявляется c 2012 года в выпусках ядра Linux c 3.6 по 4.7. В качестве обходного метода защиты рекомендуется увеличить лимит на число одновременно обрабатываемых ACK-пакетов, установив переменную /proc/sys/net/ipv4/tcp_challenge_ack_limit в очень большое значение. Для новых ядер значение по умолчанию увеличено со 100 до 1000 и добавлена дополнительная рандомизация для снижения предсказуемости параметров работы системы ограничения ACK-пакетов.

Источник: http://www.opennet.ru/opennews/art.shtml?num=44945