Есть ли обходной путь для недостатка TCP в RFC 5961 Linux?

28

Недавно я читал об этой ошибке Linux TCP ( CVE-2016-5696 ), которая позволяет злоумышленнику разорвать или взломать соединение между двумя машинами под управлением Linux (например, веб-сервером и клиентом). Я понимаю, что проблема была введена еще в 2012 году в ядре Linux версии 3.6 и затрагивает все более новые версии.

В настоящее время исправление для этого не было выпущено (на момент написания этой статьи), но есть ли обходные пути, так как это довольно серьезная ошибка?


источник
Ubuntu не выпустила исправление? В некоторых других дистрибутивах исправление было опубликовано до того, как была опубликована ошибка
Майкл Хэмптон
@MichaelHampton: Насколько я понимаю, в канале -proposed доступно исправление, однако стабильный релиз еще не сделан.
Я думаю, что они планируют выпустить исправление 27-го.
@MichaelHampton: я обновил свой ответ соответствующей информацией.

Ответы:

29

Примечание. Раздел « Обходной путь » был сохранен по историческим причинам, однако, пожалуйста, перейдите к разделу « Исправление » ниже.

Временное решение:

Как указано здесь :

Хорошие новости - и, да, есть хорошие новости - это легко исправить. Во-первых, сам Linux исправлен, чтобы остановить вектор атаки на своем пути. Затем вы просто повышаете «предел ACK для вызова» до чрезвычайно большого значения, чтобы практически исключить возможность использования проблемы побочного канала, которая позволила атаке работать.

Поскольку эта проблема затрагивает как клиента, так и сервер или фактически любые две машины Linux, взаимодействующие по сети, важно реализовать обходной путь для обеих систем и исправления сразу после его выпуска.

Для реализации обходного пути сделайте следующее:

  1. Откройте файл конфигурации с помощью: sudoedit /etc/sysctl.conf
  2. Вставьте строку net.ipv4.tcp_challenge_ack_limit = 999999999в файл и сохраните ее
  3. Запустите sudo sysctl -pдля обновления конфигурации

Вы также можете выполнить операцию прямо из терминала:

sudo bash -c 'echo "net.ipv4.tcp_challenge_ack_limit = 999999999" >>/etc/sysctl.conf'

Или:

echo 'net.ipv4.tcp_challenge_ack_limit = 999999999' | sudo tee -a /etc/sysctl.conf

Затем запустите:

sudo sysctl -p

Fix:

Как указано здесь :

net/ipv4/tcp_input.c in the Linux kernel before 4.7 does not properly
determine the rate of challenge ACK segments, which makes it easier for
man-in-the-middle attackers to hijack TCP sessions via a blind in-window
attack.
...
sbeattie> fix is going to land in Ubuntu kernels in this SRU cycle,  
with a likely release date of Aug 27. Earlier access to the kernels  
with the fix will be available from the -proposed pocket, though they 
come with the risk of being less tested.

И исправление было выпущено:

linux (4.4.0-36.55) xenial; urgency=low

  [ Stefan Bader ]

  * Release Tracking Bug
    - LP: #1612305

  * I2C touchpad does not work on AMD platform (LP: #1612006)
    - SAUCE: pinctrl/amd: Remove the default de-bounce time

  * CVE-2016-5696
    - tcp: make challenge acks less predictable

 -- Stefan Bader <stefan.bader@canonical.com>  Thu, 11 Aug 2016 17:34:14 +0200

Бег:

sudo apt-get update
sudo apt-get dist-upgrade

Чтобы убедиться, что у вас последняя версия. Или используйте Software Updater, если вы предпочитаете обновлять через графический интерфейс.

Вы можете проверить, какая версия вы используете, а какая доступна с:

apt-cache policy linux-image-generic

источник
Быстрое (но не постоянное) исправление:echo 999999999 > /proc/sys/net/ipv4/tcp_challenge_ack_limit
Бен Фойгт