Verticale privilege-escalatie
Herschrijf één claim in uw eigen token en word de beheerder.
Wat is Verticale privilege-escalatie?
Horizontale escalatie beweegt zijwaarts naar de gegevens van een andere gebruiker. Verticale escalatie beklimt de ladder, omdat de autorisatiepoort vertrouwt op een waarde die de aanvaller vasthoudt. U zult merken dat uw rol binnen een JWT-sessiecookie reist, de claim herschrijft van kijker naar beheerder en een bedieningsconsole binnenloopt zonder gestolen wachtwoord en zonder exploitcode. De poort decodeert het token en leest de claim zonder de handtekening te controleren, en decodering bewijst niets. De oplossing verifieert eerst de handtekening, waarbij rechten op de server opnieuw worden afgeleid van vertrouwde records als backstop.
Wat je leert in Verticale privilege-escalatie
- Onderscheid verticale van horizontale bevoegdheidsescalatie door te bepalen waar de aanvaller zich verplaatst in de rollenhiërarchie
- Erken dat authenticatie (bewijzen wie je bent) losstaat van autorisatie (bewijzen dat je dit mag doen)
- Begrijp dat elke rol, laag of toestemming in een token of cookie op de client door de aanvaller kan worden gecontroleerd totdat de integriteit ervan is geverifieerd
- Pas de oplossing toe die de handtekening van een token verifieert voordat een claim wordt vertrouwd, zodat een vervalste rol wordt afgewezen
- Voeg een backstop aan de serverzijde toe door bevoegdheden opnieuw af te leiden van vertrouwde records en zo min mogelijk bevoegdheden af te dwingen
Verticale privilege-escalatie — Trainingsstappen
-
Een alleen-lezen stoel
Bob heeft een legitiem account met weinig rechten op Talveyn's Operations Console, de alleen-lezen-kijkplaats van een contractant. Hij logt in met zijn eigen inloggegevens, precies waar hij recht op heeft. Geen wachtwoord gestolen, geen account gekraakt. Hij landt op zijn kijkershuis. Hij kan zijn ondersteuningswachtrijen zien en één kaart die hij niet mag aanraken: de beheerdersconsole.
-
De gesloten deur
Bob opent de Admin Console toch vanaf zijn dashboard, gewoon om te zien hoe ver zijn stoel komt. De server wijst hem af met een beperkingsmededeling. De poort is echt. De interessante vraag is wat die poort eigenlijk controleert.
-
De rol rijdt in het token
Bob opent de cookie-inspecteur van de browser. Zijn sessie is een JWT en de console heeft deze gedecodeerd in leesbare claims: met wie hij is aangemeld en welke rol hij krijgt. Daar is het, duidelijk zichtbaar: een leesviewer voor rolclaims. De waarde die de poort controleert, zit in een token dat zijn eigen browser vasthoudt.
-
Verzin de rol
Als de console zijn rol rechtstreeks vanaf het token leest en het token in zijn browser staat, kan hij het herschrijven. Bob bewerkt de rolclaim van kijker naar beheerder. De inspecteur codeert het token opnieuw met de nieuwe claim. De handtekening komt niet langer overeen met de payload, maar dat doet er alleen toe als de server de moeite neemt om dit te controleren.
-
Binnen de beheerdersconsole
Bob herlaadt het beheerdersgedeelte, dit keer met het vervalste token. De poort leest admin zijn claims voor en zwaait de deur open. Hij beschikt nu over het volledige beheerdersoppervlak: het record van elke gebruiker, de mogelijkheid om elke rol te veranderen, de hele map te exporteren en de facturering en uitbetalingen te regelen. Een alleen-lezen stoel, twintig seconden geleden.
-
Noem wat er is gebeurd
Voordat de puinhoop van Bob de ochtend van Alice wordt, wees nauwkeurig over de escalatie.
-
Een kijker met admin-handen
Alice is eigenaar van de toegangscontroles van de console. Van de ene op de andere dag signaleerde monitoring iets dat onmogelijk zou moeten zijn: een sessie op de kijkersstoel waarbij alleen beheerdersacties werden uitgevoerd. Security Operations heeft haar de bevindingen per e-mail gestuurd.
-
Open de beheerderspoort
Elke beheerdersroute deelt één poort, require-admin.js . Alice opent het om precies te zien hoe het bepaalt wie als beheerder telt.
-
De poort vertrouwt het token
De poort haalt de rol van de beller uit het sessietoken en vergelijkt deze met admin. Wat het nooit doet, is controleren of het token echt is. Een in de browser herschreven payload decodeert prima, zodat een vervalste rol er meteen doorheen gaat.
-
Kies de echte oplossing
Je hebt de bug gezien. Kies de wijziging waarmee deze daadwerkelijk wordt gesloten.
Dekking van beveiligingsframeworks
OWASP Top 10
- A01:2025 Broken Access Control
- A01:2021 Broken Access Control
CWE
- CWE-269 Improper Privilege Management
- CWE-345 Insufficient Verification of Data Authenticity
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security