Java


JAVA.CRYPTO.RCA : Risky Cipher Algorithm (Java)

Summary

Identify the use of unsafe cryptographic algorithms.

A weak, possibly reversible cryptographic cipher algorithm is used.

Some cryptography algorithms are nowadays considered as outdated and unsafe or actually broken, since they are too easy to decode. This checker identifies uses of unsafe algorithms for cryptography.

The OWASP documentation provides more information on Using the Java Cryptographic Extensions.

Properties

Class Name Risky Cipher Algorithm (Java)
Significance security
Mnemonic JAVA.CRYPTO.RCA
Categories
CWE CWE:327 Use of a Broken or Risky Cryptographic Algorithm
CERT-Java CERT-Java:DRD18 Do not use the default behavior in a cryptographic library if it does not use recommended practices
OWASP-2017 OWASP-2017:A2 Broken authentication
OWASP-2021 OWASP-2021:A7 Identification and authorization failures
Availability Available for Java only.
Enabling Checks for this warning class are enabled by default. To disable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += discard class="Risky Cipher Algorithm (Java)"

Example

In the following example, the analysis triggers a Risky Cipher Algorithm (Java) warning because getProperty() returns default value MyEncryptAlgo/ECB/PKCS5Padding if the key cryptoAlg1 is not found in the property list. ECB (Electronic Code Book) mode is not recommended for use in asymmetric encryption.

import java.util.Properties;

public class MyCryptoAlgorithm { 
  public static String getCryptographyAlgorithm(Properties props) { 
      return props.getProperty("cryptoAlg1", "MyEncryptAlgo/ECB/PKCS5Padding"); // "Risky Cipher Algorithm (Java)" warning issued here.
  } 
}        

In this example, the programmer should change the cipher to a more secure one, for instance replacing ECB with CBC.

Resolution

Use a safer cryptography algorithm.

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.