Onjuist voorraadbeheer
De oude API-versie die u bent vergeten, antwoordt nog steeds.
Wat is Onjuist voorraadbeheer?
Een beveiligingscontrole heeft alleen betrekking op de eindpunten waarvan u weet dat ze actief zijn. Oude API-versies, ongedocumenteerde eindpunten en vergeten hosts blijven buiten dat plaatje ingezet en bedienen nog steeds de onbewaakte code die ze altijd al deden. U krijgt een 401 van de huidige versie, wijzigt één URL-segment van v2 in v1 en krijgt 200 met de naam, het e-mailadres en het thuisadres van een klant, waarna u de account-ID's in een bulklijst plaatst. Door de oplossing wordt de oude versie buiten gebruik gesteld, zodat elk pad eronder 410 Verdwenen retourneert. Beëindiging in de documentatie is geen buitengebruikstelling.
Wat je leert in Onjuist voorraadbeheer
- Herken ongepast voorraadbeheer: oude, ongedocumenteerde of niet-productieve API-versies en hosts blijven actief en bereikbaar, buiten de controles die de huidige versie afdwingt
- Begrijp dat een nieuw besturingselement (een auth-gateway, een controle) alleen betrekking heeft op de versies die erachter zijn gemonteerd, zodat een oudere versie die nog in productie is, de pre-controlecode aan iedereen aanbiedt
- Zie hoe het wijzigen van één URL-segment van de huidige versie naar een verouderde versie een vergeten build bereikt, en hoe een niet-geverifieerd eindpunt door eenvoudige opsomming verandert in bulkgegevensblootstelling
- Onderscheid het van defecte autorisatie op objectniveau (een ontbrekende eigendomscontrole per record binnen een geauthenticeerd eindpunt) en van overmatige gegevensblootstelling (te vaak terugkerende velden); hier draait de hele versie niet-geverifieerd omdat deze nooit met pensioen is gegaan
- Pas de oplossing toe: stop niet-ondersteunde versies zodat ze 410 Gone retourneren en uit productie komen, en houd een inventaris bij van elke geïmplementeerde versie, omgeving en host, zodat niets onopgemerkt blijft
Onjuist voorraadbeheer — Trainingsstappen
-
Een oude versie, nog steeds vermeld
Emberline is een app voor zonne-energie en energie voor thuis: klanten koppelen hun panelen en batterij, en de app leest hun account uit de API van Emberline. Vandaag richt Bob zich op Emberline. Hij heeft geen rekening en geen teken; hij wil gewoon een lijst met klanten en waar ze wonen, om door te verkopen. Hij begint met de openbare ontwikkelaarsdocumentatie van Emberline om de API te leren kennen.
-
Verouderd, niet verdwenen
De documenten beschrijven twee API-versies. Bob leest hoe elk etiket is geëtiketteerd, en één etiket valt hem op.
-
Vraag de huidige versie
Eerst roept Bob de huidige versie aan zoals de documenten beschrijven: hij vraagt om één account op basis van zijn id, waarbij hij de voorbeeld-id uit de referentie gebruikt. Hij heeft geen token, dus dit is het niet-geverifieerde geval. Als de gateway zijn werk doet, moet hij hem weigeren.
-
De poort weigert
De huidige versie deed precies wat het moest doen.
-
Verander één segment
Bob stuurt hetzelfde verzoek, nog steeds zonder token, en verandert slechts één ding: de versie in de URL, van v2 tot v1 , de verouderde build. Al het andere is identiek. Als de oude versie echt verdwenen is, zou dit niets moeten opleveren.
-
De vergeten versie antwoordt
Hetzelfde verzoek dat de gateway zojuist weigerde, kwam terug met gegevens.
-
Loop de rekeningen na
Eén record is een waarschuwing. Omdat v1 helemaal geen token vraagt, houdt niets Bob tegen om account-ID's te lopen. Hij bewaart de versie op v1 en verandert de id naar de volgende klant.
-
Elke klant, op schaal
Nog een ID, nog een echte klant.
-
Kennis check
U hebt zojuist gezien hoe een aanvaller zonder account klantgegevens las door de versie in de URL te wijzigen. Leg vast waarom.
-
De waarschuwing komt binnen
U bent eigenaar van de API-gateway van Emberline en de levenscyclus van elke API-versie erachter. Van de ene op de andere dag markeerde de monitoring duizenden niet-geverifieerde leesbewerkingen op het oude /v1 -accounteindpunt, vanaf één enkel adres, waarbij de account-ID's achter elkaar werden doorlopen. Beveiligingsoperaties hebben u een e-mail gestuurd.
Dekking van beveiligingsframeworks
OWASP API Top 10
- API9:2023 Improper Inventory Management
CWE
- CWE-1059 Insufficient Technical Documentation
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