Skip to content

Commit f7d6815

Browse files
committed
Allow MaD sinks for go/request-forgery
Request forgery sinks which have `getRequest` different from the sink itself cannot be modeled using models-as-data.
1 parent c5da43e commit f7d6815

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

go/ql/lib/semmle/go/security/RequestForgeryCustomizations.qll

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import SafeUrlFlowCustomizations
88
import semmle.go.dataflow.barrierguardutil.RedirectCheckBarrierGuard
99
import semmle.go.dataflow.barrierguardutil.RegexpCheck
1010
import semmle.go.dataflow.barrierguardutil.UrlCheck
11+
import semmle.go.dataflow.ExternalFlow
1112

1213
/** Provides classes and predicates for the request forgery query. */
1314
module RequestForgery {
@@ -42,6 +43,22 @@ module RequestForgery {
4243
*/
4344
private class ThreatModelFlowAsSource extends Source instanceof ThreatModelFlowSource { }
4445

46+
private class DefaultRequestForgerySink extends Sink {
47+
string kind;
48+
49+
DefaultRequestForgerySink() {
50+
exists(string modelKind | sinkNode(this, modelKind) |
51+
modelKind = "request-forgery" and kind = "URL"
52+
or
53+
modelKind = "request-forgery[" + kind + "]"
54+
)
55+
}
56+
57+
override DataFlow::Node getARequest() { result = this }
58+
59+
override string getKind() { result = kind }
60+
}
61+
4562
/**
4663
* The URL of an HTTP request, viewed as a sink for request forgery.
4764
*/

shared/mad/codeql/mad/ModelValidation.qll

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ module KindValidation<KindValidationConfigSig Config> {
5252
// Java-only currently, but may be shared in the future
5353
"regex-use%",
5454
// Swift-only currently, but may be shared in the future
55-
"%string-%length", "weak-hash-input-%"
55+
"%string-%length", "weak-hash-input-%",
56+
// Go-only currently, but may be shared in the future
57+
"request-forgery%"
5658
])
5759
}
5860
}

0 commit comments

Comments
 (0)