是否有针对 RFC 5961 Linux TCP 缺陷的解决方法?

28 server security kernel networking client

我最近读到了这个Linux TCP 缺陷 ( CVE-2016-5696 ),它允许攻击者破坏或劫持运行 Linux 的两台机器(例如网络服务器和客户端)之间的连接。我知道这个问题是在 2012 年的 Linux 内核版本 3.6 中引入的,并且也会影响所有较新的版本。

目前尚未发布对此的修复程序(截至撰写本文时),但是否有任何解决方法,因为这是一个相当大的错误?

小智 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'
Run Code Online (Sandbox Code Playgroud)

或者:

echo 'net.ipv4.tcp_challenge_ack_limit = 999999999' | sudo tee -a /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)

然后运行:

sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)

使固定:

如前所述这里

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.
Run Code Online (Sandbox Code Playgroud)

现在已经发布了一个修复程序:

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
Run Code Online (Sandbox Code Playgroud)

跑:

sudo apt-get update
sudo apt-get dist-upgrade
Run Code Online (Sandbox Code Playgroud)

以确保您拥有最新版本。或者,如果您希望通过 GUI 进行更新,请使用软件更新程序。

您可以检查您正在运行的版本以及可用的版本:

apt-cache policy linux-image-generic
Run Code Online (Sandbox Code Playgroud)