Skip to content

Single-instance IPC uses a hardcoded PIPE_AUTHKEY #700

@Orinks

Description

@Orinks

Summary

activation_ipc.py ships a static authkey for the duplicate-launch activation pipe:

DEFAULT_PIPE_ADDRESS = r"\.\pipe\AccessiWeather.SingleInstance.Activation"
PIPE_AUTHKEY = b"AccessiWeather.SingleInstance.v1"

The pipe lives at machine scope, and because the authkey is a compile-time constant in the repo, any local process can complete the multiprocessing.connection auth handshake and send activation requests.

Risk: low (today)

The blast radius is currently small: a sender can only trigger UI actions (show the window, open an alert/discussion dialog), and the server uses send_bytes/recv_bytes + JSON rather than pickle, so there's no code-execution path. Deferred deliberately during the single-instance review for that reason.

When this matters

If the set of IPC request kinds ever grows to include anything with side effects beyond raising UI, revisit this. The fix is to derive the key per-user instead of shipping a constant — e.g. from the user SID or the runtime storage path — so a request can't be forged across user sessions.

Context

Came out of the single-instance startup review (finding #4). Related PRs: #698 (handle truncation), #699 (handoff dedupe / polling).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions