Skip to content

Commit dd60cf9

Browse files
committed
Crypto: Adjust output of bad mac order queries, update associated bad mac order expected results, fix erroneous change to ID for a slicing query, update model to specify elliptic curve type as a property, update associated graph test expected files, update the not_included_in_qls.expected to reflect all queries now under quantum.
1 parent b374ba3 commit dd60cf9

File tree

8 files changed

+48
-18
lines changed

8 files changed

+48
-18
lines changed

java/ql/integration-tests/java/query-suite/not_included_in_qls.expected

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -228,14 +228,24 @@ ql/java/ql/src/experimental/Security/CWE/CWE-665/InsecureRmiJmxEnvironmentConfig
228228
ql/java/ql/src/experimental/Security/CWE/CWE-755/NFEAndroidDoS.ql
229229
ql/java/ql/src/experimental/Security/CWE/CWE-759/HashWithoutSalt.ql
230230
ql/java/ql/src/experimental/Security/CWE/CWE-939/IncorrectURLVerification.ql
231-
ql/java/ql/src/experimental/quantum/Analysis/InsecureNonceSource.ql
232-
ql/java/ql/src/experimental/quantum/Analysis/KnownWeakKDFIterationCount.ql
233-
ql/java/ql/src/experimental/quantum/Analysis/ReusedNonce.ql
234-
ql/java/ql/src/experimental/quantum/Analysis/UnknownKDFIterationCount.ql
231+
ql/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql
232+
ql/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql
235233
ql/java/ql/src/experimental/quantum/Examples/BrokenCrypto.ql
234+
ql/java/ql/src/experimental/quantum/Examples/InsecInseInsecureIVorNonceSource.ql
235+
ql/java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql
236236
ql/java/ql/src/experimental/quantum/Examples/TestAESGCMNonce.ql
237237
ql/java/ql/src/experimental/quantum/Examples/TestCipher.ql
238238
ql/java/ql/src/experimental/quantum/Examples/TestHash.ql
239+
ql/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql
240+
ql/java/ql/src/experimental/quantum/Examples/UnknownHash.ql
241+
ql/java/ql/src/experimental/quantum/Examples/UnknownIVorNonceSource.ql
242+
ql/java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql
243+
ql/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql
244+
ql/java/ql/src/experimental/quantum/Examples/WeakBlockModes.ql
245+
ql/java/ql/src/experimental/quantum/Examples/WeakHash.ql
246+
ql/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql
247+
ql/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql
248+
ql/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql
239249
ql/java/ql/src/experimental/quantum/InventorySlices/KnownAsymmetricAlgorithm.ql
240250
ql/java/ql/src/experimental/quantum/InventorySlices/KnownAsymmetricCipherAlgorithm.ql
241251
ql/java/ql/src/experimental/quantum/InventorySlices/KnownAsymmetricOperationAlgorithm.ql

java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ import BadMacOrder
1515
from ArtifactFlow::PathNode src, ArtifactFlow::PathNode sink
1616
where isDecryptToMacFlow(src, sink)
1717
select sink, src, sink,
18-
"MAC order potentially wrong: observed a potential decrypt operation output to MAC implying the MAC is on plaintext, and not a cipher."
18+
"Incorrect decryption and MAC order: decryption output plaintext flows to MAC message input."

java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ from
1717
PlaintextUseAsMacAndCipherInputFlow::PathNode sink, InterimArg arg
1818
where isPlaintextInEncryptionAndMac(src, sink, arg)
1919
select sink, src, sink,
20-
"Source is used as plaintext to MAC and encryption operation. Indicates possible misuse of MAC. Path shows plaintext to final use through intermediate mac or encryption operation here $@",
20+
"Incorrect MAC usage: Encryption plaintext also used for MAC. Flow shows plaintext to final use through intermediate mac or encryption operation here $@",
2121
arg.asExpr(), arg.asExpr().toString()

java/ql/src/experimental/quantum/InventorySlices/UnknownOperationAlgorithm.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* @name Operations with unknown algorithm
33
* @description Outputs operations where the algorithm applied is unknown
4-
* @id java/quantum/examples/slices/operation-with-unknown-algorithm
4+
* @id java/quantum/slices/operation-with-unknown-algorithm
55
* @kind problem
66
* @severity info
77
* @tags quantum

java/ql/test/experimental/library-tests/quantum/node_properties.expected

Lines changed: 16 additions & 0 deletions
Large diffs are not rendered by default.

