SON security model #150
Labels
No labels
bug
dependencies
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
refactor
rust
technical-debt
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
navicore/patch-seq#150
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
SON (Seq Object Notation) is executable Seq code. Loading a
.sonfile means running arbitrary code:This is powerful but dangerous. Loading untrusted SON = arbitrary code execution.
The Problem
JSON is safe to parse from untrusted sources. SON is not. We need a security model before SON becomes widely used.
Options
Option A: Sandboxed Evaluation
Restrict which words are available during SON evaluation.
Implementation:
Pros: Untrusted SON becomes safe
Cons: Complex implementation, overhead
Option B: Static "Pure Data" Subset
Define a syntactic subset of Seq that can only represent data:
Pros: Statically verifiable, zero runtime overhead
Cons: Needs separate parser/validator, less flexible
Option C: Trust Model (No Sandboxing)
Document that SON is code. Only load from trusted sources.
Pros: Zero implementation cost
Cons: Users will inevitably load untrusted SON
Option D: Capability-Based Security
SON evaluation receives explicit capabilities:
Pros: Fine-grained control
Cons: Complex, capability propagation is hard
Recommendation
Start with Option C (documentation) but design the SON loader API to support Option A (sandboxing) later:
Relation to SON
This must be resolved before SON is promoted for general use. The API design now affects what's possible later.
Part of the SON implementation roadmap.
be careful not to introduce 'seqbleed' :)
https://github.com/navicore/patch-seq/pull/174