CVE Vulnerabilities

CVE-2019-11840

Use of Insufficiently Random Values

Published: May 09, 2019 | Modified: Nov 21, 2024
CVSS 3.x
5.9
MEDIUM
Source:
NVD
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
CVSS 2.x
4.3 MEDIUM
AV:N/AC:M/Au:N/C:P/I:N/A:N
RedHat/V2
RedHat/V3
5.9 MODERATE
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Ubuntu
MEDIUM

An issue was discovered in the supplementary Go cryptography library, golang.org/x/crypto, before v0.0.0-20190320223903-b7391e95e576. A flaw was found in the amd64 implementation of the golang.org/x/crypto/salsa20 and golang.org/x/crypto/salsa20/salsa packages. If more than 256 GiB of keystream is generated, or if the counter otherwise grows greater than 32 bits, the amd64 implementation will first generate incorrect output, and then cycle back to previously generated keystream. Repeated keystream bytes can lead to loss of confidentiality in encryption applications, or to predictability in CSPRNG applications.

Weakness

The product uses insufficiently random numbers or values in a security context that depends on unpredictable numbers.

Affected Software

Name Vendor Start Version End Version
Crypto Golang * 2019-03-20 (excluding)
Golang-go.crypto Ubuntu bionic *
Golang-go.crypto Ubuntu cosmic *
Golang-go.crypto Ubuntu disco *
Golang-go.crypto Ubuntu eoan *
Golang-go.crypto Ubuntu esm-apps/bionic *
Golang-go.crypto Ubuntu esm-infra/xenial *
Golang-go.crypto Ubuntu xenial *
Lxd Ubuntu upstream *
Snapd Ubuntu bionic *
Snapd Ubuntu cosmic *
Snapd Ubuntu devel *
Snapd Ubuntu disco *
Snapd Ubuntu eoan *
Snapd Ubuntu esm-infra/bionic *
Snapd Ubuntu esm-infra/xenial *
Snapd Ubuntu focal *
Snapd Ubuntu groovy *
Snapd Ubuntu hirsute *
Snapd Ubuntu impish *
Snapd Ubuntu jammy *
Snapd Ubuntu kinetic *
Snapd Ubuntu lunar *
Snapd Ubuntu mantic *
Snapd Ubuntu noble *
Snapd Ubuntu oracular *
Snapd Ubuntu upstream *
Snapd Ubuntu xenial *
Red Hat OpenShift Container Platform 3.11 RedHat atomic-enterprise-service-catalog-1:3.11.374-1.git.1675.738abcc.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat atomic-openshift-0:3.11.374-1.git.0.ebd3ee9.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat atomic-openshift-cluster-autoscaler-0:3.11.374-1.git.0.2996f62.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat atomic-openshift-descheduler-0:3.11.374-1.git.299.f128e96.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat atomic-openshift-dockerregistry-0:3.11.374-1.git.481.e6a880c.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat atomic-openshift-metrics-server-0:3.11.374-1.git.53.9df25a9.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat atomic-openshift-node-problem-detector-0:3.11.374-1.git.263.28335fb.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat atomic-openshift-service-idler-0:3.11.374-1.git.15.523a1f7.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat atomic-openshift-web-console-0:3.11.374-1.git.647.9e78d83.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat golang-github-openshift-oauth-proxy-0:3.11.374-1.git.439.966c536.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat golang-github-prometheus-alertmanager-0:3.11.374-1.git.0.3abd2a5.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat golang-github-prometheus-node_exporter-0:3.11.374-1.git.1062.490d6d5.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat golang-github-prometheus-prometheus-0:3.11.374-1.git.5026.29379c4.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat openshift-enterprise-autoheal-0:3.11.374-1.git.218.9cf7939.el7 *
Red Hat OpenShift Container Platform 3.11 RedHat openshift-enterprise-cluster-capacity-0:3.11.374-1.git.379.80bd08f.el7 *
Red Hat OpenShift Container Platform 4.3 RedHat openshift4/ose-hyperkube:v4.3.0-202001211731 *
Red Hat OpenShift Container Platform 4.3 RedHat openshift-0:4.3.0-202001131753.git.0.0aee6a8.el7 *

Potential Mitigations

  • Use a well-vetted algorithm that is currently considered to be strong by experts in the field, and select well-tested implementations with adequate length seeds.
  • In general, if a pseudo-random number generator is not advertised as being cryptographically secure, then it is probably a statistical PRNG and should not be used in security-sensitive contexts.
  • Pseudo-random number generators can produce predictable numbers if the generator is known and the seed can be guessed. A 256-bit seed is a good starting point for producing a “random enough” number.

References