Skip to content

Commit 35beadc

Browse files
committed
Java: Refactor SensitiveInfoLog.ql
1 parent 4408482 commit 35beadc

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,12 @@ private class TypeType extends RefType {
2525
}
2626
}
2727

28-
/** A data-flow configuration for identifying potentially-sensitive data flowing to a log output. */
29-
class SensitiveLoggerConfiguration extends TaintTracking::Configuration {
28+
/**
29+
* DEPRECATED: Use `SensitiveLoggerConfiguration` module instead.
30+
*
31+
* A data-flow configuration for identifying potentially-sensitive data flowing to a log output.
32+
*/
33+
deprecated class SensitiveLoggerConfiguration extends TaintTracking::Configuration {
3034
SensitiveLoggerConfiguration() { this = "SensitiveLoggerConfiguration" }
3135

3236
override predicate isSource(DataFlow::Node source) { source.asExpr() instanceof CredentialExpr }
@@ -43,3 +47,22 @@ class SensitiveLoggerConfiguration extends TaintTracking::Configuration {
4347

4448
override predicate isSanitizerIn(Node node) { this.isSource(node) }
4549
}
50+
51+
/** A data-flow configuration for identifying potentially-sensitive data flowing to a log output. */
52+
module SensitiveLoggerConfiguration implements DataFlow::ConfigSig {
53+
predicate isSource(DataFlow::Node source) { source.asExpr() instanceof CredentialExpr }
54+
55+
predicate isSink(DataFlow::Node sink) { sinkNode(sink, "logging") }
56+
57+
predicate isBarrier(DataFlow::Node sanitizer) {
58+
sanitizer.asExpr() instanceof LiveLiteral or
59+
sanitizer.getType() instanceof PrimitiveType or
60+
sanitizer.getType() instanceof BoxedType or
61+
sanitizer.getType() instanceof NumberType or
62+
sanitizer.getType() instanceof TypeType
63+
}
64+
65+
predicate isBarrierIn(Node node) { isSource(node) }
66+
}
67+
68+
module SensitiveLoggerFlow = TaintTracking::Make<SensitiveLoggerConfiguration>;

java/ql/src/Security/CWE/CWE-532/SensitiveInfoLog.ql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313

1414
import java
1515
import semmle.code.java.security.SensitiveLoggingQuery
16-
import PathGraph
16+
import SensitiveLoggerFlow::PathGraph
1717

18-
from SensitiveLoggerConfiguration cfg, DataFlow::PathNode source, DataFlow::PathNode sink
19-
where cfg.hasFlowPath(source, sink)
18+
from SensitiveLoggerFlow::PathNode source, SensitiveLoggerFlow::PathNode sink
19+
where SensitiveLoggerFlow::hasFlowPath(source, sink)
2020
select sink.getNode(), source, sink, "This $@ is written to a log file.", source.getNode(),
2121
"potentially sensitive information"

0 commit comments

Comments
 (0)