1313
1414import java
1515import semmle.code.java.dataflow.FlowSources
16- import semmle.code.java.dataflow.TaintTracking2
1716import semmle.code.java.security.XSS
1817import semmle.code.java.frameworks.Servlets
1918import JSPLocations
@@ -106,10 +105,11 @@ class JSPTaintStep extends XssAdditionalTaintStep {
106105 exists ( EvalCall propEval , AddAttrCall addAttr |
107106 varAppearsInEvalExpr ( addAttr .getAttrName ( ) , propEval .getEvalString ( ) ) and
108107 (
109- exists ( RedirectToJsp rtj | rtj .( ControlFlowNode ) .getAPredecessor * ( ) = addAttr )
108+ exists ( RedirectToJsp rtj | rtj .getControlFlowNode ( ) .getAPredecessor * ( ) . asExpr ( ) = addAttr )
110109 implies
111110 propEval .getFile ( ) =
112- any ( RedirectToJsp rtj | rtj .( ControlFlowNode ) .getAPredecessor * ( ) = addAttr ) .getJspFile ( )
111+ any ( RedirectToJsp rtj | rtj .getControlFlowNode ( ) .getAPredecessor * ( ) .asExpr ( ) = addAttr )
112+ .getJspFile ( )
113113 )
114114 |
115115 node1 .asExpr ( ) = addAttr .getAttrValue ( ) and
@@ -129,11 +129,11 @@ class ForEachStep extends XssAdditionalTaintStep {
129129 v .getType ( ) .getName ( ) = "ForEachTag" and
130130 exists ( DataFlow:: Node ctxSrc |
131131 ContextFlow:: ContextFlow:: flow ( ctxSrc ,
132- DataFlow2 :: exprNode ( methodCallOn ( "setPageContext" , v ) .getArgument ( 0 ) ) ) and
133- ContextFlow:: ContextFlow:: flow ( ctxSrc , DataFlow2 :: exprNode ( eval .getCtxExpr ( ) ) )
132+ DataFlow :: exprNode ( methodCallOn ( "setPageContext" , v ) .getArgument ( 0 ) ) ) and
133+ ContextFlow:: ContextFlow:: flow ( ctxSrc , DataFlow :: exprNode ( eval .getCtxExpr ( ) ) )
134134 // config
135- // .hasFlow(ctxSrc, DataFlow2 ::exprNode(methodCallOn("setPageContext", v).getArgument(0))) and
136- // config.hasFlow(ctxSrc, DataFlow2 ::exprNode(eval.getCtxExpr()))
135+ // .hasFlow(ctxSrc, DataFlow ::exprNode(methodCallOn("setPageContext", v).getArgument(0))) and
136+ // config.hasFlow(ctxSrc, DataFlow ::exprNode(eval.getCtxExpr()))
137137 ) and
138138 node1 .asExpr ( ) = methodCallOn ( "setItems" , v ) .getArgument ( 0 ) and
139139 node2 .asExpr ( ) = eval and
@@ -169,7 +169,7 @@ class RedirectToJsp extends ReturnStmt {
169169 File jsp ;
170170
171171 RedirectToJsp ( ) {
172- exists ( DataFlow2 :: Node strLit , DataFlow2 :: Node retVal |
172+ exists ( DataFlow :: Node strLit , DataFlow :: Node retVal |
173173 strLit .asExpr ( ) .( StringLiteral ) .getValue ( ) .splitAt ( "/" ) + "_jsp.java" = jsp .getBaseName ( )
174174 |
175175 retVal .asExpr ( ) = this .getResult ( ) and LiteralConfig:: LiteralFlow:: flow ( strLit , retVal )
0 commit comments