61 lines
2.1 KiB
Plaintext
61 lines
2.1 KiB
Plaintext
include::../description.adoc[]
|
|
|
|
== Noncompliant Code Example
|
|
|
|
----
|
|
import javax.crypto.NoSuchPaddingException
|
|
import java.security.NoSuchAlgorithmException
|
|
import javax.crypto.Cipher
|
|
|
|
class test {
|
|
fun main(args: Array<String>) {
|
|
try {
|
|
val c1 = Cipher.getInstance("DES") // Noncompliant: DES works with 56-bit keys allow attacks via exhaustive search
|
|
val c7 = Cipher.getInstance("DESede") // Noncompliant: Triple DES is vulnerable to meet-in-the-middle attack
|
|
val c13 = Cipher.getInstance("RC2") // Noncompliant: RC2 is vulnerable to a related-key attack
|
|
val c19 = Cipher.getInstance("RC4") // Noncompliant: vulnerable to several attacks (see https://en.wikipedia.org/wiki/RC4#Security)
|
|
val c25 = Cipher.getInstance("Blowfish") // Noncompliant: Blowfish use a 64-bit block size makes it vulnerable to birthday attacks
|
|
val nc = NullCipher() // Noncompliant: the NullCipher class provides an "identity cipher" one that does not transform or encrypt the plaintext in any way.
|
|
|
|
|
|
} catch (e: NoSuchAlgorithmException) {
|
|
} catch (e: NoSuchPaddingException) {
|
|
}
|
|
}
|
|
}
|
|
----
|
|
|
|
== Compliant Solution
|
|
|
|
----
|
|
import javax.crypto.NoSuchPaddingException
|
|
import java.security.NoSuchAlgorithmException
|
|
import javax.crypto.Cipher
|
|
|
|
class test {
|
|
fun main(args: Array<String>) {
|
|
try {
|
|
val c31 = Cipher.getInstance("AES/GCM/NoPadding") // Compliant
|
|
|
|
} catch (e: NoSuchAlgorithmException) {
|
|
} catch (e: NoSuchPaddingException) {
|
|
}
|
|
}
|
|
}
|
|
----
|
|
|
|
== See
|
|
|
|
* https://www.owasp.org/index.php/Top_10-2017_A3-Sensitive_Data_Exposure[OWASP Top 10 2017 Category A3] - Sensitive Data Exposure
|
|
* https://cwe.mitre.org/data/definitions/327.html[MITRE, CWE-327] - Use of a Broken or Risky Cryptographic Algorithm
|
|
* https://wiki.sei.cmu.edu/confluence/x/hDdGBQ[CERT, MSC61-J.] - Do not use insecure or weak cryptographic algorithms
|
|
* https://www.sans.org/top25-software-errors/#cat3[SANS Top 25] - Porous Defenses
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::../comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|