Home / Knowledge hub / Horizontal privilege escalation
Knowledge hub
Horizontal privilege escalation
Reaching another user's data at your own level, not a higher one.
What it means
Horizontal privilege escalation means reaching data that belongs to somebody at your own level. One customer opens another customer's invoice. One employee reads a colleague's HR file. Nobody gained a role and nobody touched an admin page.
PortSwigger describes it as a user reaching resources belonging to another user instead of their own. The movement runs sideways across accounts. Vertical escalation runs upwards, from ordinary user to administrator, and that is the distinction people mix up.
Why it matters
Damage does not depend on admin rights. If one customer can walk through other customers' records, you have a breach covering every account in the table. The fact that any registered user could have found it makes it worse rather than milder.
MITRE files the pattern as CWE-639, authorisation bypass through a user-controlled key. Enterprise buyers ask about this one directly, because it spills personal data at scale and nobody can describe it as a near miss afterwards.
Severity scoring often softens it, since no privilege was gained. Count the rows instead. One ordinary account reaching every customer record is not a medium problem, whatever the label on the ticket says.
How it shows up
Look at anything that names a record in a request. An order number in a URL, a customer id in a JSON body, a file name in a download link, a tenant id in a header.
Hold two real accounts. Capture a request as the first user, replay it from the second, and read what comes back. The same pattern usually repeats across endpoints, because somebody copied the code that worked. Catching all of them rather than the first means testing every role against every resource, which is how our authorisation matrix runs.
Questions people ask
Horizontal privilege escalation, answered
How is this different from vertical privilege escalation?
Direction. Vertical means gaining rights you never had, such as a standard user reaching an admin function. Horizontal means keeping your rights and using them on somebody else's records.
Severity ratings often treat vertical as worse. That is a habit worth questioning, because reading every customer record is not a mild outcome.
Is it the same thing as IDOR?
They overlap heavily. IDOR describes the mechanism, an identifier taken from the request and trusted. Horizontal escalation describes the result, one user reaching a peer's data.
Most IDOR findings are horizontal escalation. You can also get there through a broken filter or a leaky search, with no identifier involved.
Is it really serious if no admin access is involved?
Yes, and often more serious. Admin accounts are few and watched. Customer records are many, and the same flaw usually works on all of them.
The question to ask is how many rows one ordinary account could reach before anybody noticed. That number is your real finding.
How do bug bounty hunters test for it?
Two accounts and a proxy. They perform an action as the first account, capture the request, then replay it with the second account's session and the first account's object id.
It is deliberately boring work. The skill is in covering every endpoint rather than the two or three that are easy to reach.
Can a scanner catch it on its own?
Rarely, without help. A scanner sees a valid request answered with a valid response and has no idea the record belonged to somebody else.
Catching it needs real logins in more than one role and a comparison of what each one got back. That is the part we automate beside your existing tooling.
Related
Terms that sit next to this one
Vertical privilege escalation
Climbing to a higher level of access than your account was granted.
Privilege escalation
Gaining rights you were never given, sideways or upwards.
IDOR
Changing an id in a request and getting back someone else's record.
BOLA
An API returns a record just because you asked for it by number.
Authorization
Deciding what a proven user is then allowed to do.
Can one customer read another's?
We sign in as every role you have and try each resource against all of them, then give you the request and the response that proved it. A pilot runs 30 days on one application for $199.
Or start with a $199 pilot on one application: thirty days, success criteria agreed before day one, credited against the annual if you convert.