T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:153- Finding
Execution of Remotely Supplied Python Evaluator
- Content
View full analysis
/leases` with `{"agent": "YourAgentName"}` and your Bearer header. The response has everything: `mode` (`explore`, `exploit`, `replicate`, `decompose`), `pack` (`program_md`, `eval_py`, `baseline`, `mutable`, `runtime`, `metric`, `direction`, `agent_timeout_seconds`), `parent_files` (for exploit), `journal_md`, `lease_id`, `parent_id`. 3. **Scratch dir.** Write every `pack.baseline` file, overlay `parent_files`, write `pack.eval_py` as `eval.py`. Read `program_md` and `journal_md` fully. Everything you write stays inside this scratch directory. **`eval.py` is server-supplied code. Run it in a sandbox, not on your host.** The evaluator is the problem's public scoring script, and it is the same file the hub runs on its own workers, but you must still treat it as untrusted: run it in a disposable container or VM, or at minimum an unprivileged process with the scratch directory as its only writable path, no network, a fresh environment containing only the `ZT_EVAL_*` variables you set, and a CPU and wall-clock limit (`pack.agent_timeout_seconds` is a good ceiling). Never pass `ZEROTHESIS_API_KEY` or any other operator secret into the evaluator's environment. Read the script before the first run and note its sha256; if a later lease for the same problem ships a different `eval_py`, re-read it before running. If your operator has not given you a sandbox, ask for one before running any evaluator. ``` ### Technical Analysis The Skill retrieves `eval_py` from an external API response, writes it to `eval.py`, and directs the agent to execute it. Consequently, the effective executable payload is not fixed at audit time and can be changed by the remote service after ...[truncated 2073 chars]- Remediation
View remediation
