Fix it in your stack

Tested fixes for CWE-327 in Express, Flask, Spring Boot, ASP.NET Core, FastAPI, Django, net/http and Laravel: the vulnerable code, the fix, a plausible fix that still fails, and the regression tests.

Definition

MITRE’s description of CWE-327: The product uses a broken or risky cryptographic algorithm or protocol.

Common consequences MITRE lists

  • Confidentiality: Read Application Data
  • Integrity: Modify Application Data
  • Accountability, Non-Repudiation: Hide Activities

Why it matters

Weak primitives let attackers recover plaintext, forge signatures or find collisions with practical effort, and the damage persists in every record and certificate already produced.

How to prevent it

  • Use current algorithms through a maintained library: AES-GCM or ChaCha20-Poly1305 for encryption, SHA-256 or stronger for hashing, and Ed25519, ECDSA P-256 or RSA with keys of at least 2048 bits for signatures.
  • Keep a cryptographic inventory so weak algorithms can be found and replaced.
  • Put algorithm and version identifiers in formats and protocols so that you can migrate without breaking old data.

Guides on this site

Main subject · Reference

ECB mode: why it leaks patterns and what to use instead

Derive exactly what ECB reveals and why a longer key cannot fix it, find where ECB enters real code, and replace it with an authenticated mode.

Main subject · Reference

RC4 keystream bias

Understand why fresh RC4 keys do not remove keystream bias and how repeated secret positions turn a small statistical effect into evidence.

Main subject · Reference

Hash collisions and digital signatures: MD5, SHA-1 and what to use

Distinguish collisions from preimages, follow a colliding pair through signing and verification, and retire MD5 and SHA-1 from the verifiers that still accept them.

Main subject · Reference

64-bit block ciphers and the Sweet32 mechanism

Calculate the birthday effect for 64-bit blocks and derive the CBC relation that can turn a collision into a plaintext disclosure.

Also covers this · Guide

Post-quantum migration: cryptographic inventory, hybrid TLS and deadlines

Inventory public-key cryptography by operation, owner and lifetime, turn on hybrid ML-KEM key exchange where it is already available, and plan signature and archive migration against the NIST, NSA, NCSC and EU dates.

Also covers this · Case study

WEP: RC4 key reuse and weak IVs

Separate WEP’s repeated-keystream failure, weak-IV key recovery, and unkeyed integrity weakness through a concrete two-packet exercise.

Also covers this · Case study

Flame: MD5 certificate forgery

Follow how a weak digest and an overpowered certificate trust path enabled forged code-signing authority, without equating the event with RSA key theft.

Also covers this · Case study

Sweet32: the cost of a small block size

Read the 2016 Sweet32 demonstrations as evidence about traffic volume, repeated secrets, and session lifetime rather than treating a block-size threshold as an instant exploit.

Also covers this · Reference

Choose cryptographic algorithms and parameters by job

A sourced quick reference for October 2026: which algorithm and parameters to use for encryption, hashing, passwords, MACs, signatures, key agreement, key derivation, randomness and TLS, the matching APIs in Node.js, Python, Java, Go and .NET, and where post-quantum migration stands.

Cites this weakness · Reference

Padding oracle attacks

Use a byte-level CBC example to see how a tiny validity signal becomes plaintext information, then design verification that checks more than the error message.

Cites this weakness · Case study

Lucky Thirteen and POODLE: two different oracles

Compare two CBC oracles by their signal, protocol rules, and attacker prerequisites instead of treating them as interchangeable padding bugs.

Cites this weakness · Case study

DROWN: one RSA key across incompatible protocols

Map an RSA key across services to see how an SSLv2 oracle could compromise TLS traffic on a different endpoint.

Cites this weakness · Guide

AEAD records: AES-GCM nonces, associated data and key limits

Build an encrypted record whose tag binds ciphertext to the intended tenant, record, purpose and format, keep nonces unique within each key’s usage limit, and verify the design with actual AES-GCM.

Practice

References

  1. CWE-327 in the MITRE CWE list (version 4.20)
  2. OWASP Cryptographic Storage Cheat Sheet

List data from MITRE; the name, definition and consequences are from MITRE’s CWE 4.20 catalogue. A guide is listed as the main subject when the weakness is what the guide is about, and as covering it when a dedicated section or worked example addresses it.

CWE content: Copyright © 2006–2026, The MITRE Corporation. CWE, CWSS, CWRAF, and the CWE logo are trademarks of The MITRE Corporation. CWE™ is free to use by any organization or individual for any research, development, and/or commercial purposes, per these CWE Terms of Use. Accordingly, The MITRE Corporation hereby grants you a non-exclusive, royalty-free license to use CWE for research, development, and commercial purposes. Any copy you make for such purposes is authorized on the condition that you reproduce MITRE’s copyright designation and this license in any such copy. CWE is a trademark of The MITRE Corporation. CWE Terms of Use.