Skip to content

Commit 2c01321

Browse files
committed
add Diffie-Hellman from the crypto library
1 parent 1df8ec2 commit 2c01321

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

javascript/ql/lib/semmle/javascript/frameworks/CryptoLibraries.qll

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,19 @@ private module NodeJSCrypto {
204204
override predicate isSymmetricKey() { symmetric = true }
205205
}
206206

207+
private class CreateDiffieHellmanKey extends CryptographicKeyCreation, DataFlow::CallNode {
208+
// require("crypto").createDiffieHellman(prime_length);
209+
CreateDiffieHellmanKey() {
210+
this = DataFlow::moduleMember("crypto", "createDiffieHellman").getACall()
211+
}
212+
213+
override CryptographicAlgorithm getAlgorithm() { none() }
214+
215+
override int getSize() { result = getArgument(0).getIntValue() }
216+
217+
override predicate isSymmetricKey() { none() }
218+
}
219+
207220
private class Apply extends CryptographicOperation, MethodCallExpr {
208221
InstantiatedAlgorithm instantiation;
209222

javascript/ql/test/query-tests/Security/CWE-326/tst.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,7 @@ var key3 = myBuffer.getBytes(8);
3030
var bad9 = forge.cipher.createDecipher('3DES-CBC', key3); // NOT OK
3131

3232
var key4 = myBuffer.getBytes(16);
33-
var good5 = forge.cipher.createDecipher('AES-CBC', key4); // OK
33+
var good5 = forge.cipher.createDecipher('AES-CBC', key4); // OK
34+
35+
var bad10 = crypto.createDiffieHellman(512);
36+
var good6 = crypto.createDiffieHellman(2048);

0 commit comments

Comments
 (0)