Skip to content

Commit 0dfdee7

Browse files
authored
Merge pull request #17177 from owen-mc/go/mad/convert-sink-3
Go: convert regex-use, url-redirection sinks to use models-as-data
2 parents c981103 + 1df81db commit 0dfdee7

28 files changed

+228
-221
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
extensions:
2+
- addsTo:
3+
pack: codeql/go-all
4+
extensible: packageGrouping
5+
data:
6+
- ["clever-go", "clevergo.tech/clevergo"]
7+
- ["clever-go", "github.com/clevergo/clevergo"]
8+
- addsTo:
9+
pack: codeql/go-all
10+
extensible: sinkModel
11+
data:
12+
- ["group:clever-go", "Context", True, "Redirect", "", "", "Argument[1]", "url-redirection[receiver]", "manual"]

go/ql/lib/ext/github.com.beego.beego.server.web.context.model.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ extensions:
1010
pack: codeql/go-all
1111
extensible: sinkModel
1212
data:
13+
# path-injection
1314
- ["group:beego-context", "BeegoOutput", False, "Download", "", "", "Argument[0]", "path-injection", "manual"]
15+
# url-redirection
16+
- ["group:beego-context", "Context", True, "Redirect", "", "", "Argument[1]", "url-redirection", "manual"]
1417
- addsTo:
1518
pack: codeql/go-all
1619
extensible: summaryModel

go/ql/lib/ext/github.com.beego.beego.server.web.model.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ extensions:
2727
- ["group:beego", "Controller", False, "SaveToFile", "", "", "Argument[1]", "path-injection", "manual"]
2828
- ["group:beego", "Controller", False, "SaveToFileWithBuffer", "", "", "Argument[1]", "path-injection", "manual"] # only exists in v2
2929
- ["group:beego", "FileSystem", False, "Open", "", "", "Argument[0]", "path-injection", "manual"]
30+
# url-redirection
31+
- ["group:beego", "Controller", True, "Redirect", "", "", "Argument[0]", "url-redirection", "manual"]
3032
- addsTo:
3133
pack: codeql/go-all
3234
extensible: summaryModel

go/ql/lib/ext/github.com.gofiber.fiber.model.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ extensions:
33
pack: codeql/go-all
44
extensible: sinkModel
55
data:
6+
# path-injection
67
- ["github.com/gofiber/fiber", "Ctx", False, "SendFile", "", "", "Argument[0]", "path-injection", "manual"]
78
- ["github.com/gofiber/fiber", "Ctx", False, "Download", "", "", "Argument[0]", "path-injection", "manual"]
89
- ["github.com/gofiber/fiber", "Ctx", False, "SaveFile", "", "", "Argument[1]", "path-injection", "manual"]
910
- ["github.com/gofiber/fiber", "Ctx", False, "SaveFileToStorage", "", "", "Argument[1]", "path-injection", "manual"] # does not exist in v1
11+
# url-redirection
12+
- ["github.com/gofiber/fiber", "Ctx", True, "Redirect", "", "", "Argument[0]", "url-redirection[receiver]", "manual"]

go/ql/lib/ext/github.com.labstack.echo.model.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ extensions:
33
pack: codeql/go-all
44
extensible: sinkModel
55
data:
6+
# path-injection
67
- ["github.com/labstack/echo", "Context", False, "Attachment", "", "", "Argument[0]", "path-injection", "manual"]
78
- ["github.com/labstack/echo", "Context", False, "File", "", "", "Argument[0]", "path-injection", "manual"]
9+
# url-redirection
10+
- ["github.com/labstack/echo", "Context", True, "Redirect", "", "", "Argument[1]", "url-redirection", "manual"]
811
- addsTo:
912
pack: codeql/go-all
1013
extensible: summaryModel

