|
|
|
|
|
by Karliss
1891 days ago
|
|
From a quick glance it looked quite worrying, many red flags. I didn't look too carefully so some of this might be wrong or I missed where it's done. * Results from the untrusted part inside container are returned using pickle. Which can be used to achieve arbitrary code execution outside container. * no time limiting * no memory limiting * Untrusted code is run as root in the container which by default is same user as root outside container. From what I understand it isn't as bad as it was in earlier docker versions but still not great. * untrusted code is run in the same process as semitrusted run_lang code, which means that the untrusted code with little bit of effort can manipulate reported execution time and memory usage * for some languages correct_output is copied into the untrusted execution environment which means that solution could potentially just read the correct answers instead of calculating themselves * none of the default capabilities are dropped which is probably more than what solution needs * solution can freely create new files |
|
Definitely not surprised that there are many security vulnerabilities...
I'm a grad student in computational science working on this as a hobby so building and securing websites is not something I know much about.
But now that someone is actually using it, I will take security more seriously.
Once I have some time I'll open a GitHub issue and compile a list of the security vulnerabilities you listed and will learn how to fix them.
This should be a good learning opportunity!