CVE Vulnerabilities

CVE-2023-31147

Use of Insufficiently Random Values

Published: May 25, 2023 | Modified: Nov 21, 2024
CVSS 3.x
6.5
MEDIUM
Source:
NVD
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
CVSS 2.x
RedHat/V2
RedHat/V3
5.9 MODERATE
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N
Ubuntu
NEGLIGIBLE

c-ares is an asynchronous resolver library. When /dev/urandom or RtlGenRandom() are unavailable, c-ares uses rand() to generate random numbers used for DNS query ids. This is not a CSPRNG, and it is also not seeded by srand() so will generate predictable output. Input from the random number generator is fed into a non-compilant RC4 implementation and may not be as strong as the original RC4 implementation. No attempt is made to look for modern OS-provided CSPRNGs like arc4random() that is widely available. This issue has been fixed in version 1.19.1.

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
C-ares C-ares_project * 1.19.1 (excluding)
Red Hat Enterprise Linux 8 RedHat nodejs:16-8080020230608150024.63b34585 *
Red Hat Enterprise Linux 8 RedHat nodejs:18-8080020230607122508.63b34585 *
Red Hat Enterprise Linux 8.6 Extended Update Support RedHat nodejs:16-8060020230620060944.ad008a3a *
Red Hat Enterprise Linux 9 RedHat nodejs:18-9020020230531092345.rhel9 *
Red Hat Enterprise Linux 9 RedHat nodejs-1:16.19.1-2.el9_2 *
Red Hat Enterprise Linux 9 RedHat c-ares-0:1.19.1-1.el9 *
Red Hat Enterprise Linux 9 RedHat c-ares-0:1.19.1-1.el9 *
Red Hat Enterprise Linux 9.0 Extended Update Support RedHat nodejs-1:16.18.1-4.el9_0 *
Red Hat Software Collections for Red Hat Enterprise Linux 7 RedHat rh-nodejs14-nodejs-0:14.21.3-4.el7 *
C-ares Ubuntu bionic *
C-ares Ubuntu trusty *
C-ares Ubuntu upstream *
C-ares Ubuntu xenial *

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