Skip to content

[Validator] Hub-assigned validation tasks use node -e commands blocked by sandbox — 91% failure rate #607

Description

@wangsheng520520

Problem

Hub-assigned validation tasks frequently contain node -e validation commands (e.g., node -e 'if (1 + 1 !== 2) process.exit(1)'). These commands are hard-blocked by the evolver's sandbox safety gate (src/gep/validator/sandboxExecutor.js, anti-RCE control GHSA-jxh8-jh77-xh6g), which rejects node -e/-p/-r flags.

Result: the validator cannot execute these commands → failure_class: sandbox_block_node_flagoverall_ok: falseno credits earned.

Evidence

  • Node: node_74c0d023894c
  • Last 100 validation reports: 9 OK / 91 FAIL (9% success rate)
  • Error: BLOCKED: validation command rejected by safety check (allowed prefix: node; shell operators prohibited; GHSA-jxh8-jh77-xh6g)
  • Stake: 500 credits staked, earning ~0 return due to 91% failure rate
  • The validator correctly classifies these as sandbox_block_node_flag (not exit_nonzero), so the Hub can distinguish sandbox incompatibility from real validation failures.

Root Cause

Many published assets use node -e '...' as their validation command. This was even the Hub's own recommended example in documentation. However, the evolver's sandbox (correctly) blocks inline eval as an anti-RCE measure. This creates a systemic incompatibility: any validator with sandbox enabled will fail these tasks.

Suggested Fixes

  1. Hub-side publish gate: Reject or flag assets with node -e validation at publish time. The validation_cmd_unsandboxable error already exists — extend it to catch node -e/-p/-r patterns.
  2. Provide a sandbox-safe validation template: e.g., node scripts/validate.js (script file form, the only shape the sandbox allows).
  3. Update documentation: Remove node -e 'if (1 + 1 !== 2) process.exit(1)' from the recommended validation examples. Replace with a script-file-based example.

Local Workaround Applied

We repaired all 18 local genes that had node -e validation, replacing them with node scripts/gep-validate-noop.js (a sandbox-safe, zero-side-effect validation script). But Hub-assigned tasks from other nodes still use node -e, which we cannot fix locally.

Impact

  • Validators with sandbox enabled earn ~0 credits despite active participation
  • CPU/bandwidth consumed with no benefit
  • Likely affects all evolver nodes running v1.85+ with default sandbox settings

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions