Skip to content

Commit c03ce2f

Browse files
committed
C#: Re-factor HardCodedSymmetricEncryptionKey to use the new API.
1 parent 5278bbc commit c03ce2f

File tree

2 files changed

+33
-3
lines changed

2 files changed

+33
-3
lines changed

csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ module HardcodedSymmetricEncryptionKey {
6262
}
6363

6464
/**
65+
* DEPRECATED: Use `HardCodedSymmetricEncryption` instead.
66+
*
6567
* A taint-tracking configuration for uncontrolled data in path expression vulnerabilities.
6668
*/
6769
class TaintTrackingConfiguration extends TaintTracking::Configuration {
@@ -85,4 +87,32 @@ module HardcodedSymmetricEncryptionKey {
8587
)
8688
}
8789
}
90+
91+
/**
92+
* A taint-tracking configuration for uncontrolled data in path expression vulnerabilities.
93+
*/
94+
private module HardCodedSymmetricEncryptionConfig implements DataFlow::ConfigSig {
95+
predicate isSource(DataFlow::Node source) { source instanceof Source }
96+
97+
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
98+
99+
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
100+
101+
/**
102+
* Since `CryptographicBuffer` uses native code inside, taint tracking doesn't pass through it.
103+
* Need to create an additional custom step.
104+
*/
105+
predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) {
106+
exists(MethodCall mc, CryptographicBuffer c |
107+
pred.asExpr() = mc.getAnArgument() and
108+
mc.getTarget() = c.getAMethod() and
109+
succ.asExpr() = mc
110+
)
111+
}
112+
}
113+
114+
/**
115+
* A taint-tracking module for uncontrolled data in path expression vulnerabilities.
116+
*/
117+
module HardCodedSymmetricEncryption = TaintTracking::Global<HardCodedSymmetricEncryptionConfig>;
88118
}

csharp/ql/src/Security Features/CWE-321/HardcodedSymmetricEncryptionKey.ql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515

1616
import csharp
1717
import semmle.code.csharp.security.cryptography.HardcodedSymmetricEncryptionKey::HardcodedSymmetricEncryptionKey
18-
import DataFlow::PathGraph
18+
import HardCodedSymmetricEncryption::PathGraph
1919

20-
from TaintTrackingConfiguration c, DataFlow::PathNode source, DataFlow::PathNode sink
21-
where c.hasFlowPath(source, sink)
20+
from HardCodedSymmetricEncryption::PathNode source, HardCodedSymmetricEncryption::PathNode sink
21+
where HardCodedSymmetricEncryption::flowPath(source, sink)
2222
select sink.getNode(), source, sink,
2323
"Hard-coded symmetric $@ is used in symmetric algorithm in " +
2424
sink.getNode().(Sink).getDescription() + ".", source.getNode(), "key"

0 commit comments

Comments
 (0)