Overmatige gegevensblootstelling
Het scherm verbergt de velden. Het API-antwoord doet dat niet.
Wat is Overmatige gegevensblootstelling?
Een eindpunt serialiseert een volledig opgeslagen record en vertrouwt erop dat de client-app alleen de veilige velden weergeeft. Bellers lezen het onbewerkte antwoord, niet de weergegeven interface. U opent een profielkaart met een naam en een stad, legt het gesprek erachter vast en zoekt e-mail, telefoon, geboortedatum en thuiscoördinaten in de payload, en herhaalt dit vervolgens in een ontdekkingsfeed voor duizenden mensen. De oplossing is een expliciete projectie van de acceptatielijst op de server. Het gepatchte eindpunt antwoordt nog steeds 200, alleen met minder velden.
Wat je leert in Overmatige gegevensblootstelling
- Herken buitensporige gegevensblootstelling: een eindpunt retourneert meer velden dan de client nodig heeft, omdat het het hele object serialiseert en afhankelijk is van de client om te filteren, zodat het onbewerkte antwoord gevoelige velden lekt die het scherm nooit laat zien
- Begrijp dat de client geen beveiligingsgrens is: bellers lezen het onbewerkte antwoord, niet de weergegeven gebruikersinterface, zodat elk veld in de payload zichtbaar is, ongeacht wat de app weergeeft
- Onderscheid het van verbroken autorisatie op objectniveau (het bereiken van het object van een andere gebruiker via ID) en verbroken autorisatie op functieniveau (het aanroepen van een functie boven uw rol); hier mag de beller de bron lezen en het probleem is dat de veldset wordt geretourneerd
- Pas de oplossing toe: creëer antwoorden op basis van een expliciete acceptatielijst op de server of projectie van openbare velden, serialiseer nooit een opgeslagen record in bulk en trim gedeelde serializers één keer om elke route te sluiten die er gebruik van maakt
- Erken dat overmatige blootstelling geen bug in de toegangscontrole is: het vaste eindpunt antwoordt nog steeds met 200, het retourneert alleen minder velden, dus het blokkeren van het verzoek zou ten onrechte een openbare functie verbreken
- Controleer elk eindpunt dat een volledig model serialiseert, met name lijst- en ontdekkingsfeeds waarbij één serialisator die te veel deelt een bulkgegevensexport wordt
Overmatige gegevensblootstelling — Trainingsstappen
-
Een openbare runnerpagina
Vandaag richt Bob zich op Trailkin, een sociale hardloopapp, om op grote schaal persoonlijke gegevens over zijn leden te verzamelen. Hij meldde zich aan als gewoon lid met een wegwerpidentiteit. Trailkin-profielen zijn openbaar: iedereen kan elke hardloper opzoeken. Bob opent de pagina van een doel, waarop de openbare kaart van de loper wordt weergegeven en een feed van andere lopers in de buurt.
-
Alleen de veilige velden, in beeld
De profielkaart is bewust spaarzaam gehouden. Het is wat iedereen hoort te zien, en het laat niets zien dat een aanvaller kan gebruiken om deze persoon te vinden of zich voor te doen als deze.
-
Hardlopers bij jou in de buurt
Onder de kaart toont dezelfde pagina de ontdekkingsfeed van Trailkin: andere leden rennen in de buurt. Net als het profiel toont elke kaart hier alleen openbare details.
-
Bekijk de verzoeken
De kaart en de feed zijn elk afkomstig uit gegevens die de app via de API heeft opgehaald. Bob opent de browsernetwerktools en laadt de pagina één keer opnieuw, waarbij hij beide oproepen vastlegt die de app maakt om de app te bouwen.
-
Twee telefoontjes en alles wat de kaart verborg
De netwerktools hebben het herladen vastgelegd. Beide oproepen van de gemaakte pagina staan in de verzoekenlijst en Bob opent het antwoord op de eerste, de profieloproep.
-
Open het nabijgelegen gesprek
Eén profiel is één slachtoffer. De oproep van de feed staat precies in de lijst. Bob klikt erop om te lezen wat het verzoek van de lopers bij jou in de buurt heeft opgeleverd.
-
Het lek, op schaal
De dichtstbijzijnde reactie is hetzelfde lek, vermenigvuldigd over de hele feed.
-
Kennis check
Je hebt zojuist gezien hoe een gewoon ledenaccount privégegevens las die de app nooit weergeeft. Leg vast waarom.
-
De waarschuwing komt binnen
U bent eigenaar van de atleetprofielservice van Trailkin. Van de ene op de andere dag werd door de monitoring een account van één lid gemarkeerd, waarbij de volledige gegevens voor duizenden gebruikers werden verzameld via het openbare profiel en nabijgelegen eindpunten. De beveiliging heeft u de details per e-mail gestuurd.
-
Open de profielrouter
Open de atletenrouter en kijk hoe deze een opgeslagen record omzet in een reactie.
Dekking van beveiligingsframeworks
OWASP API Top 10
- API3:2019 Excessive Data Exposure
CWE
- CWE-213 Exposure of Sensitive Information Due to Incompatible Policies
- CWE-200 Exposure of Sensitive Information to an Unauthorized Actor
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