Skip to content

Commit 07e0bd3

Browse files
authored
Merge pull request #10083 from aschackmull/java/sensitivelog-barrier
Java: Add some type-based sanitizers to SensitiveInfoLog.ql.
2 parents 70ec709 + 37e5f04 commit 07e0bd3

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ class CredentialExpr extends Expr {
1717
}
1818
}
1919

20+
/** An instantiation of a (reflexive, transitive) subtype of `java.lang.reflect.Type`. */
21+
private class TypeType extends RefType {
22+
pragma[nomagic]
23+
TypeType() {
24+
this.getSourceDeclaration().getASourceSupertype*().hasQualifiedName("java.lang.reflect", "Type")
25+
}
26+
}
27+
2028
/** A data-flow configuration for identifying potentially-sensitive data flowing to a log output. */
2129
class SensitiveLoggerConfiguration extends TaintTracking::Configuration {
2230
SensitiveLoggerConfiguration() { this = "SensitiveLoggerConfiguration" }
@@ -26,7 +34,11 @@ class SensitiveLoggerConfiguration extends TaintTracking::Configuration {
2634
override predicate isSink(DataFlow::Node sink) { sinkNode(sink, "logging") }
2735

2836
override predicate isSanitizer(DataFlow::Node sanitizer) {
29-
sanitizer.asExpr() instanceof LiveLiteral
37+
sanitizer.asExpr() instanceof LiveLiteral or
38+
sanitizer.getType() instanceof PrimitiveType or
39+
sanitizer.getType() instanceof BoxedType or
40+
sanitizer.getType() instanceof NumberType or
41+
sanitizer.getType() instanceof TypeType
3042
}
3143

3244
override predicate isSanitizerIn(Node node) { isSource(node) }
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: minorAnalysis
3+
---
4+
* Improved sanitizers for `java/sensitive-log`, which removes some false positives and improves performance a bit.

0 commit comments

Comments
 (0)