CRITICAL
								
				
				
				
								
				Rule Definition
				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. If these properties are not maintained, e.g. by a bug in the code, then the cryptography may be weakened or broken by attacking the IVs themselves.				
								
				
				Remediation
				Create the Initialization Vector with a pseudorandom number generator (PRNG).				
												
				 Violation Code Sample
				
				byte[] iv = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
IvParameterSpec ips = new IvParameterSpec(iv);   // VIOLATION
				 
												 Fixed Code Sample
				
				byte[] iv = new byte[16];
new SecureRandom().nextBytes(iv);
IvParameterSpec ivSpec = new IvParameterSpec(iv);  // FIXED
				 
												
				Reference
				CWE-329: Generation of Predictable IV with CBC Mode
https://cwe.mitre.org/data/definitions/329.html
								
				 Related Technologies
								
				
				
				
				Technical Criterion
				Secure Coding - Weak Security Features
				
				
				
				
				
					
				
				
				
About CAST Appmarq
					
CAST Appmarq is by far the biggest repository of data about real IT systems. It's built on thousands of analyzed applications, made of 35 different technologies, by over 300 business organizations across major verticals. It provides IT Leaders with factual key analytics to let them know if their applications are on track.