Уязвимость, позволяющая вклиниться в стороннее TCP-соединение
На конференции Usenix Security Symposium группа исследователей из Калифорнийского университета в Риверсайде и исследовательской лаборатории армии США обнародовали сведения о возможности совершения пассивных атак на TCP, позволяющих удаленно инициировать разрыв сетевого соединения или осуществить подстановку своих пакетов в TCP-поток.
В отличие от MITM-атак, новый метод не требует контроля за коммуникациями - для атаки достаточно знать IP-адрес сервера, IP-адрес сервера и сетевой порт сервера. В рамках доклада была продемонстрирована рабочий пример атаки, в результате которой в запрошенную одним из пользователей web-страницу с известного новостного сайта была осуществлена подстановка стороннего блока данных.
Суть проблемы в недоработке описанных в спецификации механизмов ограничения интенсивности обработки ACK-пакетов, что позволяет получить информацию о номере последовательности, идентифицирующей поток в TCP-соединении, и со стороны отправить подставные пакеты, которые будут обработаны как часть атакуемого TCP-соединения. В частности, атакующий может создать "шумовую завесу" для обхода защиты от наводнения ACK-пакетами и применить типовые методы подбора номера последовательности.
Представленный метод не специфичен для конкретных TCP-стеков и проявляется при наличии расширений ограничения интенсивности обработки пакетов (RFC 5961), реализованных для борьбы с подбором номера последовательности TCP. Проблема уже подтверждена в Linux (CVE-2016-5696) и проявляется c 2012 года в выпусках ядра Linux c 3.6 по 4.7. В качестве обходного метода защиты рекомендуется увеличить лимит на число одновременно обрабатываемых ACK-пакетов, установив переменную /proc/sys/net/ipv4/tcp_challenge_ack_limit в значение 1000 вместо ранее принятого по умолчанию 100.