Skip to content

In-memory OAuth state storage incompatible with multi-instance deployments #52

@andrewmusselman

Description

@andrewmusselman

Source: ATR ASVS V10.4.2 audit — Observation 1

Description

OAuth state parameters are stored in a process-local dictionary in src/asfquart/generics.py:

pending_states = {}  # keeps track of pending states and their expiry

In a multi-instance or load-balanced deployment, if the OAuth callback is routed to a different instance than the one that initiated the flow, the state lookup will fail because pending_states is not shared across processes.

Recommendation

For single-instance deployments this is acceptable. If ATR is ever deployed behind a load balancer with multiple instances, consider moving state storage to a shared backend (e.g., Redis, database) or ensuring session affinity at the load balancer level.

Severity

Informational — current single-instance deployment is not affected, but this is a scaling concern for future infrastructure changes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions