// For flags

CVE-2017-1000112

Linux Kernel - UDP Fragmentation Offset 'UFO' Privilege Escalation

Severity Score

7.0
*CVSS v3.1

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

7
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

-
*SSVC
Descriptions

Linux kernel: Exploitable memory corruption due to UFO to non-UFO path switch. When building a UFO packet with MSG_MORE __ip_append_data() calls ip_ufo_append_data() to append. However in between two send() calls, the append path can be switched from UFO to non-UFO one, which leads to a memory corruption. In case UFO packet lengths exceeds MTU, copy = maxfraglen - skb->len becomes negative on the non-UFO path and the branch to allocate new skb is taken. This triggers fragmentation and computation of fraggap = skb_prev->len - maxfraglen. Fraggap can exceed MTU, causing copy = datalen - transhdrlen - fraggap to become negative. Subsequently skb_copy_and_csum_bits() writes out-of-bounds. A similar issue is present in IPv6 code. The bug was introduced in e89e9cf539a2 ("[IPv4/IPv6]: UFO Scatter-gather approach") on Oct 18 2005.

Linux kernel: Existe una corrupción de memoria explotable debida al cambio de ruta de UFO a no UFO. Al crear un paquete UFO con MSG_MORE, __ip_append_data() llama a ip_ufo_append_data() para que se anexe. Sin embargo, entre dos llamadas send(), la ruta anexa puede cambiarse de UFO a no UFO, lo que lleva a una corrupción de memoria. Si la longitud del paquete UFO sobrepasa el MTU, copy = maxfraglen - skb->len se convierte en negativo en la ruta no UFO y se toma una rama para asignar un nuevo skb. Esto desencadena la fragmentación y el cálculo de fraggap = skb_prev->len - maxfraglen. fraggap puede exceder el MTU, lo que provoca que copy = datalen - transhdrlen - fraggap se vuelva negativo. En consecuencia, skb_copy_and_csum_bits() escribe fuera de límites. Existe un problema similar en el código IPv6. Este error fue introducido en e89e9cf539a2 ("[IPv4/IPv6]: UFO Scatter-gather approach") el 18 de octubre de 2005.

An exploitable memory corruption flaw was found in the Linux kernel. The append path can be erroneously switched from UFO to non-UFO in ip_ufo_append_data() when building an UFO packet with MSG_MORE option. If unprivileged user namespaces are available, this flaw can be exploited to gain root privileges.

An update that solves four vulnerabilities and has one errata is now available. This update for the Linux Kernel 3.12.74-60_64_60 fixes several issues. The following security bugs were fixed. Security/keys/keyctl.c in the Linux kernel did not consider the case of a NULL payload in conjunction with a nonzero length value, which allowed local users to cause a denial of service (NULL pointer dereference and OOPS) via a crafted add_key or keyctl system call. Updated patch for this issue to be in sync with the other livepatches. Description of the issue: Prevent race condition in net-packet code that could have been exploited by unprivileged users to gain root access. The __ip6_append_data function in net/ipv6/ip6_output.c was too late in checking whether an overwrite of an skb data structure may occur, which allowed local users to cause a denial of service via crafted system calls. The inet_csk_clone_lock function in net/ipv4/inet_connection_sock.c allowed attackers to cause a denial of service or possibly have unspecified other impact by leveraging use of the accept system call.

*Credits: N/A
CVSS Scores
Attack Vector
Local
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High
Attack Vector
Local
Attack Complexity
Medium
Authentication
None
Confidentiality
Complete
Integrity
Complete
Availability
Complete
* Common Vulnerability Scoring System
SSVC
  • Decision:-
Exploitation
-
Automatable
-
Tech. Impact
-
* Organization's Worst-case Scenario
Timeline
  • 2017-08-10 CVE Published
  • 2017-08-13 First Exploit
  • 2017-10-03 CVE Reserved
  • 2024-08-05 CVE Updated
  • 2025-07-01 EPSS Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
CWE
  • CWE-122: Heap-based Buffer Overflow
  • CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
CAPEC
Affected Vendors, Products, and Versions
Vendor Product Version Other Status
Vendor Product Version Other Status <-- --> Vendor Product Version Other Status
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 2.6.15 < 3.10.108
Search vendor "Linux" for product "Linux Kernel" and version " >= 2.6.15 < 3.10.108"
-
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 3.11 < 3.16.47
Search vendor "Linux" for product "Linux Kernel" and version " >= 3.11 < 3.16.47"
-
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 3.17 < 3.18.65
Search vendor "Linux" for product "Linux Kernel" and version " >= 3.17 < 3.18.65"
-
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 3.19 < 4.4.82
Search vendor "Linux" for product "Linux Kernel" and version " >= 3.19 < 4.4.82"
-
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 4.5 < 4.9.43
Search vendor "Linux" for product "Linux Kernel" and version " >= 4.5 < 4.9.43"
-
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 4.10 < 4.12.7
Search vendor "Linux" for product "Linux Kernel" and version " >= 4.10 < 4.12.7"
-
Affected