Skip to content

Commit 8662d73

Browse files
committed
Allow MaD sanitizers for java/non-https-url
1 parent 92e4999 commit 8662d73

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ private import semmle.code.java.dataflow.ExternalFlow
88
private import semmle.code.java.dataflow.TaintTracking
99
private import semmle.code.java.frameworks.ApacheHttp
1010
private import semmle.code.java.frameworks.Networking
11+
private import semmle.code.java.security.Sanitizers
1112

1213
/**
1314
* String of HTTP URLs not in private domains.
@@ -36,6 +37,17 @@ private class DefaultUrlOpenSink extends UrlOpenSink {
3637
DefaultUrlOpenSink() { sinkNode(this, "request-forgery") }
3738
}
3839

40+
/**
41+
* A sanitizer to URL opening.
42+
*/
43+
abstract class UrlOpenSanitizer extends DataFlow::Node { }
44+
45+
private class SimpleTypeUrlOpenSanitizer extends UrlOpenSanitizer instanceof SimpleTypeSanitizer { }
46+
47+
private class ExternalUrlOpenSanitizer extends UrlOpenSanitizer {
48+
ExternalUrlOpenSanitizer() { barrierNode(this, "request-forgery") }
49+
}
50+
3951
/**
4052
* A unit class for adding additional taint steps.
4153
*

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import java
44
import semmle.code.java.dataflow.TaintTracking
55
import semmle.code.java.frameworks.Networking
66
import semmle.code.java.security.HttpsUrls
7-
private import semmle.code.java.security.Sanitizers
87

98
/**
109
* A taint tracking configuration for HTTP connections.
@@ -18,7 +17,7 @@ module HttpStringToUrlOpenMethodFlowConfig implements DataFlow::ConfigSig {
1817
any(HttpUrlsAdditionalTaintStep c).step(node1, node2)
1918
}
2019

21-
predicate isBarrier(DataFlow::Node node) { node instanceof SimpleTypeSanitizer }
20+
predicate isBarrier(DataFlow::Node node) { node instanceof UrlOpenSanitizer }
2221

2322
predicate observeDiffInformedIncrementalMode() { any() }
2423
}

0 commit comments

Comments
 (0)