Python: Refine the location of flask.request
flow sources
#20281
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
flask.request
global object is commonly used in request handlers to access data in the active request. In our modelling, we handled this by treating the initial (module-local) definition ofrequest
as a source of remote flow. In practice this meant a lot of alerts would act as iffrom flask import request
was the ultimate "source" of remote flow, and to find the actual request-handler-local instance ofrequest
one would have to inspect the data-flow path between source and sink.To improve this state of affairs, I have made the following changes to the definition of
FlaskRequestSource
:from flask import request
to be a source.request
value can flow, and include only the ones that areLocalSourceNode
s (so that inside a request handler, the first occurrence of therequest
object is the source).In practice, this leads to alerts that are much easier to decipher.