go/ql/lib/ext/github.com.revel.revel.model.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ extensions:
55
data:
66
- ["revel", "github.com/revel/revel"]
77
- ["revel", "github.com/robfig/revel"]
8+
- addsTo:
9+
pack: codeql/go-all
10+
extensible: sinkModel
11+
data:
12+
- ["group:revel", "Controller", True, "Redirect", "", "", "Argument[0]", "url-redirection", "manual"] # It is currently assumed that a tainted `value` in `Redirect(url, value)`, which calls `Sprintf(url, value)` internally, cannot lead to an open redirect vulnerability.
813
- addsTo:
914
pack: codeql/go-all
1015
extensible: sourceModel

go/ql/lib/ext/github.com.valyala.fasthttp.model.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ extensions:
3838
- ["github.com/valyala/fasthttp", "RequestCtx", False, "SendFile", "", "", "Argument[0]", "path-injection", "manual"]
3939
- ["github.com/valyala/fasthttp", "RequestCtx", False, "SendFileBytes", "", "", "Argument[0]", "path-injection", "manual"]
4040
- ["github.com/valyala/fasthttp", "Response", False, "SendFile", "", "", "Argument[0]", "path-injection", "manual"]
41+
# url-redirection
42+
- ["github.com/valyala/fasthttp", "RequestCtx", True, "Redirect", "", "", "Argument[0]", "url-redirection", "manual"]
43+
- ["github.com/valyala/fasthttp", "RequestCtx", True, "RedirectBytes", "", "", "Argument[0]", "url-redirection", "manual"]
4144
- addsTo:
4245
pack: codeql/go-all
4346
extensible: summaryModel

go/ql/lib/ext/gopkg.in.macaron.model.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
extensions:
2+
- addsTo:
3+
pack: codeql/go-all
4+
extensible: sinkModel
5+
data:
6+
- ["gopkg.in/macaron", "Context", True, "Redirect", "", "", "Argument[0]", "url-redirection[receiver]", "manual"]
27
- addsTo:
38
pack: codeql/go-all
49
extensible: sourceModel

go/ql/lib/ext/net.http.model.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ extensions:
33
pack: codeql/go-all
44
extensible: sinkModel
55
data:
6+
# path-injection
67
- ["net/http", "", False, "ServeFile", "", "", "Argument[2]", "path-injection", "manual"]
8+
# url-redirection
9+
- ["net/http", "", True, "Redirect", "", "", "Argument[2]", "url-redirection[0]", "manual"]
710
- addsTo:
811
pack: codeql/go-all
912
extensible: summaryModel

go/ql/lib/ext/regexp.model.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,18 @@
11
extensions:
2+
- addsTo:
3+
pack: codeql/go-all
4+
extensible: sinkModel
5+
data:
6+
- ["regexp", "", True, "Compile", "", "", "Argument[0]", "regex-use[c]", "manual"]
7+
- ["regexp", "", True, "CompilePOSIX", "", "", "Argument[0]", "regex-use[c]", "manual"]
8+
- ["regexp", "", True, "MustCompile", "", "", "Argument[0]", "regex-use[c]", "manual"]
9+
- ["regexp", "", True, "MustCompilePOSIX", "", "", "Argument[0]", "regex-use[c]", "manual"]
10+
- ["regexp", "", True, "Match", "", "", "Argument[0]", "regex-use[1]", "manual"]
11+
- ["regexp", "", True, "MatchReader", "", "", "Argument[0]", "regex-use[1]", "manual"]
12+
- ["regexp", "", True, "MatchString", "", "", "Argument[0]", "regex-use[1]", "manual"]
13+
- ["regexp", "Regexp", True, "Match", "", "", "Argument[receiver]", "regex-use[0]", "manual"]
14+
- ["regexp", "Regexp", True, "MatchReader", "", "", "Argument[receiver]", "regex-use[0]", "manual"]
15+
- ["regexp", "Regexp", True, "MatchString", "", "", "Argument[receiver]", "regex-use[0]", "manual"]
216
- addsTo:
317
pack: codeql/go-all
418
extensible: summaryModel

0 commit comments

Comments
 (0)