Skip to content

Commit b9ce1ae

Browse files
committed
Java: Convert unsafe URL opening sinks to CSV format
1 parent 716568e commit b9ce1ae

File tree

2 files changed

+10
-16
lines changed

2 files changed

+10
-16
lines changed

java/ql/src/Security/CWE/CWE-319/HttpsUrls.ql

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import java
1313
import semmle.code.java.dataflow.TaintTracking
1414
import semmle.code.java.frameworks.Networking
1515
import DataFlow::PathGraph
16+
private import semmle.code.java.dataflow.ExternalFlow
1617

1718
class HTTPString extends StringLiteral {
1819
HTTPString() {
@@ -30,26 +31,12 @@ class HTTPString extends StringLiteral {
3031
}
3132
}
3233

33-
class URLOpenMethod extends Method {
34-
URLOpenMethod() {
35-
this.getDeclaringType().getQualifiedName() = "java.net.URL" and
36-
(
37-
this.getName() = "openConnection" or
38-
this.getName() = "openStream"
39-
)
40-
}
41-
}
42-
4334
class HTTPStringToURLOpenMethodFlowConfig extends TaintTracking::Configuration {
4435
HTTPStringToURLOpenMethodFlowConfig() { this = "HttpsUrls::HTTPStringToURLOpenMethodFlowConfig" }
4536

4637
override predicate isSource(DataFlow::Node src) { src.asExpr() instanceof HTTPString }
4738

48-
override predicate isSink(DataFlow::Node sink) {
49-
exists(MethodAccess m |
50-
sink.asExpr() = m.getQualifier() and m.getMethod() instanceof URLOpenMethod
51-
)
52-
}
39+
override predicate isSink(DataFlow::Node sink) { sinkNode(sink, "open-url") }
5340

5441
override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) {
5542
exists(UrlConstructorCall u |

java/ql/src/semmle/code/java/dataflow/ExternalFlow.qll

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,14 @@ private predicate sourceModelCsv(string row) {
184184
]
185185
}
186186

187-
private predicate sinkModelCsv(string row) { none() }
187+
private predicate sinkModelCsv(string row) {
188+
row =
189+
[
190+
// Open URL
191+
"java.net;URL;false;openConnection;;;Argument[-1];open-url",
192+
"java.net;URL;false;openStream;;;Argument[-1];open-url"
193+
]
194+
}
188195

189196
private predicate summaryModelCsv(string row) {
190197
row =

0 commit comments

Comments
 (0)