You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add Getting Started guide to README, with a walkthrough of running it on a Django repo #113
Thanks for the PR @cclauss, I will check it out tomorrow night :)
@lfatty which web framework is the repo? You can use find to list all the files and then run PyT on them with -f but the framework matters a little bit.
I also when running a test against django.nV, I got the following:
python -m pyt -f examples/django.nV/taskManager/views.py
/bla/bla/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py:125: RuntimeWarning: 'pyt.__main__' found in sys.modules after import of package 'pyt', but prior to execution of 'pyt.__main__'; this may result in unpredictable behaviour
warn(RuntimeWarning(msg))
No vulnerabilities found.
Thanks @KevinHock, I think this tool is very promising especially if we can make it very easy to use. Also we need think about a new option such as -r, --recursive find and process files in subdirectories. Just a suggestion.
Thank for the kind words @lfatty, I'll definitely work on that too, I've been overly focused on fixing the false positive and negative problems from our last evaluation, I'll also work on de duplicating any duplicate vulnerabilities as a post-processing step until I fix the root cause.
python -m pyt -a E -f examples/django.nV/taskManager/upload_controller.py --interactive has slightly less worse findings, you can edit the sink information by editing pyt/vulnerability_definitions/all_trigger_words.pyt
@KevinHock, I ran python -m pyt -a E -f examples/django.nV/taskManager/upload_controller.py --interactive and all looks fine. But, when I ran the command against my code, i got the following output:
Traceback (most recent call last):
File "/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "projects/pythonsca/pyt/pyt/__main__.py", line 371, in <module>
main()
File "projects/pythonsca/pyt/pyt/__main__.py", line 295, in main
FrameworkAdaptor(cfg_list, project_modules, local_modules, framework_route_criteria)
File "/projects/pythonsca/pyt/pyt/framework_adaptor.py", line 21, in __init__
self.run()
File "/projects/pythonsca/pyt/pyt/framework_adaptor.py", line 70, in run
function_cfgs.extend(self.find_route_functions_taint_args())
File "/projects/pythonsca/pyt/pyt/framework_adaptor.py", line 64, in find_route_functions_taint_args
yield self.get_func_cfg_with_tainted_args(definition)
File "/projects/pythonsca/pyt/pyt/framework_adaptor.py", line 30, in get_func_cfg_with_tainted_args
definition.module_definitions
File "/projects/pythonsca/pyt/pyt/expr_visitor.py", line 580, in make_cfg
module_definitions
File "/projects/pythonsca/pyt/pyt/expr_visitor.py", line 59, in __init__
self.init_function_cfg(node, module_definitions)
File "/projects/pythonsca/pyt/pyt/expr_visitor.py", line 96, in init_function_cfg
module_statements = self.stmt_star_handler(node.body)
File "/projects/pythonsca/pyt/pyt/stmt_visitor.py", line 75, in stmt_star_handler
node = self.visit(stmt)
File "/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ast.py", line 253, in visit
return visitor(node)
File "/projects/pythonsca/pyt/pyt/stmt_visitor.py", line 303, in visit_Try
handler_body = self.stmt_star_handler(handler.body)
File "/projects/pythonsca/pyt/pyt/stmt_visitor.py", line 75, in stmt_star_handler
node = self.visit(stmt)
File "/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ast.py", line 253, in visit
return visitor(node)
File "/projects/pythonsca/pyt/pyt/stmt_visitor.py", line 233, in visit_Raise
path=self.filenames[-1]
TypeError: __init__() missing 1 required keyword-only argument: 'line_number'
Thanks for reporting that, I missed it in a recent refactor, I'm sorry about that, stmt_visitor has 90% coverage but visit_Raise is somehow missing, I'll add test coverage to that as well.
np. i should be noted that something like def my_data(self) by way of example. I think we need to revisit selfas user input because it may generate many false positives.
Activity
KevinHock commentedon Apr 15, 2018
Ahh so this is due to you running in under Python 2, under Python 3, (especially 3.6), everything will run well :)
cclauss commentedon Apr 15, 2018
https://travis-ci.org/python-security/pyt/builds/366758979#L509
lfatty commentedon Apr 15, 2018
Thanks @KevinHock. What is the best way to test a whole repo or a directory that holds all the python files.
cclauss commentedon Apr 15, 2018
python3 -m tests
KevinHock commentedon Apr 15, 2018
Thanks for the PR @cclauss, I will check it out tomorrow night :)
@lfatty which web framework is the repo? You can use
findto list all the files and then run PyT on them with -f but the framework matters a little bit.lfatty commentedon Apr 15, 2018
Lets say it is django
lfatty commentedon Apr 15, 2018
I also when running a test against django.nV, I got the following:
Is this expected or normal?
KevinHock commentedon Apr 15, 2018
Try -a E or -a D, it's the framework adaptor option.
lfatty commentedon Apr 16, 2018
Ok, i am not being successful. Can you please write down the commands for that? thx
[-]Many SyntaxErrors[/-][+]Add Getting Started guide to README, with a walkthrough of running it on a Django repo[/+]lfatty commentedon Apr 16, 2018
Thanks @KevinHock, I think this tool is very promising especially if we can make it very easy to use. Also we need think about a new option such as
-r, --recursive find and process files in subdirectories. Just a suggestion.KevinHock commentedon Apr 16, 2018
Thank for the kind words @lfatty, I'll definitely work on that too, I've been overly focused on fixing the false positive and negative problems from our last evaluation, I'll also work on de duplicating any duplicate vulnerabilities as a post-processing step until I fix the root cause.
KevinHock commentedon Apr 17, 2018
You can try this
python -m pyt -a E -f examples/django.nV/taskManager/views.py --interactivebefore I implement the-rand de-duping options.KevinHock commentedon Apr 17, 2018
python -m pyt -a E -f examples/django.nV/taskManager/upload_controller.py --interactivehas slightly less worse findings, you can edit the sink information by editingpyt/vulnerability_definitions/all_trigger_words.pytlfatty commentedon Apr 17, 2018
@KevinHock, I ran
python -m pyt -a E -f examples/django.nV/taskManager/upload_controller.py --interactiveand all looks fine. But, when I ran the command against my code, i got the following output:KevinHock commentedon Apr 17, 2018
Thanks for reporting that, I missed it in a recent refactor, I'm sorry about that,
stmt_visitorhas 90% coverage butvisit_Raiseis somehow missing, I'll add test coverage to that as well.lfatty commentedon Apr 17, 2018
np. i should be noted that something like
def my_data(self)by way of example. I think we need to revisitselfas user input because it may generate many false positives.KevinHock commentedon Apr 17, 2018
That is a very simple fix, I'll do that after work today, I thought we already had that. Also FYI
-a Dis the adaptor for Django, it'll only mark functions with the first arg asrequesttainted https://github.com/python-security/pyt/blob/master/pyt/framework_helper.py#L24 I know that isn't fool-proof though.lfatty commentedon Apr 17, 2018
Great!
KevinHock commentedon Apr 18, 2018
Sorry I haven't made/merged the 'don't mark self tainted' PR (finished handling IfExp's and partially done with BoolOp last night on a non-pushed branch) if you're curious it should be just checking the first arg here https://github.com/python-security/pyt/blob/master/pyt/framework_adaptor.py#L44
KevinHock commentedon Apr 19, 2018
Fixed it ;) #119 Thanks 👍
lfatty commentedon Apr 19, 2018
Thanks @KevinHock. I will test it and will keep you posted.