Mover entitlement accumulation
An employee who changes roles keeps every entitlement from every prior role, because provisioning adds access automatically and nothing removes the old access automatically.
How it works
Mover entitlement accumulation is the access an account keeps from every job its owner used to hold. A transfer or promotion grants the new role's access, but the old role's access stays, so any attacker who compromises the account inherits the union of all of them.
Joiner, mover, leaver automation handles joiners and leavers reasonably well because both have a forcing event: a new hire cannot work without access, and HR marks a departure. The mover event has no equivalent forcing function on the removal side. The pattern runs like this:
- HR records the change. A department, job title, cost centre or manager attribute changes in the HR system and flows to the directory.
- Provisioning grants the new role. Attribute-based rules, birthright roles and dynamic groups add the access the new title needs, often on the same day, because someone is waiting to start work.
- Most of the old access does not depend on the attribute. Rule-based memberships recalculate when the attribute changes, but direct group assignments, approved access requests, application-level roles, shared mailboxes and admin grants were never tied to the old title. Nothing in the change says "remove these".
- Disconnected applications are invisible. Access held in apps that keep their own accounts and permissions, outside the identity provider, is a local login bypass for governance too. The IGA platform cannot revoke what it cannot see.
- The layers stack. After several moves, the account's entitlements record every job held rather than the current one, including combinations that segregation of duties rules would block for a new hire.
- An attacker inherits everything. Phishing, an infostealer or a help desk reset gives the attacker a valid account whose reach no current manager fully knows.
Why it works
Least privilege assumes access matches current job function. The assumption that fails is that granting and removing are symmetric processes triggered by the same event. They are not. A transfer is a positive event, and grants are easy to automate because the person asking is blocked. Nobody is blocked by too much access, so removal depends on a deliberate review catching what automation leaves behind.
The control frameworks know this. NIST SP 800-53 Rev. 5 has a dedicated control, PS-5 Personnel Transfer, requiring organizations to "review and confirm ongoing operational need for current logical and physical access authorizations" when people are reassigned, and to modify access to match. AC-2 requires account managers to be notified within a defined period "when users are terminated or transferred" and to "align account management processes with personnel termination and transfer processes". The gap is in carrying it out. A US Department of Homeland Security inspector general audit of USCIS (OIG-22-65, September 2022) found 864 people who transferred between USCIS offices in fiscal year 2021 without being formally tracked to confirm their access was still appropriate. The IT office relied on each new supervisor to review access on their own initiative, with no control to enforce it. USCIS had identified the gap in an internal review in May 2017 and still had not closed it in August 2022.
Periodic certification does not catch up on its own: reviewers shown raw group names approve them.
How to detect it
- Grant without a matching removal (Entra audit log). Correlate an "Update user" audit event whose modified properties show a new department or job title with the "Add member to group" events that follow. Flag users with no "Remove member from group" events in the following weeks. Do the same for "Add member to role" and "Add eligible member to role" for privileged roles.
- Same pattern in the Okta System Log. In Okta, look for
user.account.update_profilefollowed bygroup.user_membership.addorapplication.user_membership.add, with nogroup.user_membership.removeorapplication.user_membership.remove. Watchuser.account.privilege.grantandgroup.privilege.grantfor admin rights that survive a move. - Peer distance. Microsoft Entra access reviews offer a User-to-Group Affiliation recommendation that scores each member's distance from the rest of the group in the reporting structure and recommends Deny for low affiliation. That is close to a mover detector. It needs an Entra ID Governance license, a populated manager attribute, and groups of 600 users or fewer.
- Disuse. The inactive-user recommendation in Entra access reviews recommends Deny for users who have not signed in within 30 days, and for application assignment reviews it checks last activity in the app rather than the tenant. Entitlements unused since a role change most likely belonged to the old role.
- Role baselines. Compare each account with the role-mined baseline for its current title and flag the outliers.
- Campaign metrics. Certification campaigns with high completion and near-zero revocation suggest reviewers are approving without evaluating, not that access is clean.
Be honest about the limits: some roles legitimately need cross-functional access, peer-distance models flag deliberate exceptions, and disuse windows miss quarterly or annual tasks. None of these signals sees disconnected applications. Treat each result as a review prompt, not a verdict.
How to stop it
- Make the move itself a removal trigger. Microsoft Entra Lifecycle Workflows include mover tasks such as "Remove user from selected groups", "Remove all access package assignments for user" (in mover templates the default is scheduled removal after 15 days, which gives a handover window), "Send email to notify manager of user move" and "Revoke all refresh tokens for user". The feature requires Microsoft Entra ID Governance or Microsoft Entra Suite licenses. IGA platforms such as SailPoint and Saviynt can also run lifecycle actions on attribute changes; configure the removal side explicitly.
- Grant through packages and roles that expire. Access granted as a time-bound assignment, or tied to an attribute through RBAC or ABAC, falls away on its own when the attribute changes. Direct assignments do not.
- Run an event-driven review for the new manager. Send a targeted review when the move happens, rather than waiting for the annual campaign, and show last-use data next to each entitlement.
- Enforce SoD rules at grant time, so a toxic combination built from old and new roles is blocked or flagged automatically, independent of any review.
- Remove standing privilege. Privileged rights through just-in-time access or zero standing privileges cannot accumulate across moves.
- Connect or inventory every application, including ones with local accounts, so the removal reaches them.
- Track revocation rate, not completion rate, for access certification. See the identity governance program guide and what is IGA.
Seen in the wild
We have no publicly attributed breach in our catalog where an incident report traced the attacker's access specifically to unrevoked entitlements from a prior role. Mover accumulation is found in access reviews and audits, not named in post-mortems, so it shows up in audit reports rather than breach write-ups:
- DHS OIG-22-65: USCIS Should Improve Controls to Restrict Unauthorized Access to Its Systems and Information (September 7, 2022). It found 864 untracked transfers in fiscal year 2021 and recommended a process "to identify all transferred employees and ensure that their access is reviewed and verified immediately".
- ITGC audits and identity: the access certification evidence auditors accept explains how auditors surface the same finding in private-sector controls testing.
The sibling technique is orphaned account abuse, where the whole account outlives its owner rather than just part of its access.
Sources
- MITRE ATT&CK T1078: Valid Accounts (mitigations M1026 and M1018 call for routinely auditing accounts and their permission levels)
- NIST SP 800-53 Rev. 5: PS-5 Personnel Transfer, AC-2 Account Management, AC-6 Least Privilege
- DHS Office of Inspector General: OIG-22-65 (USCIS access controls)
- Microsoft Entra: lifecycle workflows overview and lifecycle workflow tasks
- Microsoft Entra: review recommendations for access reviews
- Microsoft Entra: audit log activity reference
- Okta: System Log event types
Related on Start with Identity
- CVEAD FS elevation of privilege exploited as a zero-day
A low-privileged local user on an AD FS server could become administrator on the box that holds the federation token-signing keys. Microsoft saw exploitation be
- CVEFreeIPA anonymous LDAP write plants a Kerberos principal in the admins group
FreeIPA's self-managed OTP token ACI let an anonymous LDAP client create a token entry with extra attributes, which combined with a 389 Directory Server ACI fla
- CVEIvanti Connect Secure root escalation, the last link in the UTA0576 chain
The privilege escalation UTA0576 chained with CVE-2026-104935 to reach root on fully patched Ivanti Connect Secure VPNs, then mine Active Directory. Patched Oct
- RankingBest CIEM for Enterprises: Top 4 Cloud Entitlement Platforms
The best enterprise CIEM platforms in 2026: Wiz, Sonrai Security, Britive, and Microsoft Entra Permissions Management (retired November 2025). Ranked for multi-
- RankingBest CIEM for Multi-Cloud: Top 5 Entitlement Platforms
The best multi-cloud CIEM platforms in 2026: Wiz, Tenable One Cloud Exposure, Cortex Cloud, Orca Security, and Sonrai Security. Ranked for cross-cloud discovery
- TemplateJoiner-Mover-Leaver Procedure Template
A step-by-step joiner, mover and leaver procedure with a fill-in SLA table, the evidence auditors sample for each event, and the control each step maps to in NI