mirror of
https://github.com/github/codeql.git
synced 2026-04-24 08:15:14 +02:00
Undo unnecessary name tracking for request, response objects
This commit is contained in:
@@ -244,20 +244,6 @@ module Fastify {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the property name where user-controlled input is written to a request or response object
|
||||
* in a route handler. This is used to track taint flow through request and response object properties.
|
||||
*/
|
||||
private string getUserControlledPropertyName() {
|
||||
exists(DataFlow::PropWrite write, DataFlow::Node source, RouteHandler rh |
|
||||
write.getBase*() =
|
||||
[rh.getARequestSource().ref().getALocalUse(), rh.getAResponseSource().ref().getALocalUse()] and
|
||||
write.getPropertyName() = result and
|
||||
write.getRhs() = source and
|
||||
source = any(Http::RequestInputAccess ria).getASuccessor*()
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* An access to a user-controlled Fastify request input.
|
||||
*/
|
||||
@@ -272,20 +258,6 @@ module Fastify {
|
||||
or
|
||||
kind = "body" and
|
||||
name = "body"
|
||||
or
|
||||
kind = "stored" and
|
||||
name = getUserControlledPropertyName()
|
||||
)
|
||||
or
|
||||
// Handle reading from reply object with user input stored on it
|
||||
exists(string name |
|
||||
(
|
||||
this = rh.getAResponseSource().ref().getAPropertyRead(name)
|
||||
or
|
||||
this = rh.getAResponseSource().ref().getAPropertyRead+().getAPropertyRead(name)
|
||||
) and
|
||||
kind = "stored" and
|
||||
name = getUserControlledPropertyName()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -53,13 +53,10 @@
|
||||
| fastify.js:59:23:59:31 | userInput | fastify.js:57:21:57:39 | request.query.input | fastify.js:59:23:59:31 | userInput | This code execution depends on a $@. | fastify.js:57:21:57:39 | request.query.input | user-provided value |
|
||||
| fastify.js:71:34:71:51 | request.storedCode | fastify.js:66:24:66:36 | request.query | fastify.js:71:34:71:51 | request.storedCode | This code execution depends on a $@. | fastify.js:66:24:66:36 | request.query | user-provided value |
|
||||
| fastify.js:71:34:71:51 | request.storedCode | fastify.js:66:24:66:47 | request ... redCode | fastify.js:71:34:71:51 | request.storedCode | This code execution depends on a $@. | fastify.js:66:24:66:47 | request ... redCode | user-provided value |
|
||||
| fastify.js:71:34:71:51 | request.storedCode | fastify.js:71:34:71:51 | request.storedCode | fastify.js:71:34:71:51 | request.storedCode | This code execution depends on a $@. | fastify.js:71:34:71:51 | request.storedCode | user-provided value |
|
||||
| fastify.js:84:30:84:43 | reply.userCode | fastify.js:79:20:79:32 | request.query | fastify.js:84:30:84:43 | reply.userCode | This code execution depends on a $@. | fastify.js:79:20:79:32 | request.query | user-provided value |
|
||||
| fastify.js:84:30:84:43 | reply.userCode | fastify.js:79:20:79:42 | request ... plyCode | fastify.js:84:30:84:43 | reply.userCode | This code execution depends on a $@. | fastify.js:79:20:79:42 | request ... plyCode | user-provided value |
|
||||
| fastify.js:84:30:84:43 | reply.userCode | fastify.js:84:30:84:43 | reply.userCode | fastify.js:84:30:84:43 | reply.userCode | This code execution depends on a $@. | fastify.js:84:30:84:43 | reply.userCode | user-provided value |
|
||||
| fastify.js:99:30:99:52 | reply.l ... tedCode | fastify.js:94:29:94:41 | request.query | fastify.js:99:30:99:52 | reply.l ... tedCode | This code execution depends on a $@. | fastify.js:94:29:94:41 | request.query | user-provided value |
|
||||
| fastify.js:99:30:99:52 | reply.l ... tedCode | fastify.js:94:29:94:51 | request ... plyCode | fastify.js:99:30:99:52 | reply.l ... tedCode | This code execution depends on a $@. | fastify.js:94:29:94:51 | request ... plyCode | user-provided value |
|
||||
| fastify.js:99:30:99:52 | reply.l ... tedCode | fastify.js:99:30:99:52 | reply.l ... tedCode | fastify.js:99:30:99:52 | reply.l ... tedCode | This code execution depends on a $@. | fastify.js:99:30:99:52 | reply.l ... tedCode | user-provided value |
|
||||
| module.js:9:16:9:29 | req.query.code | module.js:9:16:9:29 | req.query.code | module.js:9:16:9:29 | req.query.code | This code execution depends on a $@. | module.js:9:16:9:29 | req.query.code | user-provided value |
|
||||
| module.js:11:17:11:30 | req.query.code | module.js:11:17:11:30 | req.query.code | module.js:11:17:11:30 | req.query.code | This code execution depends on a $@. | module.js:11:17:11:30 | req.query.code | user-provided value |
|
||||
| react-native.js:8:32:8:38 | tainted | react-native.js:7:17:7:33 | req.param("code") | react-native.js:8:32:8:38 | tainted | This code execution depends on a $@. | react-native.js:7:17:7:33 | req.param("code") | user-provided value |
|
||||
|
||||
Reference in New Issue
Block a user