File tree Expand file tree Collapse file tree 2 files changed +11
-2
lines changed
java/ql/lib/semmle/code/java/security Expand file tree Collapse file tree 2 files changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ private import semmle.code.java.dataflow.DataFlow
77private import semmle.code.java.dataflow.FlowSinks
88private import semmle.code.java.dataflow.ExternalFlow
99private import semmle.code.java.frameworks.MyBatis
10+ private import semmle.code.java.security.Sanitizers
1011
1112/**
1213 * A data flow sink for unvalidated user input that is used in OGNL EL evaluation.
@@ -15,6 +16,8 @@ private import semmle.code.java.frameworks.MyBatis
1516 */
1617abstract class OgnlInjectionSink extends ApiSinkNode { }
1718
19+ abstract class OgnlInjectionSanitizer extends DataFlow:: Node { }
20+
1821/**
1922 * A unit class for adding additional taint steps.
2023 *
@@ -32,6 +35,13 @@ private class DefaultOgnlInjectionSink extends OgnlInjectionSink {
3235 DefaultOgnlInjectionSink ( ) { sinkNode ( this , "ognl-injection" ) }
3336}
3437
38+ private class SimpleTypeOgnlInjectionSanitizer extends OgnlInjectionSanitizer instanceof SimpleTypeSanitizer
39+ { }
40+
41+ private class ExternalOgnlInjectionSanitizer extends OgnlInjectionSanitizer {
42+ ExternalOgnlInjectionSanitizer ( ) { barrierNode ( this , "ognl-injection" ) }
43+ }
44+
3545/** The class `org.apache.commons.ognl.Ognl` or `ognl.Ognl`. */
3646private class TypeOgnl extends Class {
3747 TypeOgnl ( ) { this .hasQualifiedName ( [ "org.apache.commons.ognl" , "ognl" ] , "Ognl" ) }
Original file line number Diff line number Diff line change 33import java
44import semmle.code.java.dataflow.FlowSources
55import semmle.code.java.security.OgnlInjection
6- private import semmle.code.java.security.Sanitizers
76
87/**
98 * A taint-tracking configuration for unvalidated user input that is used in OGNL EL evaluation.
@@ -13,7 +12,7 @@ module OgnlInjectionFlowConfig implements DataFlow::ConfigSig {
1312
1413 predicate isSink ( DataFlow:: Node sink ) { sink instanceof OgnlInjectionSink }
1514
16- predicate isBarrier ( DataFlow:: Node node ) { node instanceof SimpleTypeSanitizer }
15+ predicate isBarrier ( DataFlow:: Node node ) { node instanceof OgnlInjectionSanitizer }
1716
1817 predicate isAdditionalFlowStep ( DataFlow:: Node node1 , DataFlow:: Node node2 ) {
1918 any ( OgnlInjectionAdditionalTaintStep c ) .step ( node1 , node2 )
You can’t perform that action at this time.
0 commit comments