mirror of
https://github.com/github/codeql.git
synced 2026-05-03 20:58:03 +02:00
JS: mark Koa params as user-controlled objects
This commit is contained in:
@@ -167,12 +167,8 @@ module Koa {
|
|||||||
kind = "body" and
|
kind = "body" and
|
||||||
this.asExpr().(PropAccess).accesses(request, "body")
|
this.asExpr().(PropAccess).accesses(request, "body")
|
||||||
or
|
or
|
||||||
exists (PropAccess query |
|
kind = "parameter" and
|
||||||
kind = "parameter" and
|
this = getAQueryParameterAccess(rh)
|
||||||
// `ctx.request.query.name`
|
|
||||||
query.accesses(request, "query") and
|
|
||||||
this.asExpr().(PropAccess).accesses(query, _)
|
|
||||||
)
|
|
||||||
or
|
or
|
||||||
exists (string propName |
|
exists (string propName |
|
||||||
// `ctx.request.url`, `ctx.request.originalUrl`, or `ctx.request.href`
|
// `ctx.request.url`, `ctx.request.originalUrl`, or `ctx.request.href`
|
||||||
@@ -203,6 +199,16 @@ module Koa {
|
|||||||
override string getKind() {
|
override string getKind() {
|
||||||
result = kind
|
result = kind
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override predicate isUserControlledObject() {
|
||||||
|
this = getAQueryParameterAccess(rh)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private DataFlow::Node getAQueryParameterAccess(RouteHandler rh) {
|
||||||
|
// `ctx.request.query.name`
|
||||||
|
result.asExpr().(PropAccess).getBase().(PropAccess).accesses(rh.getARequestExpr(), "query")
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user