java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#select
2-
| BadMacUse.java:56:42:56:50 | plaintext | BadMacUse.java:50:28:50:53 | doFinal(...) : byte[] | BadMacUse.java:56:42:56:50 | plaintext | MAC order potentially wrong: observed a potential decrypt operation output to MAC implying the MAC is on plaintext, and not a cipher. |
3-
| BadMacUse.java:124:42:124:51 | ciphertext | BadMacUse.java:92:16:92:36 | doFinal(...) : byte[] | BadMacUse.java:124:42:124:51 | ciphertext | MAC order potentially wrong: observed a potential decrypt operation output to MAC implying the MAC is on plaintext, and not a cipher. |
2+
| BadMacUse.java:56:42:56:50 | plaintext | BadMacUse.java:50:28:50:53 | doFinal(...) : byte[] | BadMacUse.java:56:42:56:50 | plaintext | Incorrect decryption and MAC order: decryption output plaintext flows to MAC message input. |
3+
| BadMacUse.java:124:42:124:51 | ciphertext | BadMacUse.java:92:16:92:36 | doFinal(...) : byte[] | BadMacUse.java:124:42:124:51 | ciphertext | Incorrect decryption and MAC order: decryption output plaintext flows to MAC message input. |
44
edges
55
| BadMacUse.java:27:29:27:53 | doFinal(...) : byte[] | BadMacUse.java:32:42:32:51 | ciphertext | provenance | |
66
| BadMacUse.java:50:28:50:53 | doFinal(...) : byte[] | BadMacUse.java:56:42:56:50 | plaintext | provenance | |
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
#select
2-
| BadMacUse.java:80:44:80:52 | plaintext | BadMacUse.java:67:82:67:97 | plaintext : byte[] | BadMacUse.java:80:44:80:52 | plaintext | Source is used as plaintext to MAC and encryption operation. Indicates possible misuse of MAC. Path shows plaintext to final use through intermediate mac or encryption operation here $@ | BadMacUse.java:75:42:75:50 | plaintext | plaintext |
2+
| BadMacUse.java:76:44:76:52 | plaintext | BadMacUse.java:63:82:63:97 | plaintext : byte[] | BadMacUse.java:76:44:76:52 | plaintext | Incorrect MAC usage: Encryption plaintext also used for MAC. Flow shows plaintext to final use through intermediate mac or encryption operation here $@ | BadMacUse.java:71:42:71:50 | plaintext | plaintext |
33
edges
4-
| BadMacUse.java:67:82:67:97 | plaintext : byte[] | BadMacUse.java:75:42:75:50 | plaintext : byte[] | provenance | |
5-
| BadMacUse.java:75:42:75:50 | plaintext : byte[] | BadMacUse.java:75:42:75:50 | plaintext : byte[] | provenance | Config |
6-
| BadMacUse.java:75:42:75:50 | plaintext : byte[] | BadMacUse.java:80:44:80:52 | plaintext | provenance | |
4+
| BadMacUse.java:63:82:63:97 | plaintext : byte[] | BadMacUse.java:71:42:71:50 | plaintext : byte[] | provenance | |
5+
| BadMacUse.java:71:42:71:50 | plaintext : byte[] | BadMacUse.java:71:42:71:50 | plaintext : byte[] | provenance | Config |
6+
| BadMacUse.java:71:42:71:50 | plaintext : byte[] | BadMacUse.java:76:44:76:52 | plaintext | provenance | |
77
nodes
8-
| BadMacUse.java:67:82:67:97 | plaintext : byte[] | semmle.label | plaintext : byte[] |
9-
| BadMacUse.java:75:42:75:50 | plaintext : byte[] | semmle.label | plaintext : byte[] |
10-
| BadMacUse.java:75:42:75:50 | plaintext : byte[] | semmle.label | plaintext : byte[] |
11-
| BadMacUse.java:80:44:80:52 | plaintext | semmle.label | plaintext |
8+
| BadMacUse.java:63:82:63:97 | plaintext : byte[] | semmle.label | plaintext : byte[] |
9+
| BadMacUse.java:71:42:71:50 | plaintext : byte[] | semmle.label | plaintext : byte[] |
10+
| BadMacUse.java:71:42:71:50 | plaintext : byte[] | semmle.label | plaintext : byte[] |
11+
| BadMacUse.java:76:44:76:52 | plaintext | semmle.label | plaintext |
1212
subpaths
1313
testFailures
14-
| BadMacUse.java:54:56:54:66 | // $Source | Missing result: Source |
14+
| BadMacUse.java:50:56:50:66 | // $Source | Missing result: Source |

shared/quantum/codeql/quantum/experimental/Model.qll

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2393,6 +2393,10 @@ module CryptographyBase<LocationSig Location, InputSig<Location> Input> {
23932393
key = "ParsedName" and
23942394
value = instance.asAlg().getParsedEllipticCurveName() and
23952395
location = this.getLocation()
2396+
or
2397+
key = "CurveType" and
2398+
value = this.getEllipticCurveType().toString() and
2399+
location = this.getLocation()
23962400
}
23972401
}
23982402
}

0 commit comments

Comments
 (0)