
# 修复Linux内核SACK漏洞公告
#### 漏洞详情
2019年6月18日，Redhat发布安全公告，Linux内核处理器TCP SACK模块存在3个安全漏洞(CVE-2019-11477、CVE-2019-11478、CVE-2019-11479)，这些漏洞与最大分段大小（MSS）和TCP选择性确认（SACK）功能相关，攻击者可远程发送特殊构造的攻击包造成拒绝服务攻击，导致服务器不可用或崩溃。
华为云CCE团队已经紧急修复Linux内核SACK漏洞，并已发布解决方案。
参考链接：
<https://www.suse.com/support/kb/doc/?id=7023928>
<https://access.redhat.com/security/vulnerabilities/tcpsack>
<https://www.debian.org/lts/security/2019/dla-1823>
<https://wiki.ubuntu.com/SecurityTeam/KnowledgeBase/SACKPanic?>
<https://lists.centos.org/pipermail/centos-announce/2019-June/023332.html>
<https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-001.md>
表1漏洞信息 
| 漏洞类型   | CVE-ID                                                                          | 漏洞级别 | 披露/发现时间    | 华为云修复时间    |
|:---|:---|:---|:---|:---|
| 输入验证错误 | [CVE-2019-11477](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-11477) | 高    | 2019-06-17 | 2019-07-06 |
| 资源管理错误 | [CVE-2019-11478](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-11478) | 高    | 2019-06-17 | 2019-07-06 |
| 资源管理错误 | [CVE-2019-11479](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-11479) | 高    | 2019-06-17 | 2019-07-06 |
   
#### 漏洞影响
影响Linux内核2.6.29及以上版本。
#### 漏洞修复方案
此问题已在稳定内核版本4.4.182、4.9.182、4.14.127、4.19.52、5.1.11中修复，用户通过滚动升级节点即可。
#### 附：TCP SACK介绍
TCP是面向连接的协议。当双方希望通过TCP连接进行通信时，他们通过TCP握手交换某些信息建立连接，例如发起一个TCP请求，通过SYN发送初始序列ID，确认ID，连接使用的最大数据包段大小（MSS），认证信息和处理选择性确认（SACK）等。整体TCP连接通过我们熟知的三次握手最终建立。
TCP通过一个数据段单元发送和接收用户数据包。 TCP数据段由TCP头，选项和用户数据组成。每个TCP段都有序列号（SEQ）和确认号（ACK）。
接收方通过SEQ号和ACK号来跟踪成功接收了哪些段。ACK号表示下一个预期接收的段。
**示例：**
![](https://support.huaweicloud.com/bulletin-cce/zh-cn_image_0000001622671069.png "点击放大")
上图中用户A通过13个100字节的段发送1k字节的数据，每个段具有20字节的TCP头，总计是13个段。在接收端，用户B接收了段1,2,4,6,8-13，而段3,5和7丢失，B没有接收到。
通过使用ACK号，用户B告诉A，他需要段3，用户A收到B接收到2，而没有收到3，A将重新发送全部段，尽管B已经收到了4,6和8-13段。所以导致大量重复传输，性能低下。
