2.5 KiB
2.5 KiB
Phase 10: Security Auditor
Security Posture
The desktop app now follows the required Electron baseline:
contextIsolation: truenodeIntegration: falsesandbox: true- minimal preload bridge
- no direct renderer access to filesystem, shell, or process APIs
Verified Controls
- IPC channels are explicitly named and typed in
src/shared/contracts.ts - privileged handlers validate payloads with Zod on the main-process side
- IPC invocation is rejected for untrusted sender frames
window.openandwebviewattachment are denied- navigation outside approved content is blocked
- packaged renderer content is served through a controlled
app://protocol handler with path traversal protection openPathis restricted to managed workspace, log, artifact, backup, and profile paths- connector execution commands are pinned to the audited connector binary instead of renderer overrides
- secrets are company-scoped and secret binding resolution is company-aware
safeStorageis required for production secret writes; the insecure vault fallback is limited to explicit test environments- worker-to-main messages are validated at runtime before mutating run state
- TODO: Electron binary fuse hardening is NOT yet configured. Before public release,
add
@electron/fusesto disablerunAsNode,NODE_OPTIONS/ inspect CLI argument injection, enforce app-from-ASAR loading, and enable ASAR integrity validation
Release Hygiene
- local builds do not auto-discover signing identities unless explicitly configured
- desktop packaging defaults to
--publish neverto prevent accidental channel publication from local/CI build jobs - updater configuration remains present but still requires a real trusted update endpoint before public distribution
- notarization and production signing credentials are intentionally external to source control
Open Release Conditions
The app is appropriate for internal alpha and signed beta preparation. Public production release still requires:
- real signing credentials per platform
- notarization on macOS
- trusted update hosting
- platform-native validation for Windows and Linux installers
Re-Verification Notes (2026-03-13)
- reran lint, typecheck, tests, and macOS directory packaging with no security regressions
- static source review confirmed no renderer-side
eval/new Functionusage - privileged surface remains preload-bridged through typed IPC channels only
child_process.spawnusage stays in main process and is constrained to connector command checks