Key diff
--- a/backend/services/real_compiler_service.py
+++ b/backend/services/real_compiler_service.py
@@ -36,6 +36,68 @@
'cpu_limit': '1.0'
}
}
-
- # Start execution worker
+ self.blocked_python_modules = {
+ "os",
+ "socket",
+ "subprocess",
+ "pty",
+ "multiprocessing",
+ "ctypes",
+ "resource",
+ "pwd",
+ "grp",
+ "signal",
+ "fcntl",
+ "selectors",
+ "pathlib",
+ "shutil",
+ }
+ self.blocked_python_calls = {
+ "eval",
+ "exec",
+ "compile",
+ "__import__",
+ "open",
+ "input",
+ "globals",
+ "locals",
+ "vars",
+ "getattr",
+ "setattr",
+ "delattr",
+ }
+ self.blocked_python_attrs = {
+ "fork",
+ "forkpty",
+ "spawn",
+ "spawnl",
+ "spawnlp",
+ "spawnv",
+ "spawnvp",
+ "system",
+ "popen",
+ "execl",
+ "execle",
+ "execlp",
+ "execv",
+ "execve",
+ "execvp",
+ "setsid",
+ "dup2",
+ }
+ self.blocked_patterns = {
+ "javascript": [
+ r"require\s*\(\s*['\"]child_process['\"]\s*\)",
+ r"require\s*\(\s*['\"]net['\"]\s*\)",
+ r"require\s*\(\s*['\"]dgram['\"]\s*\)",
+ r"process\.env",
+ r"process\.binding",
+ r"fs\.readFile|fs\.writeFile
Fix summary
The patch introduces static analysis for Python code to block dangerous modules (e.g., os, subprocess) and functions (e.g., eval, exec, open) that could be used for sandbox escape. It also adds regex-based blocking for dangerous patterns in JavaScript and other languages, and generally tightens resource limits and timeouts for all language executions.