// For flags

CVE-2019-1543

ChaCha20-Poly1305 with long nonces

Severity Score

7.4
*CVSS v3

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

0
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

-
*SSVC
Descriptions

ChaCha20-Poly1305 is an AEAD cipher, and requires a unique nonce input for every encryption operation. RFC 7539 specifies that the nonce value (IV) should be 96 bits (12 bytes). OpenSSL allows a variable nonce length and front pads the nonce with 0 bytes if it is less than 12 bytes. However it also incorrectly allows a nonce to be set of up to 16 bytes. In this case only the last 12 bytes are significant and any additional leading bytes are ignored. It is a requirement of using this cipher that nonce values are unique. Messages encrypted using a reused nonce value are susceptible to serious confidentiality and integrity attacks. If an application changes the default nonce length to be longer than 12 bytes and then makes a change to the leading bytes of the nonce expecting the new value to be a new unique nonce then such an application could inadvertently encrypt messages with a reused nonce. Additionally the ignored bytes in a long nonce are not covered by the integrity guarantee of this cipher. Any application that relies on the integrity of these ignored leading bytes of a long nonce may be further affected. Any OpenSSL internal use of this cipher, including in SSL/TLS, is safe because no such use sets such a long nonce value. However user applications that use this cipher directly and set a non-default nonce length to be longer than 12 bytes may be vulnerable. OpenSSL versions 1.1.1 and 1.1.0 are affected by this issue. Due to the limited scope of affected deployments this has been assessed as low severity and therefore we are not creating new releases at this time. Fixed in OpenSSL 1.1.1c (Affected 1.1.1-1.1.1b). Fixed in OpenSSL 1.1.0k (Affected 1.1.0-1.1.0j).

ChaCha20-Poly1305 es un cifrado AEAD y requiere una entrada única para cada operación de cifrado. RFC 7539 especifica que el valor de nonce (IV) debe ser de 96 bits (12 bytes). OpenSSL permite una longitud de nonce variable y las almohadillas frontales del nonce con 0 bytes si es inferior a 12 bytes. Sin embargo, también permite incorrectamente que se establezca un nonce de hasta 16 bytes. En este caso, solo los últimos 12 bytes son significativos y los bytes iniciales adicionales se ignoran. Es un requisito de usar este cifrado que los valores de nonce son únicos. Los mensajes cifrados que utilizan un valor nonce reutilizado son susceptibles de graves ataques de confidencialidad e integridad. Si una aplicación cambia la longitud del nonce por defecto a más de 12 bytes y luego realiza un cambio a los bytes iniciales del nonce, esperando que el nuevo valor sea un nuevo nonce único, dicha aplicación podría encriptar inadvertidamente los mensajes con un nonce reutilizado. Además, los bytes ignorados en un nonce largo no están cubiertos por la garantía de integridad de este cifrado. Cualquier aplicación que se base en la integridad de estos bytes iniciales ignorados de un nonce largo puede verse afectada aún más. Cualquier uso interno de OpenSSL de este cifrado, incluido en SSL / TLS, es seguro porque dicho uso no establece un valor de referencia tan largo. Sin embargo, las aplicaciones de usuario que usan este cifrado directamente y establecen una longitud de nonce no predeterminada para que sea mayor a 12 bytes pueden ser vulnerables. Las versiones de OpenSSL 1.1.1 y 1.1.0 están afectadas por este problema. Debido al alcance limitado de las implementaciones afectadas, esto se ha evaluado como de baja gravedad y, por lo tanto, no estamos creando nuevas versiones en este momento. Corregido en OpenSSL 1.1.1c (Afectado 1.1.1-1.1.1b). Corregido en OpenSSL 1.1.0k (Afectado 1.1.0-1.1.0j).

*Credits: Joran Dirk Greef of Ronomon
CVSS Scores
Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None
Attack Vector
Local
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None
Attack Vector
Network
Attack Complexity
Medium
Authentication
None
Confidentiality
Partial
Integrity
Partial
Availability
None
* Common Vulnerability Scoring System
SSVC
  • Decision:-
Exploitation
-
Automatable
-
Tech. Impact
-
* Organization's Worst-case Scenario
Timeline
  • 2018-11-28 CVE Reserved
  • 2019-03-06 CVE Published
  • 2024-09-05 EPSS Updated
  • 2024-09-16 CVE Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
  • ---------- First Exploit
CWE
  • CWE-323: Reusing a Nonce, Key Pair in Encryption
  • CWE-327: Use of a Broken or Risky Cryptographic Algorithm
  • CWE-330: Use of Insufficiently Random Values
CAPEC
Affected Vendors, Products, and Versions
Vendor Product Version Other Status
Vendor Product Version Other Status <-- --> Vendor Product Version Other Status
Openssl
Search vendor "Openssl"
Openssl
Search vendor "Openssl" for product "Openssl"
>= 1.1.0 <= 1.1.0j
Search vendor "Openssl" for product "Openssl" and version " >= 1.1.0 <= 1.1.0j"
-
Affected
Openssl
Search vendor "Openssl"
Openssl
Search vendor "Openssl" for product "Openssl"
>= 1.1.1 <= 1.1.1b
Search vendor "Openssl" for product "Openssl" and version " >= 1.1.1 <= 1.1.1b"
-
Affected