Get a free trial →

Push Logo

Consent phishing: how to detect and block it

Geometry graphic

Consent phishing tricks users into making malicious OAuth consent grants instead of stealing credentials

How consent phishing works

  1. The attacker registers a malicious application with an identity provider (Microsoft Entra, Google, GitHub, or others)
  2. The victim receives a link — via email, a GitHub issue, a Teams message, or another platform — that triggers an OAuth consent prompt
  3. The consent prompt appears on the real identity provider's domain, requesting permissions such as access to email, files, or profile data
  4. The user reviews the consent prompt and clicks "Accept," granting the malicious app the requested permissions
  5. The app uses the granted OAuth tokens to access the victim's data via API — reading email, exfiltrating files, or establishing persistence for follow-on attacks

Why most security tools miss consent phishing

Push Security consent audit view showing OAuth permissions granted by users, helping security teams identify suspicious integrations and stop persistent access.

What platforms are vulnerable to consent phishing?

Push Security OAuth detection alert flagging a high-risk consent phishing attempt requesting excessive application permissions in the browser.

How Push detects and blocks consent phishing

Push Security OAuth detection alert flagging a high-risk consent phishing attempt requesting excessive application permissions in the browser.

Frequently asked questions

Consent phishing is a social engineering attack that tricks users into granting a malicious third-party application access to their account through a legitimate OAuth consent flow. The attacker registers a malicious app, delivers a consent prompt link to the victim, and the victim authorizes the app on the real identity provider's page. The app then uses the granted OAuth tokens to access the victim's email, files, calendar, and other data via API. Consent phishing is a form of authorization phishing — it targets the authorization layer rather than authentication, which means all forms of MFA including passkeys are bypassed because the user authenticates normally.

Credential phishing targets passwords, but consent phishing doesn't touch the login at all — the user is authorizing the attacker's app to access their account, with the level of access determined by scopes. This token-level API access survives password resets, MFA changes, and credential rotation. Consent phishing simply involves clicking "accept" on a consent authorization screen.

Both are authorization phishing techniques that target OAuth flows after the user has authenticated. Consent phishing uses the authorization code grant — the attacker creates a malicious third-party app and the user authorizes it via a consent prompt. Device code phishing uses the device authorization grant (RFC 8628) — the attacker generates a code and the user enters it on the identity provider's device code page, authorizing an attacker-controlled instance of a legitimate app on their account. The key practical difference: consent phishing requires the attacker to register a third-party app that survives publisher verification, while device code phishing abuses first-party apps that are already consented in the tenant (like Azure CLI or Microsoft Office), bypassing the consent restrictions that have reduced traditional consent phishing volume.

No. Consent phishing targets the authorization layer, which operates after authentication has succeeded. The user authenticates normally on the real identity provider — entering their password, completing MFA, or using a passkey — and the attack exploits the consent decision that follows. Passkeys are the strongest defense against authentication phishing (AiTM, credential theft), but they don't address consent phishing because the authentication isn't what's under attack.

The malicious app receives OAuth tokens that provide API-level access to whatever data the user consented to — typically email, files, calendar, and profile information. The attacker can read and exfiltrate data, send messages on behalf of the user, or establish persistence for follow-on attacks. OAuth tokens are independent of the user's password, so changing the password doesn't revoke access. The specific OAuth grant must be explicitly revoked, either through the identity provider's admin console or through a tool that provides direct OAuth app management. If the app was granted broad scopes, the blast radius can extend beyond the individual user to shared drives, shared calendars, and collaborative resources the user has access to.

Enterprise cloud platforms like Microsoft 365 and Google Workspace have configurable controls for third-party apps, and even prevent apps from being user consented without admin approval by default. These controls don't exist for all SaaS and cloud apps however, and even if they do, you'd need to be administering every app centrally and have configured them appropriately.

Push's OAuth consent monitoring and blocking covers 20+ authorization servers — in warn mode, it surfaces an in-browser warning for unrecognized applications; in block mode, it prevents the consent grant entirely. This extends consent governance beyond the platforms where admin consent controls exist to the full range of authorization servers employees encounter.

No single tool covers the full consent phishing attack surface. IdP admin consent controls protect your primary platforms but don't extend to the broader SaaS estate. SSPM tools audit existing grants retrospectively but can't prevent consent in real time. Email security may catch email-delivered lures but misses in-app delivery via GitHub issues, Teams messages, and other platforms.

Browser-level consent monitoring sits at the point where every OAuth consent flow executes — regardless of delivery channel, identity platform, or device management status — making it the only control that can cover the full authorization surface for managed and unmanaged apps. Push provides this across 20+ authorization servers, with configurable warn or block responses per application.