In de huidige snelle ontwikkelomgevingen wordt beveiliging vaak als een vergeten bijzaak beschouwd. Applicaties zonder effectieve beveiligingsmaatregelen zijn een makkelijke prooi voor dreigingsactoren. Het is daarom belangrijk om u bewust te zijn van het onvermijdelijke bijproduct van moderne softwareontwikkeling – beveiligingsrisico’s en kwetsbaarheden die met de applicaties kunnen worden vrijgegeven.
Bedrijven moeten een geavanceerde aanpak hanteren voor beveiligingsbeheer in de vroegste stadia van de SDLC. Anders is er veel moeite nodig om de kernbeslissingen later in het proces aan te passen. Het niet goed beoordelen van bedrijfsrisico’s in de ontwerpfase leidt tot een onvoldoende beveiligingsniveau, waardoor uw applicatie kwetsbaar wordt voor kwetsbaarheden die Insecure Design worden genoemd.
Inzicht in het huidige dreigingslandschap is een goed begin om een veilige ontwikkelcultuur te bevorderen. In dit blogartikel duiken we diep in de details van de kwetsbaarheid van insecure design, mogelijke gevolgen en preventiemethoden.
Wat is Insecure Design?
Insecure design is een nieuwe toevoeging aan de OWASP Top 10 van 2021, die hoog op de lijst verschijnt. Direct op de vierde plaats geplaatst, is dit een ongelooflijk brede categorie die risico’s dekt die verband houden met ontwerp- en architecturale fouten in webapplicaties waar kwaadwillenden van kunnen profiteren.
Insecure design-kwetsbaarheden vloeien voort uit het niet naleven van beveiligingsbest practices tijdens het ontwerpproces. Tegenwoordig is het een van de belangrijkste oorzaken van functionaliteitsfouten, datalekken, gebroken beleid en beschadigde reputaties.
De volgende categorie weerspiegelt de erkenning dat het vroegtijdig samenbrengen van ontwikkeling en testen in de systeemontwerpfase de kwaliteit, leesbaarheid en beveiliging van de code kan verbeteren. Dit is het ultieme voorbeeld van de ‘shift left’-testbeweging – minder verspilling en meer efficiëntie.
Hoe kunnen dreigingsactoren profiteren van gebrekkig ontwerp?
Bij het overwegen van de beveiliging van een applicatie wordt het ontwerp vaak over het hoofd gezien. Als ontwikkelaars, QA-ingenieurs en beveiligingsteams de juiste praktijken niet toepassen tijdens de code-ontwerpfase, wordt de applicatie een veilig doelwit voor kwaadwillende actoren. Insecure design zou aanvallers in staat stellen om:
- De authenticatiemechanismen die door een webapplicatie worden gebruikt, te omzeilen
- Bepaalde URL-parameters te wijzigen via ongeautoriseerde kanalen
- Toegang te krijgen tot systemen om deze te doorzoeken op gevoelige informatie
- Legitieme gebruikersaccounts over te nemen en ongeautoriseerde toegang te krijgen tot wachtwoord-beveiligde bronnen om het systeem verder te exploiteren
- Toegang te verkrijgen tot elke omgeving en de reikwijdte van de aanval uit te breiden naar andere omgevingen
- Een doelsysteem te spoofen om servers en netwerken te overbelasten met meerdere verzoeken om ze te laten crashen
- Gerichte queries te verzenden om informatie over systeemkwetsbaarheden te extraheren die een aanval kunnen bevorderen
- Het account volledig over te nemen
- Andere aanvallen uit te voeren, zoals cross-site scripting, SQL-injectie, LDAP-injectie, cross-site request forgery en path transversal
Applicaties zonder veilig ontwerp kunnen resulteren in potentieel ernstige gevolgen en onmeetbare schade in termen van gelekte gegevens, verwoeste reputatie en uren aan opruimwerk.
Voorbeelden van Insecure Design
De onderstaande scenario’s illustreren hoe kwetsbaarheden van insecure design kunnen worden uitgebuit door kwaadwillende actoren om verwoesting aan te richten en het vertrouwen van consumenten te schaden:
- WordPress en de meeste andere CMS-platforms stellen geen limieten in voor mislukte inlogpogingen op het adminpaneel, waardoor ze kwetsbaar zijn voor brute force-aanvallen. In de meeste gevallen zal een hacker een groot aantal combinaties proberen op een doelwit. Om deze aanvallen te beperken en te verdedigen, zou de installatie van beveiligingsextensies van derden nodig zijn.
- Een bioscoopketen biedt kortingen voor groepsreserveringen met een aanbetaling van maximaal vijftien personen. Kwaadwillende actoren zouden van dit defect kunnen profiteren en proberen alle bioscoopstoelen in een paar klikken tegelijk te boeken. Als een website grote aantallen reserveringen toestaat zonder aanbetaling of creditcardgegevens te vereisen, zal deze uiteindelijk een enorme inkomstenverlies lijden.
- Een aanzienlijk aantal e-commerce websites mist verdedigingssystemen tegen bots die scalpers gebruiken om top videokaarten te kopen. Dit biedt een grote kans voor fraudeurs om exhibits voor een hogere prijs te verkopen op veilingwebsites, waardoor het voor liefhebbers extreem moeilijk of zelfs onmogelijk wordt om de kaarten tegen de aanbevolen verkoopprijs te verkrijgen.
De volgende voorbeelden tonen aan dat volledige zichtbaarheid in elk aspect van beveiliging gedurende de gehele ontwikkellevenscyclus van cruciaal belang is.
Als het op beveiliging aankomt, bestaat “instellen en vergeten” niet. Zonder veilige ontwerpen blijven de applicaties kwetsbaar voor cyberaanvallen en kunnen ze mogelijk niet bestand zijn tegen het ergste scenario.
Hoe detecteert en verhelpt u Insecure Design?
Het identificeren van zwakheden in de ontwerpfase is de meest kosteneffectieve manier om gevaren bij de wortel aan te pakken. Het uitvoeren van geautomatiseerde tests of scans minimaliseert de blootstelling van uw applicatie aan beveiligingskwetsbaarheden en verkleint de kans op een succesvolle aanval.
‘Shift left’ wordt veel gemakkelijker gemaakt met testautomatisering. Testen wordt vaak uitgevoerd voor, tijdens en na het ontwikkelproces. IT-specialisten kunnen testautomatiseringshulpmiddelen gebruiken om zo vroeg mogelijk feedback te ontvangen over de stabiliteit van hun product.
Threat modeling
Door het perspectief van kwaadwillende actoren aan te nemen, ontdekt threat modeling potentiële of daadwerkelijke kwaadaardige/incidenteel gebeurtenissen, identificeert het beveiligingsbehoeften, beoordeelt het de dreigingscriticaliteit en prioriteert het beveiligingsverbeteringen. Het maakt rationele besluitvorming mogelijk over hoe om te gaan met applicatiebeveiligingsrisico’s.
Penetratietesten
Met de juiste penetratietesttools kunnen ontwikkelingsteams flexibele en veilige omgevingen creëren. Regelmatig testen garandeert de kwaliteit van het product en bespaart u ook de kopzorgen van tijdrovende en kostbare correcties. Het QAwerk-team kan helpen beveiligingsgaten in de systeemverdediging te ontdekken en kwetsbaarheden te beperken voordat een echte hacker ze exploiteert.
Denken “als een hacker” stelt u in staat om de manier waarop zij uw applicatie kunnen infiltreren te identificeren. Met die kennis kunt u alle benodigde maatregelen implementeren om de aanval te voorkomen.
Scannen
Met geavanceerde scantools kunnen bedrijven hun systemen continu beoordelen en monitoren op de nieuwste beveiligingsdreigingen. Beveiligingsscans kunnen ontwikkelaars helpen om problemen vroegtijdig aan het licht te brengen, zodat ze kunnen worden aangepakt en opgelost voordat de software wordt vrijgegeven. Het is een van de beste manieren om kwetsbaarheden te prioriteren voor herstel, rekening houdend met het type aanval, de ernst van de blootstelling en het toegangs niveau.
Aangezien het aantal cyberdreigingen dag na dag toeneemt, is het cruciaal voor ingenieurs om te begrijpen dat beveiliging niet iets is waarop kan worden ingeleverd wanneer snelheid een rol speelt. Om veilige applicaties op de markt te brengen, moeten ontwikkelaars worden voorzien van de tools om hun werk veilig uit te voeren zonder belemmeringen en extra inspanning.
Preventie & Mitigatie van Insecure Design
Het is vaak gemakkelijk om zo op te gaan in het leveren van functionaliteit en ervoor te zorgen dat dingen werken, dat beveiliging achterblijft als een afgevinkt item waar weinig of geen aandacht aan wordt besteed. Het ontwikkelproces moet beveiliging omvatten in elke stap, van ontwerp tot implementatie, doorvoering en onderhoud.
In tegenstelling tot andere kritieke kwetsbaarheden kunnen onveilige ontwerpen niet worden opgelost door een perfecte implementatie. Ze vereisen beveiligingsmaatregelen om de bedreigingen te beperken. IT-specialisten kunnen stappen ondernemen om het optreden van deze risico’s te minimaliseren en zich zo goed mogelijk te beschermen tegen cyberaanvallen. De opties om een onveilig ontwerp te voorkomen omvatten:
- Overstappen van DevOps naar DevSecOps
- Een gedetailleerde dreigingsmodellering implementeren voor kritieke authenticatie, toegangscontrole, bedrijfslogica en belangrijke stromen om potentiële bedreigingen te ontdekken die uw systeem kunnen beïnvloeden
- Veilige ontwikkelingsprocedures gebruiken
- Samenwerken met AppSec-professionals die kunnen helpen bij het evalueren van de beveiliging van het ontwerp en privacygerelateerde controles
- Een uitgebreide standaardbibliotheek gebruiken met veilige ontwerppatronen en kant-en-klare componenten
- Beveiligingstaal en -controles opnemen in gebruikersverhalen
- Bot-handtekeningen configureren zodat uw systeem onderscheid maakt tussen goedaardige en kwaadaardige bots en het verkeer anders behandelt
- Het juiste niveau van scheiding implementeren op systeem- en beveiligde communicatielagen
- Het verbruik van bronnen per gebruiker of service beperken
- HTTP-naleving configureren zodat het systeem validatiecontroles uitvoert op HTTP-verzoeken om ervoor te zorgen dat de verzoeken correct zijn geformatteerd
- Alle uitvoer grondig filteren
Veilig ontwerp draait om preventie in plaats van “behandeling”. Als organisaties de hoogste codeerstandaarden omarmen en tijdig beveiligingsmaatregelen treffen, helpt dit hen risico’s te voorkomen en kostbare fouten te vermijden.
Deze nieuwe #4 toevoeging moedigt ontwikkelingsteams aan om beveiliging serieus te nemen en voldoende tijd te besteden aan het creëren van nieuwe applicaties met eenvoudige, robuuste en beknopte architecturen.
Samenvattend
Aangezien het ontwerp van een systeem het ontwikkelproces dicteert, is het cruciaal voor organisaties om te garanderen dat het ontwerp zo vlekkeloos en immuun voor kwaadwillige aanvallen mogelijk is. Een effectieve aanpak voor IT-beveiliging moet inderdaad defensief zijn om ervoor te zorgen dat kwetsbaarheden in webbeveiliging nooit in de code terechtkomen.
De kernboodschap die voortkomt uit de vierde categorie van de OWASP Top Ten-lijst is dat applicatie-threat modeling niet langer optioneel is. Door threat models gedurende de gehele SDLC uit te voeren, kunnen organisaties potentiële dreigingen vroegtijdig identificeren om problemen te elimineren en mogelijke schade te minimaliseren.
Kwetsbaarheden in onveilig ontwerp kunnen volledig worden vermeden door een zorgvuldig gepland threat modeling, proactief kwetsbaarhedenbeheer, beproefde architecturale patronen en een correcte SDLC op te nemen. Het uitvoeren van beveiligingstests kan de inherente beveiliging van de applicatie aanzienlijk verhogen.
Verhoog nu de beveiliging van uw webapplicatie: Het ultieme handboek voor onveilig ontwerp