CWE-323 Base Incompleto High likelihood

Reusing a Nonce, Key Pair in Encryption

This vulnerability occurs when a cryptographic nonce or key pair is reused, compromising the security of the encrypted data.

Definición

What is CWE-323?

This vulnerability occurs when a cryptographic nonce or key pair is reused, compromising the security of the encrypted data.
In cryptography, a nonce (number used once) is a random or pseudo-random value that should be used for a single encryption session or transaction. Reusing it, or reusing the same key pair in a similar context, can allow attackers to decrypt messages, forge authentication, or break the encryption scheme entirely. This fundamentally undermines the security guarantees that modern encryption is designed to provide. To prevent this, developers must ensure nonces and ephemeral key pairs are generated uniquely for every single operation. Implement systems that securely manage state to guarantee no value is repeated, and prefer using well-vetted cryptographic libraries that handle this automatically, rather than attempting custom implementations.
Impacto en el mundo real

Real-world CVEs caused by CWE-323

Todavía no hay CVEs públicos enlazados a esta CWE en el catálogo de MITRE.

Cómo lo explotan los atacantes

Ruta del atacante paso a paso

  1. 1

    This code takes a password, concatenates it with a nonce, then encrypts it before sending over a network:

  2. 2

    Because the nonce used is always the same, an attacker can impersonate a trusted party by intercepting and resending the encrypted password. This attack avoids the need to learn the unencrypted password.

  3. 3

    This code sends a command to a remote server, using an encrypted password and nonce to prove the command is from a trusted party:

  4. 4

    Once again the nonce used is always the same. An attacker may be able to replay previous legitimate commands or execute new arbitrary commands.

Ejemplo de código vulnerable

Vulnerable C

This code takes a password, concatenates it with a nonce, then encrypts it before sending over a network:

Vulnerable C
void encryptAndSendPassword(char *password){
  	char *nonce = "bad";
  	...
  	char *data = (unsigned char*)malloc(20);
  	int para_size = strlen(nonce) + strlen(password);
  	char *paragraph = (char*)malloc(para_size);
  	SHA1((const unsigned char*)paragraph,parsize,(unsigned char*)data);
  	sendEncryptedData(data)
  }
Ejemplo de código seguro

Secure pseudo

Seguro pseudo
// Validate, sanitize, or use a safe API before reaching the sink.
function handleRequest(input) {
  const safe = validateAndEscape(input);
  return executeWithGuards(safe);
}
What changed: the unsafe sink is replaced (or the input is validated/escaped) so the same payload no longer triggers the weakness.
Lista de prevención

How to prevent CWE-323

  • Implementation Refuse to reuse nonce values.
  • Implementation Use techniques such as requiring incrementing, time based and/or challenge response to assure uniqueness of nonces.
Señales de detección

How to detect CWE-323

SAST High

Ejecuta análisis estático (SAST) sobre el código buscando el patrón inseguro en el flujo de datos.

DAST Moderate

Ejecuta pruebas dinámicas de seguridad de aplicaciones (DAST) contra el endpoint en vivo.

Runtime Moderate

Vigila los logs en tiempo de ejecución para detectar trazas de excepción inusuales, entradas malformadas o intentos de bypass de autorización.

Code review Moderate

Revisión de código: marca cualquier código nuevo que maneje entrada desde esta superficie sin usar los helpers validados del framework.

Auto-corrección de Plexicus

Plexicus detecta automáticamente CWE-323 y abre un PR de corrección en menos de 60 segundos.

Codex Remedium escanea cada commit, identifica esta debilidad concreta y entrega un pull request listo para revisión con el parche. Sin tickets. Sin traspasos.

Preguntas frecuentes

Frequently asked questions

¿Qué es CWE-323?

This vulnerability occurs when a cryptographic nonce or key pair is reused, compromising the security of the encrypted data.

¿Qué gravedad tiene CWE-323?

MITRE califica la probabilidad de explotación como Alta — esta debilidad se explota activamente en la práctica y debe priorizarse para su remediación.

¿Qué lenguajes o plataformas se ven afectados por CWE-323?

MITRE no ha especificado plataformas afectadas para esta CWE — puede aplicar a la mayoría de los stacks de aplicaciones.

¿Cómo puedo prevenir CWE-323?

Refuse to reuse nonce values. Use techniques such as requiring incrementing, time based and/or challenge response to assure uniqueness of nonces.

¿Cómo detecta y corrige Plexicus CWE-323?

El motor SAST de Plexicus detecta la firma de flujo de datos para CWE-323 en cada commit. Cuando hay coincidencia, nuestro agente Codex Remedium abre un PR de corrección con el código corregido, las pruebas y un resumen de una línea para el revisor.

¿Dónde puedo aprender más sobre CWE-323?

MITRE publica la definición canónica en https://cwe.mitre.org/data/definitions/323.html. También puedes consultar la documentación de OWASP y NIST para guías relacionadas.

Listo cuando tú lo estés

Deja de pagar por desarrollador.
Empieza a cerrar el bucle.

Plexicus es el ASPM nativo de IA que escanea, filtra, corrige, pentestea y explica — de forma autónoma. Desarrolladores ilimitados, repos ilimitados, acciones de IA de uso justo. Nivel gratuito real, €269/mo anual cuando estés listo.