T09 · Insecure Skill Coding Practices
- Location
index.js:73- Finding
Arbitrary Task Code Executes Without Security Isolation
- Content
View full analysis
{ const child = spawn(language.command.split(' ')[0], [...language.command.split(' ').slice(1), fullFile], { timeout: CONFIG.timeout, cwd: tempDir, env: { ...process.env, NODE_ENV: 'test' } } ); ``` ### Technical Analysis The benchmark accepts source code from `task.input.code` and `task.input.test_code`, writes that content to a file, and directly invokes the corresponding Python, Node.js, or Go runtime. The child process is not placed in a container, operating-system sandbox, restricted user account, filesystem namespace, or network namespace. It consequently receives the same effective operating-system permissions as the benchmark process. The configured timeout is not a security boundary. It only attempts to terminate the immediate child process after 30 seconds. Task code may access files before termination, launch detached descendants, communicate over the network, or exploit local runtime and operating-system capabilities. In addition, `CONFIG.memoryLimit` is declared but never applied to the spawned process. Although the bundled `tasks.json` code is benign, the CLI explicitly supports selecting another task file. Such a file must therefore be treated as execut ...[truncated 1405 chars]- Remediation
View remediation
