CVE-2017-11671 - Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)

Severity

21%

Complexity

39%

Confidentiality

48%

Under certain circumstances, the ix86_expand_builtin function in i386.c in GNU Compiler Collection (GCC) version 4.6, 4.7, 4.8, 4.9, 5 before 5.5, and 6 before 6.4 will generate instruction sequences that clobber the status flag of the RDRAND and RDSEED intrinsics before it can be read, potentially causing failures of these instructions to go unreported. This could potentially lead to less randomness in random number generation.

Under certain circumstances, the ix86_expand_builtin function in i386.c in GNU Compiler Collection (GCC) version 4.6, 4.7, 4.8, 4.9, 5 before 5.5, and 6 before 6.4 will generate instruction sequences that clobber the status flag of the RDRAND and RDSEED intrinsics before it can be read, potentially causing failures of these instructions to go unreported. This could potentially lead to less randomness in random number generation.

CVSS 3.0 Base Score 4. CVSS Attack Vector: local. CVSS Attack Complexity: low. CVSS Vector: (CVSS:3.0/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N).

CVSS 2.0 Base Score 2.1. CVSS Attack Vector: local. CVSS Attack Complexity: low. CVSS Vector: (AV:L/AC:L/Au:N/C:P/I:N/A:N).

Demo Examples

Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)

CWE-338

Both of these examples use a statistical PRNG to generate a random number:


               
int accountID = random.nextInt();

               
int randNum = rand();

The random number functions used in these examples, rand() and Random.nextInt(), are not considered cryptographically strong. An attacker may be able to predict the random numbers generated by these functions. Note that these example also exhibit CWE-337 (Predictable Seed in PRNG).

Overview

Type

GNU GCC

First reported 7 years ago

2017-07-26 21:29:00

Last updated 6 years ago

2018-04-12 01:29:00

Affected Software

GNU GCC 4.6

4.6

GNU GCC 4.7

4.7

GNU GCC 4.8

4.8

GNU GCC 4.9

4.9

GNU GCC 5.0

5.0

GNU GCC 5.1

5.1

GNU GCC 5.2

5.2

GNU GCC 5.3

5.3

GNU GCC 5.4

5.4

GNU GCC 6.0

6.0

GNU GCC 6.1

6.1

GNU GCC 6.2

6.2

GNU GCC 6.3

6.3

Stay updated

ExploitPedia is constantly evolving. Sign up to receive a notification when we release additional functionality.

Get in touch

If you'd like to report a bug or have any suggestions for improvements then please do get in touch with us using this form. We will get back to you as soon as we can.