Rasmus Wriedt Larsen
cc72fc82f0
Merge branch 'main' into flask-clean-models
2021-02-18 16:08:18 +01:00
Rasmus Wriedt Larsen
9a42f2fb26
Python: Add missing QLdoc for FlaskMethodViewClass
2021-02-18 16:07:47 +01:00
Taus
e9cbdc4ad3
Update python/ql/src/semmle/python/dataflow/new/TypeTracker.qll
...
Co-authored-by: Rasmus Wriedt Larsen <rasmuswriedtlarsen@gmail.com >
2021-02-18 15:53:15 +01:00
Rasmus Wriedt Larsen
bb2613b02b
Python: Flask model now ready to be publicly exposed
...
With a single call-out for a member-predicate that is only for internal use.
2021-02-18 15:36:30 +01:00
Rasmus Wriedt Larsen
35876f1939
Python: Re-introduce Response::instance() in flask model
...
We don't actually need it for anything right now, but I have plans for the
future where would need it.
Although it would be nice to have it as an `API::Node`, and we could re-write
implementations so we could provide it in this instance, I'm not convinced we
can do that in general right now.
For example, if <n'th> parameter of a function has to be modeled as belonging to
a certain type, I don't see any way to specify that as an API::Node.
For me, that's ok. Until we _can_ specify things like this as API::Nodes in the
future, I would like to keep things consistent, and use `DataFlow::Node` as the
result type.
2021-02-18 15:22:16 +01:00
Rasmus Wriedt Larsen
141e2665ea
Python: Align ViewClass naming with django
...
Just as part of tyding up
2021-02-18 15:10:21 +01:00
Rasmus Wriedt Larsen
19b7ea8d85
Python: Align flask taint modeling with rest of code
...
This was a good time to do this, so we don't have 2 different ways of doing the
same thing.
I needed to do this to figure out if we should expose
`API::moduleImport("flask").getMember("request")` in a helper predicate or
not. I think I ended up using more refenreces to this in the end. Although it's
not unreasonable to let someone do this themselves, I also think it's reasonable
that we provide a helper predicate for this.
2021-02-18 15:04:07 +01:00
Rasmus Wriedt Larsen
ba61099172
Python: flask.make_response as InstanceSource of flask.Response
2021-02-18 12:52:59 +01:00
Rasmus Wriedt Larsen
e3d530dbbc
Python: Flask: Remove more type-tracking helper predicates
2021-02-18 12:13:47 +01:00
Rasmus Wriedt Larsen
e4ea5f25dc
Python: Flask: Moderize app and blueprint
2021-02-18 12:09:37 +01:00
Rasmus Wriedt Larsen
7de488b987
Python: Flask: Moderize views
2021-02-18 12:05:56 +01:00
CodeQL CI
d94f20ff2f
Merge pull request #5194 from RasmusWL/type-tracking-snippets
...
Approved by tausbn
2021-02-18 02:13:21 -08:00
Taus Brock-Nannestad
23e9785efd
Python: Add missing QLDoc
2021-02-17 21:38:48 +01:00
Taus Brock-Nannestad
99f3a61f61
Python: Add TypeBackTracker
...
This is a fairly straight port of the JS equivalent. Also adds
`Node::getALocalSourceNode` which seems like it might come in handy.
2021-02-17 21:14:20 +01:00
Rasmus Wriedt Larsen
4880350420
Python: Add a single missing QLDoc
2021-02-17 16:33:12 +01:00
Rasmus Wriedt Larsen
7afe3972d8
Revert "Merge pull request #5171 from RasmusWL/restructure-queries"
...
This reverts commit 8caafb3710 , reversing
changes made to ec79094957 .
2021-02-17 16:32:53 +01:00
Rasmus Wriedt Larsen
63a09fccdd
Python: Use this = <...>.getACall() for DataFlow::CallCfgNode
...
I think this reads a bit cleaner
2021-02-17 14:43:48 +01:00
Taus
ce1d8ded22
Merge pull request #5192 from RasmusWL/framework-for-routed-params
...
Python: Expose framework identifier for route-setup and request handler
2021-02-17 13:19:43 +01:00
Rasmus Wriedt Larsen
a4de88d39c
Python: Update type-tracking snippet
...
based on what I learned in https://github.com/github/codeql/pull/5184
2021-02-17 13:13:25 +01:00
Taus
8caafb3710
Merge pull request #5171 from RasmusWL/restructure-queries
...
Python: Restructure query file layout
2021-02-17 12:09:32 +01:00
Rasmus Wriedt Larsen
cf9ad0cdc5
Python: Move ExternalAPI queries back under Security
...
This was raised as a question at review, and I don't really have a good enough
argument for moving it under POI. At the end of the day, they are _security_
related enough I guess :)
2021-02-17 11:29:33 +01:00
Rasmus Wriedt Larsen
1adb510578
Python: Add a single missing QLDoc
2021-02-17 11:24:11 +01:00
Rasmus Wriedt Larsen
d98aae9fc1
Python: Expose framework identifier for route-setup and req handler
...
This makes collecting metrics on framework coverage a bit simpler (specifically
giving the RoutedParameter class a more descriptive result for getSourceType).
I guess it can also help a bit when trying to get an overview of a new DB, but
making metrics collection easier is my main motivation for this.
2021-02-16 23:44:03 +01:00
Rasmus Wriedt Larsen
1e1cb87436
Python: Model flask blueprints
2021-02-16 15:26:51 +01:00
Rasmus Wriedt Larsen
bf401c7498
Merge pull request #5103 from tausbn/python-port-flask-to-api-graphs
...
Python: Port Flask models to use API graphs
2021-02-16 15:00:46 +01:00
Rasmus Wriedt Larsen
3a18881660
Python: Restructure query file location
...
Since I can never remember the CWE numbers
2021-02-16 11:36:10 +01:00
Taus
2ca12aa612
Update python/ql/src/semmle/python/dataflow/new/internal/DataFlowPublic.qll
...
Co-authored-by: Rasmus Wriedt Larsen <rasmuswriedtlarsen@gmail.com >
2021-02-15 14:21:12 +01:00
Taus Brock-Nannestad
27c479a8ba
Python: Limit RequestInputAccess to immediate uses
...
This fixes some spurious results that occurred when we considered
_any_ use of `request.something` to be a source, even ones we had
tracked into other functions. To prevent this, using
`getAnImmediateUse` better captures the fact that we want the source
to be just the actual attribute access.
2021-02-15 13:51:29 +01:00
Rasmus Wriedt Larsen
745148474a
Python: Model get_redirect_url in django
2021-02-15 10:55:52 +01:00
CodeQL CI
178c54e69b
Merge pull request #5139 from RasmusWL/django-improvements
...
Approved by yoff
2021-02-14 02:16:52 -08:00
Rasmus Wriedt Larsen
10fdc4bfb9
Python: Add support for more yaml loading functions
2021-02-12 12:30:00 +01:00
Rasmus Wriedt Larsen
f328e84bd2
Python: Mention yaml.safe_load in the qhelp
2021-02-12 12:29:55 +01:00
Rasmus Wriedt Larsen
1651f81ac8
Python: Refactor to avoid confusing name
...
After discussion with @yoff
2021-02-12 12:19:37 +01:00
Taus Brock-Nannestad
4c66071f5f
Python: Revert "Python: Support moduleImport("dotted.name") in API graphs"
...
This reverts commit 2c4a477a4e .
It's probably best _not_ to do this, as any `getMember` cycle in the
API graph will lead to nontermination.
2021-02-11 16:08:28 +01:00
Taus Brock-Nannestad
ea30598a08
Python: Split dotted names more efficiently
2021-02-11 16:07:39 +01:00
Rasmus Wriedt Larsen
c57a4df819
Python: Model taint of self.request on django view class
2021-02-10 17:48:48 +01:00
Rasmus Wriedt Larsen
ca0d345987
Django: Model any class used in django route setup as view class
2021-02-10 16:26:25 +01:00
Rasmus Wriedt Larsen
b428945bc2
Django: Fix DjangoRouteHandler char-pred
...
Before it the class would contain _all_ functions xD
2021-02-10 16:21:51 +01:00
Rasmus Wriedt Larsen
42eceb80bd
Python: Handle view functions with decorators
2021-02-10 15:47:55 +01:00
Tom Hvitved
1f9b42f9ab
Data flow: Sync files
2021-02-09 20:10:23 +01:00
Rasmus Lerchedahl Petersen
e3002aa1bf
Python: model for sys.exc_info
...
made _easy_ by API graphs :D
2021-02-09 11:39:44 +01:00
Rasmus Lerchedahl Petersen
0ea2f457a1
Python: type trackers for exceptions
2021-02-09 11:39:44 +01:00
Rasmus Lerchedahl Petersen
232d9b006a
Python: Implement traceback module
...
Just functions, not the classes for now
2021-02-09 11:39:44 +01:00
Rasmus Lerchedahl Petersen
6a45f6e7e0
Python: Port StackTraceExposure query
...
using empty concept implementation
2021-02-09 11:12:44 +01:00
Rasmus Lerchedahl Petersen
77ae91c47d
Python: Add concept ExceptionSource
2021-02-09 11:12:44 +01:00
Taus Brock-Nannestad
c59b5c98cb
Python: Replace use of AttrNode with getMember
2021-02-08 19:14:11 +01:00
Taus Brock-Nannestad
72a699e099
Python: Add CallCfgNode class and rewrite using that class
...
I prefer this name to `CfgCallNode` as the latter will make
autocomplete more difficult.
2021-02-08 16:55:18 +01:00
Taus Brock-Nannestad
46eb3fd10a
Python: Even more API::Node pushing.
2021-02-08 14:22:42 +01:00
Taus
c0c2aa69b3
Merge branch 'main' into python-port-flask-to-api-graphs
2021-02-08 14:17:25 +01:00
Taus Brock-Nannestad
2c4a477a4e
Python: Support moduleImport("dotted.name") in API graphs
2021-02-08 14:08:34 +01:00