Massale opdracht

Massale opdracht

Twee extra JSON-sleutels, en de balans kun je zelf bepalen.

Wat is Massale opdracht?

Een API kopieert elk veld in de hoofdtekst van een verzoek naar een intern object, zonder lijst van welke velden een klant kan instellen. Het token is eerlijk en het record is van de beller. Wat ontbreekt is een controle op veldniveau. U verzendt een normale profielupdate en vervolgens dezelfde update met twee extra JSON-sleutels, en de server schrijft beide. De oplossing leest alleen de velden die een profielbewerking moet wijzigen. Een eigendomscontrole of een rolbewaker kan een gat op veldniveau niet dichten.

Wat je leert in Massale opdracht

Massale opdracht — Trainingsstappen

  1. Een gewoon lid

    Perklane is een beloningsapp voor de detailhandel: leden verdienen punten bij aankopen en wisselen deze in voor cadeaubonnen in de app. Bob heeft zich aangemeld als een normaal lid, met een wegwerpidentiteit, om te zien hoe ver een gewoon account kan gaan. Zijn account is niets bijzonders: een gewone ledenzetel met een token dat zijn eigen profiel leest en bewerkt. Hij opent de ontwikkelaarsconsole om te zien wat de account-API hem geeft.

  2. Eén object, twee soorten velden

    Op de profielkaart van Bob worden de velden weergegeven die de app hem laat bewerken, en daarnaast de waarden die de app over hem bijhoudt. De API-referentie laat zien hoe de app dat profiel leest en opslaat.

  3. Lees zijn eigen profiel

    Eerst roept Bob het eindpunt aan zoals het bedoeld is: hij vraagt de API om zijn eigen profiel, met zijn eigen membertoken in een Authorization header, precies zoals de app dat doet.

  4. Zijn profiel, elk vakgebied

    De server retourneert precies wat hij zou moeten teruggeven: Bob's eigen profiel, omdat hij om zijn eigen record vroeg met zijn eigen token. Er is hier niets mis. Maar de vorm van de plaat is het bekijken waard.

  5. Voer een normale bewerking uit

    Bob gebruikt de functie eerst zoals bedoeld: een eenvoudige profielbewerking. Hij schakelt het verzoek om naar de opslagmethode en stuurt een nieuwe weergavenaam en avatar, de twee velden die het profielformulier daadwerkelijk biedt.

  6. De bewerking duurt

    De redding werkte. De weergavenaam en avatar veranderden en al het andere bleef staan.

  7. Zie de bewerking op zijn profiel

    Voordat hij verder gaat, doet Bob wat elk lid zou doen na het opslaan: hij laadt zijn accountpagina opnieuw. Wat de save ook naar zijn record schreef, is wat de pagina terugleest.

  8. Voeg de velden toe die het formulier nooit toont

    Hetzelfde verzoek, hetzelfde token, hetzelfde eindpunt. Bob bewaart zijn weergavenaam en avatar in de hoofdtekst en voegt nog twee sleutels toe, de exacte veldnamen die de leesoproep hem heeft gegeven: het puntensaldo en het niveau. Als de opslag alles wat het ontvangt samenvoegt, zal het deze ook schrijven.

  9. Het saldo dat hij nooit heeft verdiend

    Het kostte alles. Bobs eigen profiel zegt nu dat hij een half miljoen punten en een platina-niveau heeft, bepaald door niets meer dan twee extra sleutels in een profielbewerking.

  10. Zie het op zijn profiel

    De API heeft 200 geretourneerd, maar Bob wil het zien zoals elk lid dat zou doen. Hij herlaadt zijn eigen accountconsole: wat de opgeslagen gegevens ook naar zijn record hebben geschreven, is wat de pagina zal teruglezen.

Dekking van beveiligingsframeworks

OWASP API Top 10

  • API6:2019 Mass Assignment

CWE

  • CWE-915 Improperly Controlled Modification of Dynamically-Determined Object Attributes

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