Skip to content

Commit 2081c6f

Browse files
committed
addiitonal minor fixes
1 parent 0949e96 commit 2081c6f

File tree

2 files changed

+1
-57
lines changed

2 files changed

+1
-57
lines changed

powershell/ql/src/queries/security/cwe-327/ObsoleteKDFAlgorithm.qhelp

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,8 @@
1717
a SHA-2 hash function (such as SHA-256 or SHA-512). Additionally, use a high iteration
1818
count (at least 100,000) to increase resistance against brute-force attacks.
1919
</p>
20+
2021
</recommendation>
21-
<example>
22-
<p>
23-
The following example shows the use of an obsolete KDF algorithm:
24-
</p>
25-
<sample language="powershell">
26-
# BAD: Using PasswordDeriveBytes which implements PBKDF1
27-
$kdf = New-Object System.Security.Cryptography.PasswordDeriveBytes($password, $salt)
28-
$key = $kdf.CryptDeriveKey("AES", "SHA256", 256, $iv)
29-
</sample>
30-
<p>
31-
The following example shows the recommended approach using PBKDF2:
32-
</p>
33-
<sample language="powershell">
34-
# GOOD: Using Rfc2898DeriveBytes with SHA-256 and high iteration count
35-
$kdf = New-Object System.Security.Cryptography.Rfc2898DeriveBytes($password, $salt, 100000, [System.Security.Cryptography.HashAlgorithmName]::SHA256)
36-
$key = $kdf.GetBytes(32)
37-
</sample>
38-
</example>
3922
<references>
4023
<li>NIST, SP 800-132: <a href="https://csrc.nist.gov/publications/detail/sp/800-132/final">Recommendation for Password-Based Key Derivation</a>.</li>
4124
<li>OWASP: <a href="https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html">Password Storage Cheat Sheet</a>.</li>

powershell/ql/src/queries/security/cwe-327/WeakSymmetricAlgorithm.ql

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -15,45 +15,6 @@ import semmle.code.powershell.ApiGraphs
1515
import semmle.code.powershell.dataflow.DataFlow
1616
import semmle.code.powershell.security.cryptography.Concepts
1717

18-
// class WeaksSymmetricAlgorithmCreateCall extends DataFlow::CallNode {
19-
// WeaksSymmetricAlgorithmCreateCall() {
20-
// this = API::getTopLevelMember("system").getMember("security").getMember("cryptography").getMember("rc2").getMember("create").asCall() or
21-
// this = API::getTopLevelMember("system").getMember("security").getMember("cryptography").getMember("des").getMember("create").asCall() or
22-
// this = API::getTopLevelMember("system").getMember("security").getMember("cryptography").getMember("tripledes").getMember("create").asCall() or
23-
// (
24-
// this = API::getTopLevelMember("system").getMember("security").getMember("cryptography").getMember("symmetricalgorithm").getMember("create").asCall() and
25-
// this.getAnArgument().asExpr().getValue().asString() = ["RC2", "DES", "TripleDES", "Rijndael"] or
26-
// this.getAnArgument().asExpr().getValue().asString() = ["System.Security.Cryptography.RC2", "System.Security.Cryptography.DES", "System.Security.Cryptography.TripleDES", "System.Security.Cryptography.Rijndael"]
27-
// )
28-
// }
29-
// }
30-
// class WeakSymmetricAlgorithmObjectCreation extends DataFlow::ObjectCreationNode {
31-
// WeakSymmetricAlgorithmObjectCreation() {
32-
// this.getExprNode().getExpr().(CallExpr).getAnArgument().getValue().asString() = "System.Security.Cryptography.DES" or
33-
// this.getExprNode().getExpr().(CallExpr).getAnArgument().getValue().asString() = "System.Security.Cryptography.DESCryptoServiceProvider" or
34-
// this.getExprNode().getExpr().(CallExpr).getAnArgument().getValue().asString() = "System.Security.Cryptography.TripleDES" or
35-
// this.getExprNode().getExpr().(CallExpr).getAnArgument().getValue().asString() = "System.Security.Cryptography.TripleDESCryptoServiceProvider" or
36-
// this.getExprNode().getExpr().(CallExpr).getAnArgument().getValue().asString() = "System.Security.Cryptography.RC2" or
37-
// this.getExprNode().getExpr().(CallExpr).getAnArgument().getValue().asString() = "System.Security.Cryptography.RC2CryptoServiceProvider" or
38-
// this.getExprNode().getExpr().(CallExpr).getAnArgument().getValue().asString() = "System.Security.Cryptography.Rijndael" or
39-
// this.getExprNode().getExpr().(CallExpr).getAnArgument().getValue().asString() = "System.Security.Cryptography.Rijndael"
40-
// }
41-
// }
42-
// class CreateFromNameSink extends DataFlow::CallNode {
43-
// CreateFromNameSink(){
44-
// this = API::getTopLevelMember("system").getMember("security").getMember("cryptography").getMember("cryptoconfig").getMember("createfromname").asCall() and
45-
// (
46-
// this.getAnArgument().asExpr().getValue().asString() = ["System.Security.Cryptography.DES", "System.Security.Cryptography.TripleDES", "System.Security.Cryptography.RC2", "System.Security.Cryptography.Rijndael"] or
47-
// this.getAnArgument().asExpr().getValue().asString() = ["DES", "TripleDES", "RC2", "Rijndael"]
48-
// )
49-
// }
50-
// }
51-
// from DataFlow::Node weakSymmetricAlg
52-
// where weakSymmetricAlg instanceof WeaksSymmetricAlgorithmCreateCall or
53-
// weakSymmetricAlg instanceof WeakSymmetricAlgorithmObjectCreation or
54-
// weakSymmetricAlg instanceof CreateFromNameSink
55-
// select weakSymmetricAlg,
56-
// "Use of weak symmetric cryptographic algorithm. Consider using AES instead."
5718
from SymmetricAlgorithm symmetricAlg
5819
where not symmetricAlg.getSymmetricAlgorithmName() = ["aes", "aes128", "aes192", "aes256"]
5920
select symmetricAlg,

0 commit comments

Comments
 (0)