[30/36] Fix runtime script variable evaluation - #65
Conversation
|
Verdict: request changes, on the interpolation-into-source design. The resolution mechanics (recursive with a cycle-safe cap, builtins) are fine.
Tests: good and deterministic for resolution mechanics. Missing exactly the case that matters: a variable value containing quotes/parens, which currently injects rather than fails safe. Deps: none added (crypto builtin only). |
|
Re-review (whole-stack pass, per REVIEW_GUIDE.md) Head unchanged since the first review, no reply, no fix.
The added sandbox test only injects Verdict: changes-needed. Stop interpolating variable values into script source (keep the |
|
Implemented and pushed in The critical finding was valid. Runtime variable values are no longer interpolated into JavaScript source. This fix does not claim that bare Node The remaining findings are also fixed:
Validation passed: compile; focused runtime/WebSocket/gRPC suite (4 files, 59 tests); demo validation (47/47); full suite (26 files, 471 tests); build. GitHub build and both security checks pass, and PR #65 is MERGEABLE/CLEAN. I also verified the updated branch against PR #61, PR #66, PR #67, PR #71, and PR #72. Every simulated edge is clean. The accurate historical test title and stale OC-080 ledger correction are implemented at the stack tip in PR #72 commit |
|
Response to the second review: the critical interpolation issue is fixed on the current head (2acea82). Variable placeholders are rejected before VM compilation, so user-controlled values are never inserted into executable JavaScript source. The fixture, documentation, deep/same-name/cyclic variable regressions, and ledger evidence are reconciled on the stack rework PR, #72 (d725810), using missio.variables.get(...) as the supported access path. The bare Node VM is not being represented as a security boundary. The constrained context and lack of host APIs remain defense in depth; moving execution to an isolated worker/process would be a separate architectural change, not the minimal fix for the concrete source-interpolation exploit. I am therefore recording that distinction rather than claiming isolation this branch does not provide. I validated the exact final 37-PR composition with npm run build, npm run compile, all 539 tests, and all 47 demo validations passing. |
Stack PR 30/36 for the Missio 0.8.0 OpenCollection review queue.
Security review follow-up:
2acea82(Reject runtime script source interpolation).Changes:
{{variable}}placeholders in executable runtime script source beforevm.Scriptcompilation;missio.variables.get();Validation:
npm run compilenode scripts/validate-collection.js examples/demo-api: 47/47 filesnpm test: 26 files, 471 testsnpm run buildStack integrity was verified against the updated PR #61 parent, immediate PR #66 child, PR #67 assertion implementation, PR #71 stack tip, and PR #72 rework tip. All simulated edges are clean. GitHub reports this PR MERGEABLE/CLEAN and all build/security checks pass.
The final stack reconciliation, accurate regression-test title, and corrected OC-080 ledger wording are carried by PR #72 commit
d725810, where they do not overlap the later PR #67 assertion-test insertion.