This weakness occurs when a product uses a custom, unverified, or non-compliant implementation of a cryptographic algorithm instead of a trusted, standard solution.
Cryptographic systems rely on proven building blocks like encryption, hashing, and digital signatures. These primitives are mathematically designed to withstand a specific number of attack attempts. When developers implement their own versions or use deprecated algorithms, they often introduce subtle flaws that cryptographers already understand, making the entire system vulnerable to data exposure or tampering. Using risky implementations is especially dangerous in hardware, where fixes often require physical recalls. Cryptographic standards are continuously reviewed and updated as computing power grows and new attack methods emerge. Relying on non-standard or weakened primitives, even for a single component, can compromise the security of the entire application over its lifespan.
Impact: Read Application Data
Incorrect usage of crypto primitives could render the supposedly encrypted data as unencrypted plaintext in the worst case.
Effectiveness: High
Effectiveness: High
Effectiveness: Discouraged Common Practice
Effectiveness: Discouraged Common Practice
Effectiveness: Defense in Depth
Effectiveness: Discouraged Common Practice
Effectiveness: Discouraged Common Practice
Effectiveness: Discouraged Common Practice
Strategy: Libraries or Frameworks
Effectiveness: High
Effectiveness: Moderate
Effectiveness: Moderate
Suppose an Encryption algorithm needs a random value for a key. Instead of using a DRNG (Deterministic Random Number Generator), the designer uses a linear-feedback shift register (LFSR) to generate the value.
If a cryptographic algorithm expects a random number as its input, provide one. Do not provide a pseudo-random value.