CWE-338 descrive l'uso di un generatore di numeri pseudocasuali crittograficamente debole in un contesto sensibile alla sicurezza. Un PRNG può sembrare casuale pur restando prevedibile se viene inizializzato male, usa input a bassa entropia o non è progettato per la crittografia. Nel software sicuro, questa imprevedibilità è fondamentale quando si generano chiavi, nonce, salt, vettori di inizializzazione e frasi di recupero del wallet.
Questa debolezza è importante perché gli aggressori possono riuscire a ricostruire o restringere lo spazio di output e indovinare segreti che avrebbero dovuto essere impossibili da prevedere. In pratica, il difetto compare spesso quando gli sviluppatori usano helper generici come logiche basate sul tempo o casualità non crittografica invece di un CSPRNG verificato. Le difese si concentrano sull'uso delle API crittografiche della piattaforma, sulla raccolta di entropia sufficiente e sulla revisione di ogni percorso di codice che crea materiale di sicurezza. Se una casualità debole viene usata anche solo una volta, di solito i successivi passaggi crittografici non possono riparare il danno.


