Группа исследователей из Калифорнийского университета в Риверсайде и Научно-исследовательской лаборатории армии США обнаружила опасную уязвимость в имплементации Transmission Control Protocol (TCP) во всех системах Linux, выпущенных после 2012 года (Linux kernel 3.6 и выше). Проблема получила идентификатор CVE-2016-5696, она позволяет атакующему без труда внедряться в чужой трафик, если он не зашифрован, а также принудительно разрывать соединения HTTPS и Tor.

Корень проблемы кроется в RFC 5961 – стандарте, который был создан сравнительно недавно, в 2010 году, и должен был сделать TCP более устойчивым в случае спуфинговых атак. RFC 5961 почти не нашлось применения в Windows, macOS и FreeBSD, но в ядро Linux он был добавлен еще в 2012 году.

На USENIX Security Symposium исследователи продемонстрировали proof-of-concept эксплоит, который помогает определить, если два хоста сообщаются друг с другом посредством TCP, и совершить атаку.

tcp-flaw-in-linux-servers-allows-web-traffic-hijacking-507182-3

Когда пакеты с данными предаются от одного хоста к другому, их идентификация осуществляется посредством уникальной последовательности чисел. Так как возможных комбинаций насчитывается порядка 4 млрд, предсказать что ассоциируется с конкретным соединением, казалось бы, невозможно. Однако CVE-2016-5696 дает возможность вычислить эту уникальную последовательность примерно за 10 секунд. Для этого достаточно просто знать IP-адреса жертв, то есть обеих сторон, связывающихся друг с другом посредством TCP. В случае описанной исследователями атаки side channels, злоумышленнику даже не потребуется внедряться в соединение, как это происходит в случае с классической атаки man-in-the-middle. Ему достаточно знать IP-адреса обеих сторон и  направлять им правильные пакеты, чтобы скомпрометировать легитимный обмен. Эксплуатируя брешь, можно отслеживать активность пользователей, а также внедрять в незащищенное соединение практически любые посторонние данные.

«Как мы продемонстрировали, уникальным отличием данной атаки являются очень низкие требования, необходимые для ее реализации, — пишут исследователи. — По сути, атаку может осуществить кто угодно, главное, чтобы в сети можно было реализовать спуфинг IP-адресов. Единственное, что необходимо знать: пару IP-адресов (клиента жертвы и сервера), заполучить которые совсем нетрудно».

Вместе с подробным докладом «Off-Path TCP Exploits: Global Rate Limit Considered Dangerous» (PDF) исследователи также представили видео, демонстрирующее атаку в действии. В экспериментальных целях  исследователи внедряют фишинговую форму на сайт USA Today. Эксперты заявляют, что в среднем на всю атаку у них уходило 40-60 секунд, а процент успеха составлял 88-97%.

Также исследователи сообщают, что хотя HTTPS-соединения защищены от инъекций посторонних данных, с помощью CVE-2016-5696 можно спровоцировать обрыв защищенных соединений. Разрывать Secure Shell (SSH) соединения эксперты попробовали и для пользователей Tor.

«В сущности, мы убеждены, что DoS атака против Tor-соединений может пагубно сказаться как на доступности сервиса, так и на приватности, которую тот гарантирует своим пользователям», — пишут исследователи.

Tor устроен таким образом, что если соединение между двумя узлами сети обрывается (к примеру, между промежуточным узлом и выходным узлом), то в следующий раз промежуточный узел выберет другой выходной узел для установки соединения. Исследователи убеждены, что если производить обрывы связи намеренно, вынуждая жертву подключаться к новым и новым узлам сети, в конечном счете, ее можно вынудить подключиться к совершенно определенному выходному узлу, что действительно несет угрозу приватности и анонимности.

Исследователи провели собственное испытание: они проверили 40 узлов Tor в разных странах. 16 из них отразили атаки (очевидно, брандмауэр отфильтровал пакеты), но 88,8% поддались и разорвали соединение. В среднем на атаку в каждом случае было затрачено 51,1 секунды.

Защититься от таких атак и нейтрализовать CVE-2016-5696 пользователи и системные администраторы уже сейчас могут самостоятельно. Для этого нужно отредактировать /etc/sysctl.conf, добавив строку:

net.ipv4.tcp_challenge_ack_limit = 999999999

После останется только выполнить sysctl –p для обновления конфигурации.

Но нельзя сказать, что это полностью решает проблему, ведь на базе Linux работают миллионы веб-серверов, умных телевизоров, смартфонов и планшетов, под управлением Android и множество других решений и гаджетов. Хотя разработчики Linux устранили баг еще в июле 2016 года, с выходом ядра версии 4.7, авторы других дистрибутивов еще работают над проблемой. Как скоро можно ожидать появления патчей для всего многообразия продуктов, работающих с уязвимым ядром версии 3.6+, остается только догадываться. Как показывает практика, скорее всего, многие гаджеты и решения так и останутся без этого важного обновления.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии