Summary
Ghost contains an information disclosure vulnerability in the Admin API that can expose secret tokens associated with pending staff invitations. A staff user with permission to view invitations may use those tokens to accept an invitation for a more privileged role, potentially escalating privileges.
Affected context
The issue occurs in Ghost deployments where the Admin API exposes details of pending staff invitations to authorized staff users. Risk is higher when a staff member can view invitations but should not be able to access invitation secrets or accept invitations intended for higher-privileged roles.
Exploit preconditions
- Attack surface: Ghost Admin API invitation-management functionality
- Required access: An authenticated staff account with permission to view pending invitations
- Trigger point: Retrieval and subsequent use of secret data associated with a pending invitation
- Why exploitation is possible: The API response may disclose invitation tokens without sufficiently limiting their visibility or binding their use to the intended recipient and role
Why this happens
The vulnerability reflects insufficient control over sensitive information returned by an administrative API. Secret invitation tokens are exposed to a staff role that can view pending invitations, creating an authorization and information-disclosure boundary failure. This maps to CWE-203, Observable Discrepancy, because differences in exposed response data can reveal security-sensitive information that should not be observable to the requesting user.
Potential impact
- A staff user may obtain secret tokens for pending invitations
- An attacker with the required staff access could accept an invitation for a higher-privileged role
- Account or administrative privileges could be escalated
- The integrity and confidentiality of Ghost content and administration could be affected
General mitigation guidance
Mitigation generally focuses on minimizing sensitive data exposure and
enforcing authorization at every invitation lifecycle operation.
Common defensive patterns include:
- Returning only the minimum invitation metadata needed for the requesting role
- Never exposing invitation secrets through general invitation-listing endpoints
- Binding invitation tokens to the intended recipient, role, and lifecycle state
- Requiring explicit authorization checks when invitations are viewed or accepted
- Applying least privilege to staff roles and separating invitation administration from general staff access
- Auditing invitation access, acceptance, role changes, and anomalous privilege transitions
How teams detect issues like this
Detection approaches may include:
- Static analysis and API reviews that identify secrets included in administrative list or detail responses
- Code review checks for authorization decisions based only on broad staff permissions
- Tests verifying that lower-privileged staff cannot observe or use higher-privileged invitation secrets
- Monitoring for unusual invitation acceptance, role assignment, or privilege changes
- Policy enforcement that classifies invitation tokens as secrets and prohibits their exposure in logs, responses, and telemetry
- Neutral automated security review tools that flag excessive data exposure and authorization gaps

