CWEweakness
CWE-1204 Generation of Weak Initialization Vector (IV)
- Abstraction
- Base
- Structure
- Simple
- Status
- Incomplete
- Languages
- Not Language-Specific
- CWE version
- 5.0
Description
The product uses a cryptographic primitive that uses an Initialization
Vector (IV), but the product does not generate IVs that are
sufficiently unpredictable or unique according to the expected
cryptographic requirements for that primitive.
Extended description
By design, some cryptographic primitives
(such as block ciphers) require that IVs
must have certain properties for the
uniqueness and/or unpredictability of an
IV. Primitives may vary in how important
these properties are.
Common consequences
• Confidentiality: Read Application Data — If the IV is not properly
initialized, the cryptography may be
weakened or broken by attacking the IVs
themselves. Data that is encrypted can be
compromised, and information about the data
can be leaked. See [REF-1179].
Potential mitigations
• [Implementation] Different cipher
modes have different requirements for
their IVs. When choosing and implementing
a mode, it is important to understand
those requirements in order to keep
security guarantees intact. Generally, it
is safest to generate a random IV, since
it will be both unpredictable and have a
very low chance of being non-unique. IVs
do not have to be kept secret, so if
generating duplicate IVs is a concern, a
list of already-used IVs can be kept and
checked against.
NIST offers recommendations on generation of IVs for modes of which they have approved. These include options for when random IVs are not practical. For CBC, CFB, and OFB, see [REF-1175]; for GCM, see [REF-1178].
Detection methods
• Automated Static Analysis: Automated static analysis, commonly referred to as Static Application Security Testing (SAST), can find some instances of this weakness by analyzing source code (or binary/compiled code) without having to execute it. Typically, this is done by building a model of data flow and control flow, then searching for potentially-vulnerable patterns that connect "sources" (origins of input) with "sinks" (destinations where the data interacts with external components, a lower layer such as the OS, etc.)
Observed examples
• CVE-2020-1472: ZeroLogon vulnerability - use of a static IV of all zeroes in AES-CFB8 mode
• CVE-2011-3389: BEAST attack in SSL 3.0 / TLS 1.0. In CBC mode, chained initialization vectors are non-random, allowing decryption of HTTPS traffic using a chosen plaintext attack.
• CVE-2001-0161: wireless router does not use 6 of the 24 bits for WEP encryption, making it easier for attackers to decrypt traffic
• CVE-2001-0160: WEP card generates predictable IV values, making it easier for attackers to decrypt traffic
• CVE-2017-3225: device bootloader uses a zero initialization vector during AES-CBC
• CVE-2016-6485: crypto framework uses PHP rand function - which is not cryptographically secure - for an initialization vector
• CVE-2014-5386: encryption routine does not seed the random number generator, causing the same initialization vector to be generated repeatedly
• CVE-2020-5408: encryption functionality in an authentication framework uses a fixed null IV with CBC mode, allowing attackers to decrypt traffic in applications that use this functionality
• CVE-2017-17704: messages for a door-unlocking product use a fixed IV in CBC mode, which is the same after each restart
• CVE-2017-11133: application uses AES in CBC mode, but the pseudo-random secret and IV are generated using math.random, which is not cryptographically strong.
• CVE-2007-3528: Blowfish-CBC implementation constructs an IV where each byte is calculated modulo 8 instead of modulo 256, resulting in less than 12 bits for the effective IV length, and less than 4096 possible IV values.
Related
Attack pattern · CAPEC (2)
Observed example · CVE (11)
- CVE-2020-1472 An elevation of privilege vulnerability exists when an attacker establishes a vulnerable Netlogon secure channel connection to a domain… vulnerability
- CVE-2020-5408 Spring Security versions 5.3.x prior to 5.3.2, 5.2.x prior to 5.2.4, 5.1.x prior to 5.1.10, 5.0.x prior to 5.0.16 and 4.2.x prior to 4.2.16… vulnerability
- CVE-2017-3225 Das U-Boot is a device bootloader that can read its configuration from an AES encrypted file. vulnerability
- CVE-2017-17704 A door-unlocking issue was discovered on Software House iStar Ultra devices through 6.5.2.20569 when used in conjunction with the IP-ACM… vulnerability
- CVE-2017-11133 An issue was discovered in heinekingmedia StashCat through 1.7.5 for Android, through 0.0.80w for Web, and through 0.0.86 for Desktop. vulnerability
- CVE-2016-6485 The __construct function in Framework/Encryption/Crypt.php in Magento 2 uses the PHP rand function to generate a random number for the… vulnerability
- CVE-2014-5386 The mcrypt_create_iv function in hphp/runtime/ext/mcrypt/ext_mcrypt.cpp in Facebook HipHop Virtual Machine (HHVM) before 3.3.0 does not… vulnerability
- CVE-2011-3389 The SSL protocol, as used in certain configurations in Microsoft Windows and Microsoft Internet Explorer, Mozilla Firefox, Google Chrome,… vulnerability
- CVE-2007-3528 The blowfish mode in DAR before 2.3.4 uses weak Blowfish-CBC cryptography by (1) discarding random bits by the blowfish::make_ivec function… vulnerability
- CVE-2001-0160 Lucent/ORiNOCO WaveLAN cards generate predictable Initialization Vector (IV) values for the Wireless Encryption Protocol (WEP) which allows… vulnerability
- CVE-2001-0161 Cisco 340-series Aironet access point using firmware 11.01 does not use 6 of the 24 available IV bits for WEP encryption, which makes it… vulnerability
Child of · CWE (1)
- CWE-330 Use of Insufficiently Random Values weakness
Referenced by CAPEC · weakness (2)
Referenced by CVE · weakness (6)
- CVE-2026-8374 Misuse and misconfiguration in Bluetooth communication in SwitchBot Door Lock Series allows an attacker to bypass the electronic lock and… vulnerability
- CVE-2026-5087 PAGI::Middleware::Session::Store::Cookie versions through 0.001003 for Perl generates random bytes insecurely. vulnerability
- CVE-2026-25998 strongMan is a management interface for strongSwan, an OpenSource IPsec-based VPN. vulnerability
- CVE-2025-0714 The vulnerability exists in the password storage of Mobateks MobaXterm in versions below 25.0. vulnerability
- CVE-2022-26083 Generation of weak initialization vector in an Intel(R) IPP Cryptography software library before version 2021.5 may allow an… vulnerability
- CVE-2023-2747 The initialization vector (IV) used by the secure engine (SE) for encrypting data stored in the SE flash memory is uninitialized. vulnerability
Referenced by CWE · child of (1)
- CWE-329 Generation of Predictable IV with CBC Mode weakness