CVE Vulnerabilities

CVE-2020-13844

Observable Discrepancy

Published: Jun 08, 2020 | Modified: Apr 28, 2022
CVSS 3.x
5.5
MEDIUM
Source:
NVD
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
CVSS 2.x
2.1 LOW
AV:L/AC:L/Au:N/C:P/I:N/A:N
RedHat/V2
RedHat/V3
5.5 MODERATE
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Ubuntu
MEDIUM

Arm Armv8-A core implementations utilizing speculative execution past unconditional changes in control flow may allow unauthorized disclosure of information to an attacker with local user access via a side-channel analysis, aka straight-line speculation.

Weakness

The product behaves differently or sends different responses under different circumstances in a way that is observable to an unauthorized actor, which exposes security-relevant information about the state of the product, such as whether a particular operation was successful or not.

Affected Software

Name Vendor Start Version End Version
Cortex-a32_firmware Arm - (including) - (including)
Gcc-10 Ubuntu eoan *
Gcc-10 Ubuntu focal *
Gcc-10 Ubuntu upstream *
Gcc-3.3 Ubuntu bionic *
Gcc-3.3 Ubuntu eoan *
Gcc-3.3 Ubuntu esm-infra-legacy/trusty *
Gcc-3.3 Ubuntu groovy *
Gcc-3.3 Ubuntu hirsute *
Gcc-3.3 Ubuntu impish *
Gcc-3.3 Ubuntu kinetic *
Gcc-3.3 Ubuntu lunar *
Gcc-3.3 Ubuntu mantic *
Gcc-3.3 Ubuntu trusty *
Gcc-3.3 Ubuntu trusty/esm *
Gcc-3.3 Ubuntu xenial *
Gcc-4.4 Ubuntu trusty *
Gcc-4.6 Ubuntu precise/esm *
Gcc-4.6 Ubuntu trusty *
Gcc-4.7 Ubuntu esm-infra-legacy/trusty *
Gcc-4.7 Ubuntu trusty *
Gcc-4.7 Ubuntu trusty/esm *
Gcc-4.7 Ubuntu xenial *
Gcc-4.7-armel-cross Ubuntu trusty *
Gcc-4.7-armel-cross Ubuntu xenial *
Gcc-4.7-armhf-cross Ubuntu trusty *
Gcc-4.7-armhf-cross Ubuntu xenial *
Gcc-4.8 Ubuntu bionic *
Gcc-4.8 Ubuntu trusty *
Gcc-4.8 Ubuntu xenial *
Gcc-4.8-arm64-cross Ubuntu trusty *
Gcc-4.8-arm64-cross Ubuntu xenial *
Gcc-4.8-armhf-cross Ubuntu trusty *
Gcc-4.8-armhf-cross Ubuntu xenial *
Gcc-4.8-powerpc-cross Ubuntu trusty *
Gcc-4.8-powerpc-cross Ubuntu xenial *
Gcc-4.8-ppc64el-cross Ubuntu trusty *
Gcc-4.8-ppc64el-cross Ubuntu xenial *
Gcc-4.9 Ubuntu xenial *
Gcc-5 Ubuntu xenial *
Gcc-5-cross Ubuntu bionic *
Gcc-5-cross Ubuntu xenial *
Gcc-6 Ubuntu bionic *
Gcc-6-cross Ubuntu bionic *
Gcc-6-cross-ports Ubuntu bionic *
Gcc-7 Ubuntu bionic *
Gcc-7 Ubuntu eoan *
Gcc-7 Ubuntu groovy *
Gcc-7 Ubuntu hirsute *
Gcc-7-cross Ubuntu bionic *
Gcc-7-cross-ports Ubuntu bionic *
Gcc-8 Ubuntu bionic *
Gcc-8 Ubuntu eoan *
Gcc-8 Ubuntu groovy *
Gcc-8 Ubuntu hirsute *
Gcc-8 Ubuntu impish *
Gcc-8-cross Ubuntu bionic *
Gcc-8-cross Ubuntu eoan *
Gcc-8-cross Ubuntu groovy *
Gcc-8-cross Ubuntu hirsute *
Gcc-8-cross-ports Ubuntu bionic *
Gcc-8-cross-ports Ubuntu eoan *
Gcc-8-cross-ports Ubuntu groovy *
Gcc-8-cross-ports Ubuntu hirsute *
Gcc-9 Ubuntu eoan *
Gcc-9 Ubuntu focal *
Gcc-9 Ubuntu groovy *
Gcc-9 Ubuntu hirsute *
Gcc-9 Ubuntu impish *
Gcc-9 Ubuntu upstream *
Gcc-9-cross Ubuntu eoan *
Gcc-9-cross Ubuntu focal *
Gcc-9-cross Ubuntu groovy *
Gcc-9-cross Ubuntu hirsute *
Gcc-9-cross Ubuntu impish *
Gcc-9-cross Ubuntu kinetic *
Gcc-9-cross Ubuntu lunar *
Gcc-9-cross Ubuntu mantic *
Gcc-9-cross-ports Ubuntu eoan *
Gcc-9-cross-ports Ubuntu groovy *
Gcc-9-cross-ports Ubuntu hirsute *
Gcc-9-cross-ports Ubuntu impish *
Gcc-9-cross-ports Ubuntu kinetic *
Gcc-9-cross-ports Ubuntu lunar *
Gcc-9-cross-ports Ubuntu mantic *
Gcc-arm-linux-androideabi Ubuntu trusty *
Gcc-arm-linux-androideabi Ubuntu xenial *
Gcc-arm-none-eabi Ubuntu bionic *
Gcc-arm-none-eabi Ubuntu eoan *
Gcc-arm-none-eabi Ubuntu groovy *
Gcc-arm-none-eabi Ubuntu hirsute *
Gcc-arm-none-eabi Ubuntu impish *
Gcc-arm-none-eabi Ubuntu kinetic *
Gcc-arm-none-eabi Ubuntu lunar *
Gcc-arm-none-eabi Ubuntu mantic *
Gcc-arm-none-eabi Ubuntu trusty *
Gcc-arm-none-eabi Ubuntu xenial *
Gcc-avr Ubuntu bionic *
Gcc-avr Ubuntu eoan *
Gcc-avr Ubuntu groovy *
Gcc-avr Ubuntu hirsute *
Gcc-avr Ubuntu impish *
Gcc-avr Ubuntu kinetic *
Gcc-avr Ubuntu lunar *
Gcc-avr Ubuntu mantic *
Gcc-avr Ubuntu trusty *
Gcc-avr Ubuntu xenial *
Gcc-defaults Ubuntu eoan *
Gcc-defaults Ubuntu groovy *
Gcc-defaults Ubuntu hirsute *
Gcc-defaults Ubuntu impish *
Gcc-defaults Ubuntu kinetic *
Gcc-defaults Ubuntu lunar *
Gcc-defaults Ubuntu mantic *
Gcc-defaults Ubuntu precise/esm *
Gcc-defaults Ubuntu trusty *
Gcc-defaults Ubuntu xenial *
Gcc-defaults-arm64-cross Ubuntu trusty *
Gcc-defaults-armel-cross Ubuntu trusty *
Gcc-defaults-armhf-cross Ubuntu trusty *
Gcc-defaults-powerpc-cross Ubuntu trusty *
Gcc-defaults-ppc64el-cross Ubuntu trusty *
Gcc-h8300-hms Ubuntu bionic *
Gcc-h8300-hms Ubuntu eoan *
Gcc-h8300-hms Ubuntu groovy *
Gcc-h8300-hms Ubuntu hirsute *
Gcc-h8300-hms Ubuntu impish *
Gcc-h8300-hms Ubuntu kinetic *
Gcc-h8300-hms Ubuntu lunar *
Gcc-h8300-hms Ubuntu mantic *
Gcc-h8300-hms Ubuntu trusty *
Gcc-h8300-hms Ubuntu xenial *
Gcc-i686-linux-android Ubuntu trusty *
Gcc-i686-linux-android Ubuntu xenial *
Gcc-m68hc1x Ubuntu bionic *
Gcc-m68hc1x Ubuntu eoan *
Gcc-m68hc1x Ubuntu groovy *
Gcc-m68hc1x Ubuntu hirsute *
Gcc-m68hc1x Ubuntu impish *
Gcc-m68hc1x Ubuntu kinetic *
Gcc-m68hc1x Ubuntu trusty *
Gcc-m68hc1x Ubuntu xenial *
Gcc-mingw-w64 Ubuntu bionic *
Gcc-mingw-w64 Ubuntu eoan *
Gcc-mingw-w64 Ubuntu esm-infra-legacy/trusty *
Gcc-mingw-w64 Ubuntu groovy *
Gcc-mingw-w64 Ubuntu hirsute *
Gcc-mingw-w64 Ubuntu impish *
Gcc-mingw-w64 Ubuntu kinetic *
Gcc-mingw-w64 Ubuntu lunar *
Gcc-mingw-w64 Ubuntu mantic *
Gcc-mingw-w64 Ubuntu trusty *
Gcc-mingw-w64 Ubuntu trusty/esm *
Gcc-mingw-w64 Ubuntu xenial *
Gcc-msp430 Ubuntu bionic *
Gcc-msp430 Ubuntu eoan *
Gcc-msp430 Ubuntu groovy *
Gcc-msp430 Ubuntu hirsute *
Gcc-msp430 Ubuntu impish *
Gcc-msp430 Ubuntu kinetic *
Gcc-msp430 Ubuntu lunar *
Gcc-msp430 Ubuntu mantic *
Gcc-msp430 Ubuntu trusty *
Gcc-msp430 Ubuntu xenial *
Gcc-opt Ubuntu bionic *
Gcc-opt Ubuntu eoan *
Gcc-opt Ubuntu groovy *
Gcc-opt Ubuntu hirsute *
Gcc-opt Ubuntu impish *
Gcc-opt Ubuntu kinetic *
Gcc-opt Ubuntu lunar *
Gcc-opt Ubuntu mantic *
Gcc-opt Ubuntu trusty *
Gcc-opt Ubuntu xenial *
Gcc-snapshot Ubuntu bionic *
Gcc-snapshot Ubuntu eoan *
Gcc-snapshot Ubuntu groovy *
Gcc-snapshot Ubuntu hirsute *
Gcc-snapshot Ubuntu impish *
Gcc-snapshot Ubuntu kinetic *
Gcc-snapshot Ubuntu lunar *
Gcc-snapshot Ubuntu mantic *
Gcc-snapshot Ubuntu trusty *
Gcc-snapshot Ubuntu xenial *
Gccgo-4.9 Ubuntu esm-infra-legacy/trusty *
Gccgo-4.9 Ubuntu trusty *
Gccgo-4.9 Ubuntu trusty/esm *
Gccgo-6 Ubuntu xenial *
Llvm-toolchain-3.3 Ubuntu trusty *
Llvm-toolchain-3.4 Ubuntu trusty *
Llvm-toolchain-3.5 Ubuntu xenial *
Llvm-toolchain-3.6 Ubuntu esm-infra-legacy/trusty *
Llvm-toolchain-3.6 Ubuntu trusty *
Llvm-toolchain-3.6 Ubuntu trusty/esm *
Llvm-toolchain-3.6 Ubuntu xenial *
Llvm-toolchain-3.7 Ubuntu bionic *
Llvm-toolchain-3.7 Ubuntu xenial *
Llvm-toolchain-3.8 Ubuntu esm-infra-legacy/trusty *
Llvm-toolchain-3.8 Ubuntu trusty *
Llvm-toolchain-3.8 Ubuntu trusty/esm *
Llvm-toolchain-3.8 Ubuntu xenial *
Llvm-toolchain-3.9 Ubuntu bionic *
Llvm-toolchain-3.9 Ubuntu esm-infra-legacy/trusty *
Llvm-toolchain-3.9 Ubuntu trusty *
Llvm-toolchain-3.9 Ubuntu trusty/esm *
Llvm-toolchain-3.9 Ubuntu xenial *
Llvm-toolchain-4.0 Ubuntu bionic *
Llvm-toolchain-4.0 Ubuntu xenial *
Llvm-toolchain-snapshot Ubuntu trusty *

Potential Mitigations

  • Compartmentalize the system to have “safe” areas where trust boundaries can be unambiguously drawn. Do not allow sensitive data to go outside of the trust boundary and always be careful when interfacing with a compartment outside of the safe area.
  • Ensure that appropriate compartmentalization is built into the system design, and the compartmentalization allows for and reinforces privilege separation functionality. Architects and designers should rely on the principle of least privilege to decide the appropriate time to use privileges and the time to drop privileges.
  • Ensure that error messages only contain minimal details that are useful to the intended audience and no one else. The messages need to strike the balance between being too cryptic (which can confuse users) or being too detailed (which may reveal more than intended). The messages should not reveal the methods that were used to determine the error. Attackers can use detailed information to refine or optimize their original attack, thereby increasing their chances of success.
  • If errors must be captured in some detail, record them in log messages, but consider what could occur if the log messages can be viewed by attackers. Highly sensitive information such as passwords should never be saved to log files.
  • Avoid inconsistent messaging that might accidentally tip off an attacker about internal state, such as whether a user account exists or not.

References