CVE-2019-11477: Integer overflow in TCP_SKB_CB(skb)->tcp_gso_segs
An integer overflow flaw was found in the way the Linux kernel's networking subsystem processed TCP Selective Acknowledgment (SACK) segments. While processing SACK segments, the Linux kernel's socket buffer (SKB) data structure becomes fragmented. Each fragment is about TCP maximum segment size (MSS) bytes. To efficiently process SACK blocks, the Linux kernel merges multiple fragmented SKBs into one, potentially overflowing the variable holding the number of segments. A remote attacker could use this flaw to crash the Linux kernel by sending a crafted sequence of SACK segments on a TCP connection with small value of TCP MSS, resulting in a denial of service (DoS).
Other sources
An integer overflow issue was found in the way Linux kernel processes TCP Selective Acknowledgement(SACK) segments. While processing SACK segments, Linux kernel's socket buffer(SBK) data structure becomes fragmented. Each fragment is about TCP MSS bytes. To efficiently process SACK blocks, Linux combines multiple fragmented SKB into one. This merging of SKB results in the said integer overflow issue, as more number of segments exceed the 16bit width of 'TCPSKBCB(skb)->tcpgsosegs' parameter in tcpshiftedskb() routine.
A remote attacker could use this flaw to crash the Linux kernel by sending a crafted sequence of SACK segments on a TCP connection with minimum value of TCP MSS, resulting in DoS.
Upstream patch: --------------- -> https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=3b4929f65b0d8249f19a50245cd88ed1a2f78cff
Reference: ---------- -> https://www.ietf.org/rfc/rfc2018.txt -> http://vger.kernel.org/~davem/skbdata.html -> https://git.kernel.org/linus/832d11c5cd076abc0aa1eaf7be96c81d1a59ce41
— Red Hat
Jonathan Looney discovered that the TCPSKBCB(skb)->tcpgsosegs value was subject to an integer overflow in the Linux kernel when handling TCP Selective Acknowledgments (SACKs). A remote attacker could use this to cause a denial of service. This has been fixed in stable kernel releases 4.4.182, 4.9.182, 4.14.127, 4.19.52, 5.1.11, and is fixed in commit 3b4929f65b0d8249f19a50245cd88ed1a2f78cff.
Affected Software
Remediation
Information
Event History
Parent advisories
This vulnerability appears in the following advisories.
Frequently Asked Questions
What is the severity of CVE-2019-11477?
CVE-2019-11477 has a high severity rating due to the potential for an integer overflow that could lead to denial of service or code execution.
How do I fix CVE-2019-11477?
To fix CVE-2019-11477, update your Linux kernel to the fixed versions provided by your distribution, such as those specified in Red Hat and Debian advisories.
Which versions of the Linux kernel are affected by CVE-2019-11477?
CVE-2019-11477 affects several Linux kernel versions, specifically versions prior to the vendor-specific patched releases.
What exploits are associated with CVE-2019-11477?
Exploits associated with CVE-2019-11477 may allow attackers to cause denial of service or potentially execute arbitrary code on affected systems.
Who is impacted by CVE-2019-11477?
Users running affected versions of the Linux kernel, especially on servers and devices utilizing TCP, should be aware of the vulnerability and take action to secure their systems.