Skip to content

Commit a381aa4

Browse files
committed
Swift: Use DataFlow::ConfigSig in InsufficientHashIterations.ql
1 parent 60f033f commit a381aa4

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

swift/ql/src/queries/Security/CWE-916/InsufficientHashIterations.ql

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import swift
1414
import codeql.swift.dataflow.DataFlow
1515
import codeql.swift.dataflow.TaintTracking
16-
import DataFlow::PathGraph
16+
import InsufficientHashIterationsFlow::PathGraph
1717

1818
/**
1919
* An `Expr` that is used to initialize a password-based encryption key.
@@ -46,21 +46,19 @@ class InsufficientHashIterationsSink extends Expr {
4646
* A dataflow configuration from the hash iterations source to expressions that use
4747
* it to initialize hash functions.
4848
*/
49-
class InsufficientHashIterationsConfig extends TaintTracking::Configuration {
50-
InsufficientHashIterationsConfig() { this = "InsufficientHashIterationsConfig" }
49+
module InsufficientHashIterationsConfig implements DataFlow::ConfigSig {
50+
predicate isSource(DataFlow::Node node) { node.asExpr() instanceof IterationsSource }
5151

52-
override predicate isSource(DataFlow::Node node) { node.asExpr() instanceof IterationsSource }
53-
54-
override predicate isSink(DataFlow::Node node) {
55-
node.asExpr() instanceof InsufficientHashIterationsSink
56-
}
52+
predicate isSink(DataFlow::Node node) { node.asExpr() instanceof InsufficientHashIterationsSink }
5753
}
5854

55+
module InsufficientHashIterationsFlow = TaintTracking::Global<InsufficientHashIterationsConfig>;
56+
5957
// The query itself
6058
from
61-
InsufficientHashIterationsConfig config, DataFlow::PathNode sourceNode,
62-
DataFlow::PathNode sinkNode
63-
where config.hasFlowPath(sourceNode, sinkNode)
59+
InsufficientHashIterationsFlow::PathNode sourceNode,
60+
InsufficientHashIterationsFlow::PathNode sinkNode
61+
where InsufficientHashIterationsFlow::flowPath(sourceNode, sinkNode)
6462
select sinkNode.getNode(), sourceNode, sinkNode,
6563
"The value '" + sourceNode.getNode().toString() +
6664
"' is an insufficient number of iterations for secure password hashing."

0 commit comments

Comments
 (0)