Кратко
- RFC 793 принимала RST в синхронизированных состояниях, если его номер попадал в окно приёма; RFC 5961 оставила немедленный сброс только для точного совпадения с
RCV.NXT. - На RST внутри окна, но без точного совпадения, получатель отвечает challenge ACK и отбрасывает сегмент. Настоящий узел может подтвердить состояние, а слепой отправитель обычно не видит вопроса.
Уязвимость возникла потому, что один тест решал две разные задачи. Окно приёма должно показывать, могут ли байты относиться к потоку. Но по исходному правилу RFC 793 та же правдоподобность при установленном флаге RST разрешала удалить всё состояние соединения. Атакующему вне маршрута не требовалось видеть трафик: он мог перебирать номера, пока один не оказывался внутри окна.
RFC 5961, опубликованная в 2010 году, не добавила в TCP криптографию. Она ввела промежуточное решение. RST вне окна по-прежнему молча отбрасывается. RST с номером, точно равным следующему ожидаемому байту RCV.NXT, сбрасывает соединение. Если номер находится внутри окна, но не совпадает, получатель отправляет ACK с SEQ=SND.NXT и ACK=RCV.NXT, отбрасывает подозрительный сегмент и продолжает обработку последующего трафика.
Ответ называется challenge ACK, потому что превращает утверждение в вопрос о состоянии. Если удалённый узел действительно закрылся или перезапустился и больше не хранит прежний блок управления, полученный ACK может вызвать новый RST с номером, выведенным из подтверждения. Этот второй RST способен точно совпасть с ожиданием выжившей стороны. Слепой инъектор не наблюдает вызов и обычно не может превратить приблизительное попадание в точный ответ.
Историческая перемена заключается в разделении допустимости и полномочия. Номер внутри окна достаточно правдоподобен, чтобы получить ответ, но недостаточно доказателен для необратимого перехода. Между «игнорировать» и «уничтожить» появилось третье действие: проверить, временно сохранив состояние.
Тот же принцип RFC 5961 применяет к неожиданному SYN в синхронизированном состоянии. Получатель отправляет challenge ACK независимо от номера SYN и прекращает обработку сегмента. Поддельный SYN обычно вызывает лишь дополнительный ACK, который установленный узел воспринимает как дубликат. Действительно перезапущенный узел уже не имеет старого состояния и может ответить так, чтобы подтвердить завершение прежнего соединения.
У защиты есть чёткие границы. Она не подтверждает личность криптографически и не останавливает атакующего на маршруте, который видит текущие номера. RFC 5961 описывает и редкий угловой случай перезапуска с повторным использованием адреса, порта и случайным выбором особого начального номера. Механизм усложняет слепую атаку, но не превращает TCP в протокол аутентификации.
Нормативная сила мер различается. Защита RST и SYN рекомендована, а более узкая проверка ACK против внедрения данных остаётся необязательной. RFC 9293 — современная базовая спецификация TCP — сохраняет общий порядок обработки сброса и ссылается на RFC 5961 как на усиление надёжности. Исправление остаётся видимым слоем истории, а не стирает прежний контракт.
Первичные источники
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
