File tree Expand file tree Collapse file tree 3 files changed +10
-21
lines changed
semmle/code/java/security Expand file tree Collapse file tree 3 files changed +10
-21
lines changed Original file line number Diff line number Diff line change 1212
1313import java
1414import semmle.code.java.security.SpelInjectionQuery
15+ import semmle.code.java.dataflow.DataFlow
1516import DataFlow:: PathGraph
1617
1718from DataFlow:: PathNode source , DataFlow:: PathNode sink , SpelInjectionConfig conf
Original file line number Diff line number Diff line change 11/** Provides classes to reason about SpEL injection attacks. */
22
33import java
4- import semmle.code.java.dataflow.DataFlow
5- import semmle.code.java.dataflow.ExternalFlow
6- import semmle.code.java.frameworks.spring.SpringExpression
4+ private import semmle.code.java.dataflow.DataFlow
5+ private import semmle.code.java.dataflow.ExternalFlow
6+ private import semmle.code.java.frameworks.spring.SpringExpression
77
88/** A data flow sink for unvalidated user input that is used to construct SpEL expressions. */
99abstract class SpelExpressionEvaluationSink extends DataFlow:: ExprNode { }
1010
11- private class SpelExpressionEvaluationModel extends SinkModelCsv {
12- override predicate row ( string row ) {
13- row =
14- [
15- "org.springframework.expression;Expression;true;getValue;;;Argument[-1];spel" ,
16- "org.springframework.expression;Expression;true;getValueTypeDescriptor;;;Argument[-1];spel" ,
17- "org.springframework.expression;Expression;true;getValueType;;;Argument[-1];spel" ,
18- "org.springframework.expression;Expression;true;setValue;;;Argument[-1];spel"
19- ]
20- }
21- }
22-
2311/**
2412 * A unit class for adding additional taint steps.
2513 *
Original file line number Diff line number Diff line change 11/** Provides taint tracking and dataflow configurations to be used in SpEL injection queries. */
22
33import java
4- import semmle.code.java.dataflow.DataFlow
5- import semmle.code.java.dataflow.FlowSources
6- import semmle.code.java.frameworks.spring.SpringExpression
7- import semmle.code.java.security.SpelInjection
4+ private import semmle.code.java.dataflow.FlowSources
5+ private import semmle.code.java.dataflow.TaintTracking
6+ private import semmle.code.java.frameworks.spring.SpringExpression
7+ private import semmle.code.java.security.SpelInjection
88
99/**
1010 * A taint-tracking configuration for unsafe user input
@@ -26,8 +26,8 @@ class SpelInjectionConfig extends TaintTracking::Configuration {
2626private class DefaultSpelExpressionEvaluationSink extends SpelExpressionEvaluationSink {
2727 DefaultSpelExpressionEvaluationSink ( ) {
2828 exists ( MethodAccess ma |
29- sinkNode ( this , "spel" ) and
30- this . asExpr ( ) = ma . getQualifier ( ) and
29+ ma . getMethod ( ) instanceof ExpressionEvaluationMethod and
30+ ma . getQualifier ( ) = this . asExpr ( ) and
3131 not exists ( SafeEvaluationContextFlowConfig config |
3232 config .hasFlowTo ( DataFlow:: exprNode ( ma .getArgument ( 0 ) ) )
3333 )
You can’t perform that action at this time.
0 commit comments