File tree Expand file tree Collapse file tree 2 files changed +12
-2
lines changed
java/ql/lib/semmle/code/java/security Expand file tree Collapse file tree 2 files changed +12
-2
lines changed Original file line number Diff line number Diff line change 55import java
66import semmle.code.java.dataflow.DataFlow
77private import semmle.code.java.dataflow.ExternalFlow
8+ private import semmle.code.java.security.Sanitizers
89
910/**
1011 * A data flow sink for unvalidated user input that is used in XSLT transformation.
@@ -17,6 +18,16 @@ private class DefaultXsltInjectionSink extends XsltInjectionSink {
1718 DefaultXsltInjectionSink ( ) { sinkNode ( this , "xslt-injection" ) }
1819}
1920
21+ /** A default sink representing methods susceptible to XSLT Injection attacks. */
22+ abstract class XsltInjectionSanitizer extends DataFlow:: Node { }
23+
24+ private class SimpleTypeXsltInjectionSanitizer extends XsltInjectionSanitizer instanceof SimpleTypeSanitizer
25+ { }
26+
27+ private class ExternalXsltInjectionSanitizer extends XsltInjectionSanitizer {
28+ ExternalXsltInjectionSanitizer ( ) { barrierNode ( this , "xslt-injection" ) }
29+ }
30+
2031/**
2132 * A unit class for adding additional taint steps.
2233 *
Original file line number Diff line number Diff line change @@ -5,7 +5,6 @@ import semmle.code.java.dataflow.FlowSources
55import semmle.code.java.dataflow.TaintTracking
66import semmle.code.java.security.XmlParsers
77import semmle.code.java.security.XsltInjection
8- private import semmle.code.java.security.Sanitizers
98
109/**
1110 * A taint-tracking configuration for unvalidated user input that is used in XSLT transformation.
@@ -15,7 +14,7 @@ module XsltInjectionFlowConfig implements DataFlow::ConfigSig {
1514
1615 predicate isSink ( DataFlow:: Node sink ) { sink instanceof XsltInjectionSink }
1716
18- predicate isBarrier ( DataFlow:: Node node ) { node instanceof SimpleTypeSanitizer }
17+ predicate isBarrier ( DataFlow:: Node node ) { node instanceof XsltInjectionSanitizer }
1918
2019 predicate isAdditionalFlowStep ( DataFlow:: Node node1 , DataFlow:: Node node2 ) {
2120 any ( XsltInjectionAdditionalTaintStep c ) .step ( node1 , node2 )
You can’t perform that action at this time.
0 commit comments