Skip to content

Commit 1d12bd1

Browse files
committed
Share SpringUrlRedirect library
1 parent b69eba9 commit 1d12bd1

File tree

4 files changed

+13
-117
lines changed

4 files changed

+13
-117
lines changed

java/ql/src/experimental/Security/CWE/CWE-601/SpringUrlRedirect.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
*/
1212

1313
import java
14-
import SpringUrlRedirect
14+
import experimental.semmle.code.java.security.SpringUrlRedirect
1515
import semmle.code.java.dataflow.FlowSources
1616
import semmle.code.java.controlflow.Guards
1717
import DataFlow::PathGraph

java/ql/src/experimental/Security/CWE/CWE-625/PermissiveDotRegex.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
*/
1313

1414
import java
15+
import experimental.semmle.code.java.security.SpringUrlRedirect
1516
import semmle.code.java.controlflow.Guards
1617
import semmle.code.java.dataflow.ExternalFlow
1718
import semmle.code.java.dataflow.FlowSources
1819
import semmle.code.java.security.UrlRedirect
1920
import DataFlow::PathGraph
2021
import Regex
21-
import SpringUrlRedirect
2222

2323
/** Source model of remote flow source with servlets. */
2424
private class GetServletUriSource extends SourceModelCsv {

java/ql/src/experimental/Security/CWE/CWE-625/SpringUrlRedirect.qll

Lines changed: 0 additions & 109 deletions
This file was deleted.

java/ql/src/experimental/Security/CWE/CWE-601/SpringUrlRedirect.qll renamed to java/ql/src/experimental/semmle/code/java/security/SpringUrlRedirect.qll

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
import java
2-
import DataFlow
3-
import semmle.code.java.dataflow.FlowSources
4-
import semmle.code.java.dataflow.DataFlow2
5-
import semmle.code.java.dataflow.TaintTracking
6-
import semmle.code.java.frameworks.spring.SpringController
1+
/** Provides classes and predicates related to Spring URL redirect. */
2+
3+
private import java
4+
private import semmle.code.java.dataflow.FlowSources
75

86
/**
97
* A concatenate expression using the string `redirect:` or `ajaxredirect:` or `forward:` on the left.
@@ -42,6 +40,13 @@ abstract class SpringUrlRedirectSink extends DataFlow::Node { }
4240
*/
4341
private class SpringViewUrlRedirectSink extends SpringUrlRedirectSink {
4442
SpringViewUrlRedirectSink() {
43+
// Hardcoded redirect such as "redirect:login"
44+
this.asExpr()
45+
.(CompileTimeConstantExpr)
46+
.getStringValue()
47+
.indexOf(["redirect:", "ajaxredirect:", "forward:"]) = 0 and
48+
any(SpringRequestMappingMethod sqmm).polyCalls*(this.getEnclosingCallable())
49+
or
4550
exists(RedirectBuilderExpr rbe |
4651
rbe.getRightOperand() = this.asExpr() and
4752
any(SpringRequestMappingMethod sqmm).polyCalls*(this.getEnclosingCallable())

0 commit comments

Comments
 (0)