Rasmus Lerchedahl Petersen
6658ee9dc8
Merge branch 'python-port-reflected-xss' of https://github.com/RasmusWL/codeql into RasmusWL-python-port-reflected-xss
2020-10-29 12:46:44 +01:00
Rasmus Lerchedahl Petersen
9fd1bf60fa
Merge branch 'main' of github.com:github/codeql into python-port-path-injection
2020-10-28 10:24:23 +01:00
Rasmus Lerchedahl Petersen
164acf4055
Python: test that aliasing is not a problem
2020-10-27 11:25:58 +01:00
Rasmus Lerchedahl Petersen
2baed20067
Python: Test false negative from review
2020-10-27 08:30:16 +01:00
Rasmus Lerchedahl Petersen
b6313dddb9
Python: Add concept tests
2020-10-27 08:26:00 +01:00
Rasmus Lerchedahl Petersen
8350d64763
Python: Add concept test definitions
2020-10-27 08:00:53 +01:00
Rasmus Lerchedahl Petersen
d89e985246
Python: Test showing chaining FP
2020-10-24 09:20:30 +02:00
Rasmus Lerchedahl Petersen
022cf0b2cc
Python: Add test from tracking issue
...
All tests pass, but there are spurious paths
due to configuration chaining.
2020-10-24 09:07:43 +02:00
Rasmus Lerchedahl Petersen
821b0c918a
Python: Additional taintstep for normpath
...
Is it ok to have this in general?
2020-10-23 16:35:10 +02:00
Rasmus Wriedt Larsen
aa9f15af76
Python: Fix typo
...
Co-authored-by: Taus <tausbn@github.com >
2020-10-23 15:39:38 +02:00
Rasmus Lerchedahl Petersen
f87845b1ec
Python: Copy old test
2020-10-23 14:52:07 +02:00
Rasmus Wriedt Larsen
d295c64ccd
Python: Add example of flask response .set_data
2020-10-23 14:31:36 +02:00
Rasmus Wriedt Larsen
eb545204ec
Python: Show that reflected XSS works now
...
Also did autoformatting, but the important part is the change to the .expected file
2020-10-23 14:31:35 +02:00
Rasmus Wriedt Larsen
d2cfa91155
Python: Add some tricky tests of return in flask route handler
...
In these cases the `return` might end up creating a new HTTP response, so they
need to be modeled as such.
Initially I created a very naive solution that didn't handle either
tricky_return1 or tricky_return2.
The interaction in tricky_return2/helper highlighted for me that to handle this
properly, due to the fact that the flow is across functions, we either need to
use a global dataflow/taint-tracking configuration, or some clever use of
type-trackers.
In the end, this extra effort for not modeling all returns in a flask route
handler as a creation of a HTTP response doesn't really seem to be worth it (at
least not right now). Sicne we use it with taint-tracking for the Reflected XSS
query, and use a HTTP response _creation_ as the sink (without propagating taint
to the HTTP response), we won't get into trouble where we report a path to BOTH
`make_response(...)` and the `return`
```
resp = make_response(...)
return resp
```
If we change this setup in the future, we will probably need to do something to
avoid this double-path reporting.
2020-10-23 14:31:35 +02:00
Rasmus Wriedt Larsen
d60221b168
Python: Model return from flask handler as HTTP response
...
When dealing with
```
resp = make_response(...)
return resp
```
ideally we don't want to mark the return as a creation of a HTTP response. I'll
deal with this in a second commit, to show off how annoying it looks in the
tests right now :D
2020-10-23 14:31:34 +02:00
Rasmus Wriedt Larsen
44ba3469db
Python: Model response_class attribute of Flask class
2020-10-23 14:31:34 +02:00
Rasmus Wriedt Larsen
082e35c2c7
Python: Model mimetype instead of content-type for HTTP Response
...
Since that's really what we're after (at least for now)
2020-10-23 14:31:33 +02:00
Rasmus Wriedt Larsen
81a42b73a8
Python: Model flask.Response
...
I think I'll rework how we model content-type, since what we _actually_ want to
know is the mimetype
2020-10-23 14:31:32 +02:00
Rasmus Wriedt Larsen
7894d01248
Python: Add test for mimetype/headers priority
2020-10-23 14:31:31 +02:00
Rasmus Wriedt Larsen
35334cf630
Python: Remove status code modeling
...
I'm not even trying to model it properly right now, and don't have a specific
use-case for it RIGHT NOW. I think we could want this in the future, but I think
it's probably better to model it when we know what we want to use it for.
2020-10-23 14:31:31 +02:00
Rasmus Wriedt Larsen
19dc04de3c
Python: Handle make_response on flask app
2020-10-23 14:31:30 +02:00
Rasmus Wriedt Larsen
e38ac18e46
Python: Add (only) basic $HttpResponse tag to other tests files
...
This seems really nice to me, but you might disagree
2020-10-23 14:31:30 +02:00
Rasmus Wriedt Larsen
8b0b87ae62
Python: Model flask.make_response
2020-10-23 14:31:29 +02:00
Rasmus Wriedt Larsen
bfc29bb349
Python: Add annotations for flask response tests
...
The fact that we need to add routeSetup and routeHandler annotations is sort of
annoying :|
2020-10-23 14:31:27 +02:00
Rasmus Wriedt Larsen
47dcc09992
Python: Add tests for creating HTTP responses in flask
...
Which is runnable, if you have flask installed locally
2020-10-23 14:31:26 +02:00
Rasmus Wriedt Larsen
8aaa36bd99
Python: Port ReflectedXss query (and tests)
2020-10-23 14:31:25 +02:00
Rasmus Wriedt Larsen
df6fd53a7e
Python: Add HttpResponse concept
...
We might need to rework this a bit when we also start to handle redirects. I
could see a world where we simply allow http redirects to be subclasses of http
responses, and need to manually exclude them from queries (or create
HttpContentResponse to model the HttpResponses that will contain a body). Let us
see where the wind will take us.
I looked through JS and Go libraries, but I didn't feel their modeling would map
very well to Python.
2020-10-23 14:31:25 +02:00
Rasmus Wriedt Larsen
b3e53f8d0a
Python: Model django.conf.urls.url (v 1.x)
2020-10-23 14:26:37 +02:00
Rasmus Wriedt Larsen
be166d9c02
Python: Expand Django 2/3 routing tests with 1.x way
...
Added it to the `testapp` so it's easy to run the server to SEE that it works.
Added it to `routing_test` so it's obvious this is supported by our modeling
when we _know_ it's running Django 2/3.
2020-10-23 13:43:27 +02:00
Rasmus Wriedt Larsen
ae60ac211b
Python: Annotate django v1 routing tests
...
Again need to remove trailing $, since inline-expectation tests still don't
handle $
2020-10-23 12:05:05 +02:00
Rasmus Wriedt Larsen
78ab637b54
Python: Port django v1 tests
2020-10-23 12:00:27 +02:00
yoff
ee5221abb4
Apply suggestions from code review
...
Co-authored-by: Rasmus Wriedt Larsen <rasmuswriedtlarsen@gmail.com >
2020-10-21 15:08:16 +02:00
Rasmus Lerchedahl Petersen
53ff1a32c1
Merge branch 'main' of github.com:github/codeql into python-port-sql-injection
2020-10-21 14:38:02 +02:00
Rasmus Lerchedahl Petersen
3a416bce2d
Python: Move test annotation
2020-10-21 14:18:16 +02:00
Rasmus Lerchedahl Petersen
4571b3188c
Python: Fix false negative
2020-10-21 14:16:35 +02:00
Rasmus Lerchedahl Petersen
03c62fd267
Python: Fix typo in test case
2020-10-21 14:03:46 +02:00
yoff
75357727c4
Merge pull request #4490 from RasmusWL/python-model-django-sources
...
Python: model Django HttpRequest as RemoteFlowSource
2020-10-21 13:46:51 +02:00
Rasmus Lerchedahl Petersen
e49c7d64bd
Python: test for keyword arguments to extra
2020-10-21 13:28:12 +02:00
Rasmus Lerchedahl Petersen
d249b51a5e
Python: Add test-case for indirect RawSQL
2020-10-21 13:23:19 +02:00
Rasmus Wriedt Larsen
5874a7b422
Merge pull request #4488 from yoff/SharedDataflow_ArgumentPassingTests
...
Python: Shared dataflow, argument passing tests
2020-10-21 12:01:37 +02:00
CodeQL CI
eaed93fa7d
Merge pull request #4513 from RasmusWL/python-model-fabric
...
Approved by yoff
2020-10-21 01:58:19 -07:00
Rasmus Lerchedahl Petersen
9ee5a01d7e
Python: Reword comment on isBarrierIn
2020-10-21 10:30:40 +02:00
Rasmus Wriedt Larsen
b0af0b94d0
Python: Fix grammar
...
Co-authored-by: yoff <lerchedahl@gmail.com >
2020-10-21 09:58:37 +02:00
Rasmus Lerchedahl Petersen
90d0cff384
Python: Use flask routing
2020-10-21 00:30:16 +02:00
Rasmus Lerchedahl Petersen
383d846396
Python: address review
...
- smooth out future merge
- keyword argument for execute
2020-10-21 00:15:05 +02:00
Rasmus Lerchedahl Petersen
e1dfbc0486
Python: address review
2020-10-20 23:59:44 +02:00
Rasmus Wriedt Larsen
6920f3012c
Python: Django route handlers in different file now works
...
Fixed by https://github.com/github/codeql/pull/4514
2020-10-20 15:41:14 +02:00
Rasmus Wriedt Larsen
c8441dc4fb
Merge branch 'main' into python-model-django-sources
2020-10-20 15:38:20 +02:00
yoff
17155b64f5
Merge pull request #4514 from tausbn/python-add-module-boundary-flow-steps
...
Python: Add module boundary flow steps
2020-10-20 14:36:10 +02:00
Rasmus Wriedt Larsen
80adbdfbc1
Python: Mark unhandled django route handlers with f-:
...
That is playing more nicely with the expected usage of the inline-tests.
2020-10-20 13:44:34 +02:00