Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #67, ИЮЛЬ 2004 г.

Интернет под угрозой

Докучаев Дмитрий aka Forb

Xakep, номер #067, стр. 067-058-1

(forb@real.xakep.ru)

Критическая ошибка протокола TCP

Как тебе известно, интернет - не что иное, как объединение множества локальных сетей в одно целое. Обрыв некоторых звеньев может стать фатальным для такой глобальной цепи, парализовав ее важные узлы. До недавнего времени считалось, что убить интернет может только крупномасштабная DDoS-атака. Теперь все становится проще - 20 апреля стала известна серьезная ошибка в протоколе TCP.

Ошибка в TCP - довольно редкое явление. TCP - фундаментальный протокол, который не так-то просто (а в некоторых случаях даже невозможно) оперативно запатчить. Этот протокол уже давно рассматривался с разных сторон. В инете даже публиковалась статья о теоретически возможном перехвате защищенного TCP-соединения. Да, действительно, при определенном раскладе утечка данных возможна. Однако новая уязвимость позволяет сорвать уже установленное TCP-соединение всего за несколько минут.

Изучим первоисточник

Если верить прессе, первым описываемый баг нашел специалист по безопасности Пол Уотсон. Именно он в результате длительного исследования протокола обнаружил ошибку и зафиксировал ее в отчете по безопасности. Как утверждает Уотсон, уязвимость довольно серьезная, а в некоторых случаях даже критическая. Любой хакер может при желании серьезно нарушить работу интернет-маршрутизаторов, выбирающих оптимальный путь передачи данных между серверами. Способ обмена информацией о маршрутах (протокол Border Gateway Protocol) опирается на длительные сеансы, и нарушение этих соединений может вызвать "среднесрочную недоступность", что на время парализует работу отдельных сегментов Сети. Также возможен подрыв защищенных соединений в некоторых интернет-системах (мишенью взломщика может стать, например, SSL-соединение между браузером клиента и сервером электронного магазина).

Принцип работы TCP

Если ты не знаешь теории протокола TCP, то информация об ошибке вряд ли будет тобой правильно воспринята. Поэтому я счел необходимым привести в этой статье основные сведения о TCP.

Итак, протокол TCP, работающий на транспортном уровне модели OSI, является самым надежным на сегодняшний день. Говоря о надежности, я сравниваю TCP с UDP: как известно, UDP формирует обычные датаграммы, которые доставляются в сокет получателя. При этом посылающая станция не гарантирует доставку информации. С TCP все иначе, здесь реализована схема, когда каждый потерянный пакет пересылается до тех пор, пока не будет восстановлена целостность передаваемых данных.

Глядя на заголовок TCP-пакета, можно сделать некоторые выводы. Во-первых, поле, отведенное для Sequence Number (номера последовательности), гарантирует доставку пакетов, а также отбраковывает данные, принадлежащие другой сессии. В самом начале соединения отправитель и получатель обмениваются начальными номерами последовательности. Затем, при передаче данных, каждый пакет в заголовке имеет SN, равный предыдущему +1. Если по какой-то причине пакет был утерян, по значению SN определяются потерянные данные, после чего получатель требует повторить их отправку.

Содержание  Вперед на стр. 067-058-2
ttfb: 3.6618709564209 ms