Skip to content

Commit a2c389c

Browse files
committed
Convert request forgery barrier guard to MaD
1 parent 05a3c31 commit a2c389c

File tree

2 files changed

+7
-19
lines changed

2 files changed

+7
-19
lines changed

java/ql/lib/ext/java.net.model.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ extensions:
3434
- ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[],ClassLoader)", "", "Argument[0]", "request-forgery", "manual"]
3535
- ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[])", "", "Argument[0]", "request-forgery", "manual"]
3636
- ["java.net", "PasswordAuthentication", False, "PasswordAuthentication", "(String,char[])", "", "Argument[0]", "credentials-username", "hq-generated"]
37+
- addsTo:
38+
pack: codeql/java-all
39+
extensible: barrierGuardModel
40+
data:
41+
- ["java.net", "URI", True, "isAbsolute", "()", "", "Argument[this]", "false", "request-forgery", "manual"]
3742
- addsTo:
3843
pack: codeql/java-all
3944
extensible: summaryModel

java/ql/lib/semmle/code/java/security/RequestForgery.qll

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -118,25 +118,8 @@ private class ContainsUrlSanitizer extends RequestForgerySanitizer {
118118
}
119119
}
120120

121-
/**
122-
* A check that the URL is relative, and therefore safe for URL redirects.
123-
*/
124-
private predicate isRelativeUrlSanitizer(Guard guard, Expr e, boolean branch) {
125-
guard =
126-
any(MethodCall call |
127-
call.getMethod().hasQualifiedName("java.net", "URI", "isAbsolute") and
128-
e = call.getQualifier() and
129-
branch = false
130-
)
131-
}
132-
133-
/**
134-
* A check that the URL is relative, and therefore safe for URL redirects.
135-
*/
136-
private class RelativeUrlSanitizer extends RequestForgerySanitizer {
137-
RelativeUrlSanitizer() {
138-
this = DataFlow::BarrierGuard<isRelativeUrlSanitizer/3>::getABarrierNode()
139-
}
121+
private class DefaultRequestForgerySanitizer extends RequestForgerySanitizer {
122+
DefaultRequestForgerySanitizer() { barrierNode(this, "request-forgery") }
140123
}
141124

142125
/**

0 commit comments

Comments
 (0)