ArtikelSecurity

Hoe Attack-Defense Trees kwetsbaarheden in kaart brengen

IT-security draait allang niet meer alleen om een sterke firewall of ingewikkelde wachtwoorden. Hackers worden steeds vindingrijker, wat betekent dat onze verdedigingsmechanismen ook mee moeten schalen. Tijdens een interne kennissessie nam Maartje Kanaar, inmiddels 1,5 jaar werkzaam als Software Developer bij Info Support, haar collega’s mee in een redelijk onbekende, maar heel effectieve methode: Attack-Defense Trees (ADT). Een niche waar Maartje zich tijdens haar afstuderen in vastbeet en die perfect laat zien hoe we binnen Info Support complexe IT-puzzels benaderen.

Techitem_Hoe Attack-Defense Trees kwetsbaarheden in kaart brengen_webheader

Om een systeem goed te beveiligen, moet je precies weten waar de kwetsbaarheden zitten. Er zijn een heleboel manieren om aan threat modeling te doen, maar Attack-Defense Trees bieden een uniek, gestructureerd en vooral visueel inzicht in zowel de mogelijke aanvallen als de bijbehorende tegenmaatregelen.

Wat is een Attack-Defense Tree?

Kort gezegd breng je met een ADT op een hiërarchische manier in kaart hoe een systeem gecompromitteerd kan worden. De structuur is overzichtelijk en visueel, opgebouwd uit twee elementen:

• 🔴 Rode knopen met een ovaalvormige rand zijn de aanvalsdoelen (bijvoorbeeld: “Klantgegevens bemachtigen”).
• 🟢 Groene knopen met een rechthoekige rand zijn de verdedigingsmechanismen (bijvoorbeeld: “Toegangscontrole op het gebouw” of “Medewerkerstraining”).

Vanuit het hoofddoel bovenaan de boom (de root node), werk je naar beneden via subdoelen tot je bij de daadwerkelijke, minimale acties komt (de leaf nodes). Door gebruik te maken van logische relaties, ontstaat een gedetailleerd pad. Dit gebeurt via conjunctieve verfijning (een logische AND-relatie) of disjunctieve verfijning (een logische OR-relatie). Heb je om de database binnen te dringen de fysieke pas van een medewerker en een wachtwoord nodig? Of is één van de twee genoeg?

Wiskundige keuzes maken

Tijdens haar presentatie liet Maartje de theorie zien met een voorbeeld dat iedereen kent: een datalek dat pas geleden heeft plaatsgevonden bij een grote telecomprovider en waarbij hackers zich via de telefoon voordeden als IT-medewerkers. In een interactieve brainstorm werd dit datalek in een ADT uitgewerkt. Hoe kom je bij die klantgegevens? Collega’s bedachten direct verdedigingslinies. Eén van de beste voorbeelden uit de zaal was het toepassen van least privilege: zorgen dat medewerkers simpelweg geen toegang meer hebben tot de connection strings.

Het grote voordeel van zo’n Attack-Defense Tree is dat je er kwantitatieve analyses op los kunt laten. Je hangt waardes aan de bladeren van de boom, zoals geld, tijd (kost een hack 6 uur of 1 uur?), of de statistische kans van slagen. Hier komt vervolgens de wiskunde om de hoek kijken: heb je te maken met een OR-relatie? Dan moet je als verdediger alle onderliggende kwetsbaarheden afdichten en tel je de kosten bij elkaar op. Bij een AND-relatie hoef je slechts één schakel in de ketting te doorbreken, en berekent het algoritme feilloos wat de goedkoopste of efficiëntste verdediging is.

Semantische equivalentie en XML

Hoewel de theorie achter Attack-Defense Trees sterk is, blijkt de uitvoering lastiger. Tijdens het ontwerpen wordt zo’n boom vaak razendsnel op een whiteboards getekend. Maar bij complexe bedrijfsapplicaties ontstaan er gigantische bomen met tientallen lagen. Om geautomatiseerde algoritmes hierop los te laten, moet je de getekende boom omzetten naar een strakke, hiërarchische XML-structuur.

Jammer genoeg stuit je dan direct op een klassiek Computer Science-vraagstuk, wat tijdens de Q&A in de zaal ook gelijk werd gezegd: semantische equivalentie. Twee teams kunnen op een whiteboard een visueel totaal andere boom uittekenen, met andere bewoordingen en vertakkingen, die wiskundig en in XML op exact hetzelfde neerkomt zolang de leaf nodes overeenkomen.

Image recognition op handgeschreven schema's

Tijdens haar afstudeerperiode heeft Maartje precies dit punt onderzocht. Haar doel: een Python-script ontwikkelen dat afbeeldingen van getekende Attack-Defense Trees scant, de semantiek herkent (de pijlen, de AND/OR-verbindingen) en hier automatisch een goede XML-code van genereert. Hier kwam direct een grote uitdaging uit computer vision. Waar het script digitale tekeningen redelijk wist te ontcijferen, raakte het in de war van slordige lijnen en handgeschreven kaders. Voor een algoritme is een snel gekrabbelde pijl of een onregelmatige ovaal namelijk extreem lastig te classificeren als een specifieke, logische relatie in de boom. Er valt binnen de combinatie van security en Python dus nog genoeg te ontdekken en ontwikkelen.

Kennis delen als fundament

Maartje werkt als developer binnen een van de units van Info Support. Haar afstudeeronderzoek is een interessant discussieonderwerp geworden bij een van de wekelijkse interne kennissessies bij Info Support. Ze deelde haar opgedane kennis met ervaren collega’s en ze bespraken samen de mogelijkheden en uitdagingen binnen IT-security. Het geeft duidelijk aan dat het bij Info Support niet uitmaakt hoeveel jaar ervaring je hebt: als je ergens induikt en iets interessants ontdekt, dan delen we die kennis met elkaar.