[P0 security] Browser actors are not sandboxed from origin storage or network APIs #127
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
needs-review
quasar
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/quasar-ui#127
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?
Finding
src/lib/browser-actor-runtime.jsexecutes manifest-provided JavaScript inside a same-originWorkercreated from a Blob. Removing a few globals (fetch,XMLHttpRequest,WebSocket,EventSource,importScripts) does not create a security boundary.Actor code can still reach browser primitives that bypass the declared capability broker, including same-origin storage and additional execution/network surfaces such as
indexedDB,caches,BroadcastChannel, nestedWorker, dynamicimport(), WebRTC-related APIs where available, and any future worker global added by the platform. Because the worker shares the application origin, a malicious imported actor can read or mutate Quasar state and potentially exfiltrate it.The current UI and architecture describe actors as capability-restricted. That guarantee is false with a same-origin worker.
Impact
capabilities.Required fix
Treat browser actor source as untrusted and move execution to an opaque-origin sandbox. A worker can remain an optimization only for code that is explicitly trusted/signed.
Recommended shape:
Parent-side messages must validate all of:
Also:
indexedDB,caches, nested workers, dynamic imports, or direct network primitives.Acceptance criteria