Skip to content

Commit 93c9910

Browse files
committed
Convert go/request-forgery sinks to MaD
1 parent f7d6815 commit 93c9910

File tree

2 files changed

+56
-10
lines changed

2 files changed

+56
-10
lines changed

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

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,33 @@
11
extensions:
2+
- addsTo:
3+
pack: codeql/go-all
4+
extensible: sinkModel
5+
data:
6+
- ["github.com/valyala/fasthttp", "", True, "Get", "", "", "Argument[1]", "request-forgery", "manual"]
7+
- ["github.com/valyala/fasthttp", "", True, "GetDeadline", "", "", "Argument[1]", "request-forgery", "manual"]
8+
- ["github.com/valyala/fasthttp", "", True, "GetTimeout", "", "", "Argument[1]", "request-forgery", "manual"]
9+
- ["github.com/valyala/fasthttp", "", True, "Post", "", "", "Argument[1]", "request-forgery", "manual"]
10+
- ["github.com/valyala/fasthttp", "", True, "Dial", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"]
11+
- ["github.com/valyala/fasthttp", "", True, "DialDualStack", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"]
12+
- ["github.com/valyala/fasthttp", "", True, "DialDualStackTimeout", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"]
13+
- ["github.com/valyala/fasthttp", "", True, "DialTimeout", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"]
14+
- ["github.com/valyala/fasthttp", "Client", True, "Get", "", "", "Argument[1]", "request-forgery", "manual"]
15+
- ["github.com/valyala/fasthttp", "Client", True, "GetDeadline", "", "", "Argument[1]", "request-forgery", "manual"]
16+
- ["github.com/valyala/fasthttp", "Client", True, "GetTimeout", "", "", "Argument[1]", "request-forgery", "manual"]
17+
- ["github.com/valyala/fasthttp", "Client", True, "Post", "", "", "Argument[1]", "request-forgery", "manual"]
18+
- ["github.com/valyala/fasthttp", "HostClient", True, "Get", "", "", "Argument[1]", "request-forgery", "manual"]
19+
- ["github.com/valyala/fasthttp", "HostClient", True, "GetDeadline", "", "", "Argument[1]", "request-forgery", "manual"]
20+
- ["github.com/valyala/fasthttp", "HostClient", True, "GetTimeout", "", "", "Argument[1]", "request-forgery", "manual"]
21+
- ["github.com/valyala/fasthttp", "HostClient", True, "Post", "", "", "Argument[1]", "request-forgery", "manual"]
22+
- ["github.com/valyala/fasthttp", "Request", True, "SetHost", "", "", "Argument[0]", "request-forgery", "manual"]
23+
- ["github.com/valyala/fasthttp", "Request", True, "SetHostBytes", "", "", "Argument[0]", "request-forgery", "manual"]
24+
- ["github.com/valyala/fasthttp", "Request", True, "SetRequestURI", "", "", "Argument[0]", "request-forgery", "manual"]
25+
- ["github.com/valyala/fasthttp", "Request", True, "SetRequestURIBytes", "", "", "Argument[0]", "request-forgery", "manual"]
26+
- ["github.com/valyala/fasthttp", "Request", True, "SetURI", "", "", "Argument[0]", "request-forgery", "manual"]
27+
- ["github.com/valyala/fasthttp", "TCPDialer", True, "Dial", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"]
28+
- ["github.com/valyala/fasthttp", "TCPDialer", True, "DialDualStack", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"]
29+
- ["github.com/valyala/fasthttp", "TCPDialer", True, "DialDualStackTimeout", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"]
30+
- ["github.com/valyala/fasthttp", "TCPDialer", True, "DialTimeout", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"]
231
- addsTo:
332
pack: codeql/go-all
433
extensible: summaryModel
@@ -8,7 +37,6 @@ extensions:
837
- ["github.com/valyala/fasthttp", "URI", False, "Update", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"]
938
- ["github.com/valyala/fasthttp", "URI", False, "UpdateBytes", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"]
1039
- ["github.com/valyala/fasthttp", "URI", False, "Parse", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"]
11-
1240
- addsTo:
1341
pack: codeql/go-all
1442
extensible: sourceModel

go/ql/lib/semmle/go/frameworks/Fasthttp.qll

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -213,13 +213,15 @@ module Fasthttp {
213213
}
214214

215215
/**
216+
* DEPRECATED: Use `RequestForgery::Sink` instead.
217+
*
216218
* A function that sends HTTP requests.
217219
*
218220
* Get* send a HTTP GET request.
219221
* Post send a HTTP POST request.
220222
* These functions first argument is a URL.
221223
*/
222-
class RequestForgerySink extends RequestForgery::Sink {
224+
deprecated class RequestForgerySink extends RequestForgery::Sink {
223225
RequestForgerySink() {
224226
exists(Function f |
225227
f.hasQualifiedName(packagePath(), ["Get", "GetDeadline", "GetTimeout", "Post"]) and
@@ -233,10 +235,12 @@ module Fasthttp {
233235
}
234236

235237
/**
238+
* DEPRECATED: Use `RequestForgery::Sink` instead.
239+
*
236240
* A function that create initial connection to a TCP address.
237241
* Following Functions only accept TCP address + Port in their first argument.
238242
*/
239-
class RequestForgerySinkDial extends RequestForgery::Sink {
243+
deprecated class RequestForgerySinkDial extends RequestForgery::Sink {
240244
RequestForgerySinkDial() {
241245
exists(Function f |
242246
f.hasQualifiedName(packagePath(),
@@ -308,15 +312,19 @@ module Fasthttp {
308312
}
309313

310314
/**
315+
* DEPRECATED
316+
*
311317
* Provide modeling for fasthttp.TCPDialer Type.
312318
*/
313-
module TcpDialer {
319+
deprecated module TcpDialer {
314320
/**
321+
* DEPRECATED: Use `RequestForgery::Sink` instead.
322+
*
315323
* A method that create initial connection to a TCP address.
316324
* Provide Methods which can be used as dangerous RequestForgery Sinks.
317325
* Following Methods only accept TCP address + Port in their first argument.
318326
*/
319-
class RequestForgerySinkDial extends RequestForgery::Sink {
327+
deprecated class RequestForgerySinkDial extends RequestForgery::Sink {
320328
RequestForgerySinkDial() {
321329
exists(Method m |
322330
m.hasQualifiedName(packagePath(), "TCPDialer",
@@ -332,16 +340,20 @@ module Fasthttp {
332340
}
333341

334342
/**
343+
* DEPRECATED
344+
*
335345
* Provide modeling for fasthttp.Client Type.
336346
*/
337-
module Client {
347+
deprecated module Client {
338348
/**
349+
* DEPRECATED: Use `RequestForgery::Sink` instead.
350+
*
339351
* A method that sends HTTP requests.
340352
* Get* send a HTTP GET request.
341353
* Post send a HTTP POST request.
342354
* these Functions first arguments is a URL.
343355
*/
344-
class RequestForgerySink extends RequestForgery::Sink {
356+
deprecated class RequestForgerySink extends RequestForgery::Sink {
345357
RequestForgerySink() {
346358
exists(Method m |
347359
m.hasQualifiedName(packagePath(), "Client", ["Get", "GetDeadline", "GetTimeout", "Post"]) and
@@ -356,16 +368,20 @@ module Fasthttp {
356368
}
357369

358370
/**
371+
* DEPRECATED
372+
*
359373
* Provide modeling for fasthttp.HostClient Type.
360374
*/
361-
module HostClient {
375+
deprecated module HostClient {
362376
/**
377+
* DEPRECATED: Use `RequestForgery::Sink` instead.
378+
*
363379
* A method that sends HTTP requests.
364380
* Get* send a HTTP GET request.
365381
* Post send a HTTP POST request.
366382
* these Functions first arguments is a URL.
367383
*/
368-
class RequestForgerySink extends RequestForgery::Sink {
384+
deprecated class RequestForgerySink extends RequestForgery::Sink {
369385
RequestForgerySink() {
370386
exists(Method m |
371387
m.hasQualifiedName(packagePath(), "HostClient",
@@ -434,12 +450,14 @@ module Fasthttp {
434450
}
435451

436452
/**
453+
* DEPRECATED: Use `RequestForgery::Sink` instead.
454+
*
437455
* A method that create the URL and Host parts of a `Request` type.
438456
*
439457
* This instance of `Request` type can be used in some functions/methods
440458
* like `func Do(req *Request, resp *Response) error` that will lead to server side request forgery vulnerability.
441459
*/
442-
class RequestForgerySink extends RequestForgery::Sink {
460+
deprecated class RequestForgerySink extends RequestForgery::Sink {
443461
RequestForgerySink() {
444462
exists(Method m |
445463
m.hasQualifiedName(packagePath(), "Request",

0 commit comments

Comments
 (0)