-
Notifications
You must be signed in to change notification settings - Fork 79
fix: Require an explicit opt in to unsafety; defer decision to call time #246
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
57aebd3 to
0621d9c
Compare
0621d9c to
48d59e9
Compare
MoisesGSalas
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @timmc-edx, sorry for being away for so long.
I all looks fine and I tested the RuntimeError on the edunext codejailservice and it worked. Would you mind rebasing on top of the current master?
| # over the computer immediately and entirely. | ||
| # | ||
| # The only purpose of this setting is for local debugging. | ||
| ALWAYS_BE_UNSAFE = False |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is there a code path that sets this to True somewhere?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not an existing one, no. This would be in case some application that was integrating codejail needed to enable unsafe mode.
51540bc to
68918ef
Compare
Codejail currently makes a decision at module load time of whether it should run all code safely or unsafely, and defaults to unsafely. This causes several problems: - Any misconfiguration of codejail (such as a missing Django setting or middleware) results in the application becoming immediately and entirely vulnerable to anyone who can submit code. - Codejail's behavior changes depending on when the `codejail.safe_exec` module is loaded during application initialization. This causes unstable behavior and is confusing for developers. This change switches the `ALWAYS_BE_UNSAFE` check to occur only at the time that `safe_exec` is actually called, rather than at module load time. The check for whether codejail is configured for Python is also moved to call time, but no longer automatically switches codejail to unsafe mode. Instead, it raises an exception to notify the user of their error.
68918ef to
1f97afa
Compare
Codejail currently makes a decision at module load time of whether it should run all code safely or unsafely, and defaults to unsafely. This causes several problems:
codejail.safe_execmodule is loaded during application initialization. This causes unstable behavior and is confusing for developers.This change switches the
ALWAYS_BE_UNSAFEcheck to occur only at the time thatsafe_execis actually called, rather than at module load time.The check for whether codejail is configured for Python is also moved to call time, but no longer automatically switches codejail to unsafe mode. Instead, it raises an exception to notify the user of their error.
This addresses #16