Consent Phishing: What Did That App Approval Actually Permit?

Follow an app approval from the employee’s decision to the permission grant and resource activity. Compare the requested permissions with the stated business purpose.

An uncapped black fountain pen lies on a blank sheet, with stacked folders blurred behind it.

What should a consent-phishing review establish?

Identify the application, permission type, granted authority, affected scope, and observed activity. A permission request, an accepted grant, and a completed resource operation support different conclusions.

A caller asks an employee to “repair calendar synchronization” by approving an application. The employee signs in on a legitimate identity-provider page. The consequential decision comes next: what authority does the employee grant to that application?

Authentication and authorization answer different questions. An app approval adds another: which permissions did the user grant, and what did the app do with them? The Entra flow below is illustrative; the separately cited Salesforce campaign is a different implementation.

Which permissions is the app asking for?

Delegated permissions let an app act on behalf of a signed-in user. Microsoft Graph application permissions let it act without a signed-in user and require administrator consent. Keep those cases separate when describing who approved access and whose authority is involved. Microsoft: permissions and consent

The app directs the browser to Entra for authorization. Where required and permitted, Entra asks for consent and records approval. The browser delivers the returned authorization code to the app redirect URI. The app redeems it with PKCE and client authentication where required, receives an access token, and calls the resource. The resource validates and authorizes the request, then returns a result. This is an illustrative successful delegated flow with sign-in compressed.

Successful delegated authorization-code flow

  1. App → Browser → Entra

    The app directs the browser to an authorization request for its scopes.

  2. Entra ↔ Browser

    If required and permitted, Entra shows consent. The user approves delegated permissions; the grant is recorded.

  3. Entra → Browser → App

    Entra redirects with an authorization code, delivered to the app’s redirect URI.

  4. App → Entra

    Redeems the code with PKCE and authenticates the client where required.

    Successful validation

  5. Entra → App

    Returns an access token.

  6. App → Resource API → App

    The app sends a token-bearing request. The API validates the token, checks authorization, and returns the result.

A denied grant does not create this successful path. Grant approval alone does not prove API use.

Successful delegated authorization-code flow, with sign-in compressed and fresh consent illustrated. Solid arrows show requests/actions; dashed arrows show responses. Open full-size diagram.

The sequence illustrates a successful delegated authorization-code flow with fresh consent. Sign-in steps are compressed. Consent is shown only where required and allowed by tenant policy; a user cannot approve every permission in every configuration. The app redeems the code at the token endpoint with PKCE and client authentication where required, then presents the access token to the resource. The resource must still validate and authorize the operation. Microsoft: authorization-code flow

The authorization code is delivered through the browser to the app’s redirect URI. It is not the API credential. That distinction matters when drawing the flow: the API call occurs only after the app obtains an access token.

Compare the permissions with the task

Compare two real Microsoft Graph delegated permissions before approving a scheduling integration:

Calendars.ReadBasic permits reading calendar events while excluding properties such as bodies, attachments, and extensions. Files.Read permits reading the signed-in user’s files. A file-reading request needs its own business justification when the task is to display calendar events. Microsoft Graph: Calendars.ReadBasic, Files.Read

Record the client application identifier, intended business purpose, requested permission names, permission type, and approval authority. Compare them with the approved integration record. An unexplained file permission is a reason to stop for review; it does not by itself establish malicious intent or an observed file read.

A familiar name or verified publisher is useful context, not permission approval. Evaluate the requested authority and the intended task. Microsoft: consent-phishing hardening

Separate approval from use

Three evidence states produce different findings:

  1. A prompt is shown. This establishes an approval request, not acceptance.
  2. A grant is recorded. This establishes authority for the specified app and scope, not which data was used.
  3. A resource operation is observed. This establishes the particular read or change supported by that record.

To validate actual file access, use an approved test file in a dedicated, authorized test arrangement. Retain the actual response and corroborating resource record. If no operation was attempted, leave activity untested rather than turning the theoretical permission into a reported data loss.

How UNC6040 used app approval

In June 2025, Google Threat Intelligence Group reported voice-phishing activity in which UNC6040 persuaded employees to authorize a modified Salesforce Data Loader application, enabling data theft. The report describes social engineering rather than a Salesforce vulnerability. GTIG: The Cost of a Call

UNC6040 shows how a conversation can lead to application authorization. Its Salesforce mechanics differ from the Entra scopes and flow described above.

Examine the grant when responding

Identify the grant, affected identity or organizational scope, app, and permissions. Follow the approved illicit-consent response procedure, including removal of unauthorized grants and review of application activity. A password-focused action does not answer the grant question. Microsoft: illicit consent investigation

Verify current authority and resource behavior separately from prior activity. Grant removal does not establish what happened before removal, and existing token behavior can affect verification. Use the containment matrix to keep token renewal, resource acceptance, and grant state distinct.

Where employees can verify an app

Give the employee a concrete route for three checks: was the task initiated through approved support, is this the approved application, and do its requested permissions match the work? Provide an independent reporting destination so they do not need the caller to resolve the doubt.

For a simulation that stops before approval, measure whether the request was verified or escalated with enough information to identify the app. Testing actual permissions and resource access requires an agreed technical test. Carry the observed permission request and decision into the containment review when assessing a completed approval.

Put an app-approval request to the team

In a scoping call, choose the app request and how employees should verify or report it. Testing permission grants or resource access needs a separate technical scope.