CVE Vulnerabilities

CVE-2020-1680

Incorrect Calculation of Buffer Size

Published: Oct 16, 2020 | Modified: Feb 05, 2021
CVSS 3.x
N/A
Source:
NVD
CVSS 2.x
5 MEDIUM
AV:N/AC:L/Au:N/C:N/I:N/A:P
RedHat/V2
RedHat/V3
Ubuntu

On Juniper Networks MX Series with MS-MIC or MS-MPC card configured with NAT64 configuration, receipt of a malformed IPv6 packet may crash the MS-PIC component on MS-MIC or MS-MPC. This issue occurs when a multiservice card is translating the malformed IPv6 packet to IPv4 packet. An unauthenticated attacker can continuously send crafted IPv6 packets through the device causing repetitive MS-PIC process crashes, resulting in an extended Denial of Service condition. This issue affects Juniper Networks Junos OS on MX Series: 15.1 versions prior to 15.1R7-S7; 15.1X53 versions prior to 15.1X53-D593; 16.1 versions prior to 16.1R7-S8; 17.2 versions prior to 17.2R3-S4; 17.3 versions prior to 17.3R3-S6; 17.4 versions prior to 17.4R2-S11, 17.4R3; 18.1 versions prior to 18.1R3-S11; 18.2 versions prior to 18.2R3-S6; 18.2X75 versions prior to 18.2X75-D41, 18.2X75-D430, 18.2X75-D53, 18.2X75-D65; 18.3 versions prior to 18.3R2-S4, 18.3R3; 18.4 versions prior to 18.4R2-S5, 18.4R3; 19.1 versions prior to 19.1R2; 19.2 versions prior to 19.2R1-S5, 19.2R2; 19.3 versions prior to 19.3R2.

Weakness

The product does not correctly calculate the size to be used when allocating a buffer, which could lead to a buffer overflow.

Affected Software

Name Vendor Start Version End Version
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1 15.1
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 15.1x53 15.1x53
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 16.1 16.1
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.2 17.2
Junos Juniper 17.3 17.3
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 17.4 17.4
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.1 18.1
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2 18.2
Junos Juniper 18.2x75 18.2x75
Junos Juniper 18.2x75 18.2x75
Junos Juniper 18.2x75 18.2x75
Junos Juniper 18.2x75 18.2x75
Junos Juniper 18.2x75 18.2x75
Junos Juniper 18.2x75 18.2x75
Junos Juniper 18.2x75 18.2x75
Junos Juniper 18.3 18.3
Junos Juniper 18.3 18.3
Junos Juniper 18.3 18.3
Junos Juniper 18.3 18.3
Junos Juniper 18.3 18.3
Junos Juniper 18.3 18.3
Junos Juniper 18.3 18.3
Junos Juniper 18.3 18.3
Junos Juniper 18.3 18.3
Junos Juniper 18.3 18.3
Junos Juniper 18.3 18.3
Junos Juniper 18.4 18.4
Junos Juniper 18.4 18.4
Junos Juniper 18.4 18.4
Junos Juniper 18.4 18.4
Junos Juniper 18.4 18.4
Junos Juniper 18.4 18.4
Junos Juniper 18.4 18.4
Junos Juniper 18.4 18.4
Junos Juniper 18.4 18.4
Junos Juniper 18.4 18.4
Junos Juniper 18.4 18.4
Junos Juniper 19.1 19.1
Junos Juniper 19.1 19.1
Junos Juniper 19.1 19.1
Junos Juniper 19.1 19.1
Junos Juniper 19.1 19.1
Junos Juniper 19.1 19.1
Junos Juniper 19.2 19.2
Junos Juniper 19.2 19.2
Junos Juniper 19.2 19.2
Junos Juniper 19.2 19.2
Junos Juniper 19.2 19.2
Junos Juniper 19.2 19.2
Junos Juniper 19.3 19.3
Junos Juniper 19.3 19.3
Junos Juniper 19.3 19.3

Potential Mitigations

  • Understand the programming language’s underlying representation and how it interacts with numeric calculation (CWE-681). Pay close attention to byte size discrepancies, precision, signed/unsigned distinctions, truncation, conversion and casting between types, “not-a-number” calculations, and how the language handles numbers that are too large or too small for its underlying representation. [REF-7]
  • Also be careful to account for 32-bit, 64-bit, and other potential differences that may affect the numeric representation.
  • Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid.
  • Use libraries or frameworks that make it easier to handle numbers without unexpected consequences, or buffer allocation routines that automatically track buffer size.
  • Examples include safe integer handling packages such as SafeInt (C++) or IntegerLib (C or C++). [REF-106]
  • Use automatic buffer overflow detection mechanisms that are offered by certain compilers or compiler extensions. Examples include: the Microsoft Visual Studio /GS flag, Fedora/Red Hat FORTIFY_SOURCE GCC flag, StackGuard, and ProPolice, which provide various mechanisms including canary-based detection and range/index checking.
  • D3-SFCV (Stack Frame Canary Validation) from D3FEND [REF-1334] discusses canary-based detection in detail.
  • Run or compile the software using features or extensions that randomly arrange the positions of a program’s executable and libraries in memory. Because this makes the addresses unpredictable, it can prevent an attacker from reliably jumping to exploitable code.
  • Examples include Address Space Layout Randomization (ASLR) [REF-58] [REF-60] and Position-Independent Executables (PIE) [REF-64]. Imported modules may be similarly realigned if their default memory addresses conflict with other modules, in a process known as “rebasing” (for Windows) and “prelinking” (for Linux) [REF-1332] using randomly generated addresses. ASLR for libraries cannot be used in conjunction with prelink since it would require relocating the libraries at run-time, defeating the whole purpose of prelinking.
  • For more information on these techniques see D3-SAOR (Segment Address Offset Randomization) from D3FEND [REF-1335].
  • Use a CPU and operating system that offers Data Execution Protection (using hardware NX or XD bits) or the equivalent techniques that simulate this feature in software, such as PaX [REF-60] [REF-61]. These techniques ensure that any instruction executed is exclusively at a memory address that is part of the code segment.
  • For more information on these techniques see D3-PSEP (Process Segment Execution Prevention) from D3FEND [REF-1336].
  • Run the code in a “jail” or similar sandbox environment that enforces strict boundaries between the process and the operating system. This may effectively restrict which files can be accessed in a particular directory or which commands can be executed by the software.
  • OS-level examples include the Unix chroot jail, AppArmor, and SELinux. In general, managed code may provide some protection. For example, java.io.FilePermission in the Java SecurityManager allows the software to specify restrictions on file operations.
  • This may not be a feasible solution, and it only limits the impact to the operating system; the rest of the application may still be subject to compromise.
  • Be careful to avoid CWE-243 and other weaknesses related to jails.

References