Skip to content

Commit 9aba923

Browse files
committed
lift XssSink check to InformationLeakSink
1 parent 970b4e7 commit 9aba923

File tree

2 files changed

+7
-10
lines changed

2 files changed

+7
-10
lines changed

java/ql/src/Security/CWE/CWE-209/StackTraceExposure.ql

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import java
1616
import semmle.code.java.dataflow.DataFlow
1717
import semmle.code.java.dataflow.TaintTracking
18-
import semmle.code.java.security.XSS
1918
import semmle.code.java.security.InformationLeak
2019

2120
/**
@@ -91,10 +90,7 @@ class StackTraceStringToHTTPResponseSinkFlowConfig extends TaintTracking::Config
9190

9291
override predicate isSource(DataFlow::Node src) { stackTraceExpr(_, src.asExpr()) }
9392

94-
override predicate isSink(DataFlow::Node sink) {
95-
sink instanceof XssSink or
96-
sink instanceof InformationLeakSink
97-
}
93+
override predicate isSink(DataFlow::Node sink) { sink instanceof InformationLeakSink }
9894
}
9995

10096
/**
@@ -134,10 +130,7 @@ class GetMessageFlowSourceToHTTPResponseSinkFlowConfig extends TaintTracking::Co
134130

135131
override predicate isSource(DataFlow::Node src) { src.asExpr() instanceof GetMessageFlowSource }
136132

137-
override predicate isSink(DataFlow::Node sink) {
138-
sink instanceof XssSink or
139-
sink instanceof InformationLeakSink
140-
}
133+
override predicate isSink(DataFlow::Node sink) { sink instanceof InformationLeakSink }
141134
}
142135

143136
/**

java/ql/src/semmle/code/java/security/InformationLeak.qll

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java
44
import semmle.code.java.dataflow.DataFlow
55
import semmle.code.java.dataflow.ExternalFlow
6+
import semmle.code.java.security.XSS
67

78
/** CSV sink models representing methods not susceptible to XSS but outputing to an HTTP response body. */
89
private class DefaultInformationLeakSinkModel extends SinkModelCsv {
@@ -19,5 +20,8 @@ abstract class InformationLeakSink extends DataFlow::Node { }
1920

2021
/** A default sink representing methods outputing data to an HTTP response. */
2122
private class DefaultInformationLeakSink extends InformationLeakSink {
22-
DefaultInformationLeakSink() { sinkNode(this, "information-leak") }
23+
DefaultInformationLeakSink() {
24+
sinkNode(this, "information-leak") or
25+
this instanceof XssSink
26+
}
2327
}

0 commit comments

Comments
 (0)