|
13 | 13 | import swift
|
14 | 14 | import codeql.swift.dataflow.DataFlow
|
15 | 15 | import codeql.swift.dataflow.TaintTracking
|
16 |
| -import DataFlow::PathGraph |
| 16 | +import HardcodedKeyFlow::PathGraph |
17 | 17 |
|
18 | 18 | /**
|
19 | 19 | * An `Expr` that is used to initialize a key.
|
@@ -62,17 +62,17 @@ class EncryptionKeySink extends Expr {
|
62 | 62 | * A taint configuration from the key source to expressions that use
|
63 | 63 | * it to initialize a cipher.
|
64 | 64 | */
|
65 |
| -class HardcodedKeyConfig extends TaintTracking::Configuration { |
66 |
| - HardcodedKeyConfig() { this = "HardcodedKeyConfig" } |
| 65 | +module HardcodedKeyConfig implements DataFlow::ConfigSig { |
| 66 | + predicate isSource(DataFlow::Node node) { node.asExpr() instanceof KeySource } |
67 | 67 |
|
68 |
| - override predicate isSource(DataFlow::Node node) { node.asExpr() instanceof KeySource } |
69 |
| - |
70 |
| - override predicate isSink(DataFlow::Node node) { node.asExpr() instanceof EncryptionKeySink } |
| 68 | + predicate isSink(DataFlow::Node node) { node.asExpr() instanceof EncryptionKeySink } |
71 | 69 | }
|
72 | 70 |
|
| 71 | +module HardcodedKeyFlow = TaintTracking::Global<HardcodedKeyConfig>; |
| 72 | + |
73 | 73 | // The query itself
|
74 |
| -from HardcodedKeyConfig config, DataFlow::PathNode sourceNode, DataFlow::PathNode sinkNode |
75 |
| -where config.hasFlowPath(sourceNode, sinkNode) |
| 74 | +from HardcodedKeyFlow::PathNode sourceNode, HardcodedKeyFlow::PathNode sinkNode |
| 75 | +where HardcodedKeyFlow::flowPath(sourceNode, sinkNode) |
76 | 76 | select sinkNode.getNode(), sourceNode, sinkNode,
|
77 | 77 | "The key '" + sinkNode.getNode().toString() +
|
78 | 78 | "' has been initialized with hard-coded values from $@.", sourceNode,
|
|
0 commit comments