Security and IPC architecture of the Sparkle Installer
2.xThe Sparkle installer is designed with a zero-trust model regarding the updater process. To ensure security, the installer process performs its own extraction, validation, and installation tasks within a single process. The launcher component (which may run as an XPC service) does not trust the updater to provide paths for the installer or the agent tool.
Key security and operational behaviors:
- Process Isolation: The installer does not trust the updater for critical paths or communication speed.
- Timeouts: Sparkle uses timeouts and ping/pong messages to handle potential communication delays or connection invalidation issues, particularly on older macOS systems.
- Termination Behavior: When the application terminates before final installation, Sparkle sends an Apple quit event to all running application instances found within the agent's GUI login session. It does not attempt to terminate instances in other logged-in sessions.
- Single Instance Limitation: The installer currently only watches a single process identifier for termination; it does not handle cases where new instances are launched after the initial watch begins.