Skip to content

Commit 271d50b

Browse files
committed
Refactor Security.CWE.CWE-611 Xxe queries
1 parent 80012b1 commit 271d50b

File tree

4 files changed

+36
-8
lines changed

4 files changed

+36
-8
lines changed

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ private import semmle.code.java.security.XxeQuery
88
/**
99
* A taint-tracking configuration for unvalidated local user input that is used in XML external entity expansion.
1010
*/
11-
class XxeLocalConfig extends TaintTracking::Configuration {
11+
deprecated class XxeLocalConfig extends TaintTracking::Configuration {
1212
XxeLocalConfig() { this = "XxeLocalConfig" }
1313

1414
override predicate isSource(DataFlow::Node src) { src instanceof LocalUserInput }
@@ -21,3 +21,17 @@ class XxeLocalConfig extends TaintTracking::Configuration {
2121
any(XxeAdditionalTaintStep s).step(n1, n2)
2222
}
2323
}
24+
25+
private module XxeLocalConfig implements DataFlow::ConfigSig {
26+
predicate isSource(DataFlow::Node src) { src instanceof LocalUserInput }
27+
28+
predicate isSink(DataFlow::Node sink) { sink instanceof XxeSink }
29+
30+
predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof XxeSanitizer }
31+
32+
predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) {
33+
any(XxeAdditionalTaintStep s).step(n1, n2)
34+
}
35+
}
36+
37+
module XxeLocalFlow = TaintTracking::Make<XxeLocalConfig>;

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ private import semmle.code.java.security.XxeQuery
88
/**
99
* A taint-tracking configuration for unvalidated remote user input that is used in XML external entity expansion.
1010
*/
11-
class XxeConfig extends TaintTracking::Configuration {
11+
deprecated class XxeConfig extends TaintTracking::Configuration {
1212
XxeConfig() { this = "XxeConfig" }
1313

1414
override predicate isSource(DataFlow::Node src) { src instanceof RemoteFlowSource }
@@ -21,3 +21,17 @@ class XxeConfig extends TaintTracking::Configuration {
2121
any(XxeAdditionalTaintStep s).step(n1, n2)
2222
}
2323
}
24+
25+
private module XxeConfig implements DataFlow::ConfigSig {
26+
predicate isSource(DataFlow::Node src) { src instanceof RemoteFlowSource }
27+
28+
predicate isSink(DataFlow::Node sink) { sink instanceof XxeSink }
29+
30+
predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof XxeSanitizer }
31+
32+
predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) {
33+
any(XxeAdditionalTaintStep s).step(n1, n2)
34+
}
35+
}
36+
37+
module XxeFlow = TaintTracking::Make<XxeConfig>;

java/ql/src/Security/CWE/CWE-611/XXE.ql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
import java
1717
import semmle.code.java.dataflow.DataFlow
1818
import semmle.code.java.security.XxeRemoteQuery
19-
import DataFlow::PathGraph
19+
import XxeFlow::PathGraph
2020

21-
from DataFlow::PathNode source, DataFlow::PathNode sink, XxeConfig conf
22-
where conf.hasFlowPath(source, sink)
21+
from XxeFlow::PathNode source, XxeFlow::PathNode sink
22+
where XxeFlow::hasFlowPath(source, sink)
2323
select sink.getNode(), source, sink,
2424
"XML parsing depends on a $@ without guarding against external entity expansion.",
2525
source.getNode(), "user-provided value"

java/ql/src/Security/CWE/CWE-611/XXELocal.ql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
import java
1717
import semmle.code.java.dataflow.DataFlow
1818
import semmle.code.java.security.XxeLocalQuery
19-
import DataFlow::PathGraph
19+
import XxeLocalFlow::PathGraph
2020

21-
from DataFlow::PathNode source, DataFlow::PathNode sink, XxeLocalConfig conf
22-
where conf.hasFlowPath(source, sink)
21+
from XxeLocalFlow::PathNode source, XxeLocalFlow::PathNode sink
22+
where XxeLocalFlow::hasFlowPath(source, sink)
2323
select sink.getNode(), source, sink,
2424
"XML parsing depends on a $@ without guarding against external entity expansion.",
2525
source.getNode(), "user-provided value"

0 commit comments

Comments
 (0)