Skip to content

Commit 9b2cd76

Browse files
committed
Ruby: rack - add env['QUERY_STRING'] as an http request input
1 parent b6912de commit 9b2cd76

File tree

1 file changed

+19
-0
lines changed
  • ruby/ql/lib/codeql/ruby/frameworks/rack/internal

1 file changed

+19
-0
lines changed

ruby/ql/lib/codeql/ruby/frameworks/rack/internal/App.qll

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
private import codeql.ruby.AST
66
private import codeql.ruby.ApiGraphs
7+
private import codeql.ruby.Concepts
78
private import codeql.ruby.DataFlow
89
private import codeql.ruby.typetracking.TypeTracker
910
private import Response::Private as RP
@@ -86,4 +87,22 @@ module App {
8687
/** Gets a response returned from this request handler. */
8788
RP::PotentialResponseNode getAResponse() { result = resp }
8889
}
90+
91+
/** A read of the query string via `env['QUERY_STRING']`. */
92+
private class EnvQueryStringRead extends Http::Server::RequestInputAccess::Range {
93+
EnvQueryStringRead() {
94+
exists(RequestHandler handler, DataFlow::ParameterNode env, ConstantValue key |
95+
handler.getEnv() = env
96+
|
97+
this = env.getAnElementRead(key) and
98+
key.isStringlikeValue("QUERY_STRING")
99+
)
100+
}
101+
102+
override string getSourceType() { result = "Rack env" }
103+
104+
override Http::Server::RequestInputKind getKind() {
105+
result = Http::Server::parameterInputKind()
106+
}
107+
}
89108
}

0 commit comments

Comments
 (0)