No. CryptGenRandom
on Windows is deprecated as an API, but not for security reasons, rather because the whole cryptography API has been redesigned.
The 2007 Dorrendorf et al. paper is about a weakness in the implementation of CryptGenRandom
at the time. As any serious provider of cryptography implementations would do, Microsoft eventually remedied the weakness found by the researchers. It seems they weren't quick to do it (article cited in the introduction of the Wikipedia article), and I don't know if they actually improved all old Windows versions, but certainly CryptGenRandom
today does not use the same mechanisms as back then. From the documentation:
In Windows Vista with Service Pack 1 (SP1) and later, an implementation of the AES counter-mode based PRNG specified in NIST Special Publication 800-90 is used. In Windows Vista, Windows Storage Server 2003, and Windows XP, the PRNG specified in Federal Information Processing Standard (FIPS) 186-2 is used.
This is a change from RC4 which was used in the Windows 2000 version that Dorrendorf et al. analyzed.
Even so, the RC4-based mechanism may have been cryptographically secure (depending on exactly how RC4 was used: RC4 itself has weaknesses that were known at the time, but at the time it was generally believed that you could avoid those weaknesses by discarding the beginning of the keystream). The problem was that the way in which the RNG operated did very little more than provide cryptographic-quality random numbers, with not much operational security.
Dorrendorf et al. show that the RNG implementation lack two properties which are unrelated to the quality of the output stream: prediction resistance and backtracking resistance. Your summary is missing a very important thing: an attacker can ”predict all random values (…)” only if the process has already been compromised. A the paper explains, if the process is fully compromised, this is moot, since the attacker has full control anyway. But their observations show that it's possible to escalate a partial compromise that leads to a disclosure of the state of the RNG. For example, if the attacker finds a flaw that leads to the RNG state being copied to an output buffer because of a buffer overread.
Because of the RC4-based design, from the RNG state at a given time, it's possible to calculate previous RNG states from the current state. The RNG lacks backtracking resistance. Modern RNG designs such as CTR_DRBG used by Windows Vista have backtracking resistance because the state transformation that produces output also transforms the RNG state in a non-invertible way.
Because the RNG does not reseed often, it is possible to predict future RNG states from the current state. The RNG lacks prediction resistance. The only way to achieve prediction resistance is to inject entropy each time the RNG is called. This was hard to achieve on older hardware due to the paucity of entropy sources, but is not hard with modern PC or smartphone hardware (it's another matter with many classes of embedded devices) whose processor has a built-in hardware random generator (e.g. RDRAND on Intel processors).