Java code in een Devops wereld

Nooit meer een lek: leer optimaal Java-codes beveiligen in een DevOps-wereld

De IT-wereld verandert tegenwoordig zo snel, dat een traditioneel security team niet meer alle releases bij kan houden. Veiligheid waarborgen is echter essentieel, want je wilt niet het nieuws halen vanwege een hack in je nieuwe applicatie. Een security team die puur als deurwachter fungeert, kan helpen om toepassingen beschermd te houden. Dit geeft echter weinig flexibiliteit. Is het mogelijk om snel te handelen en toch beveiligd te zijn?

Spilberg organiseerde op dinsdag 18 juni een meetup, waarbij Hinse ter Schuur (Senior Scala/Java Software Engineer), en Marten Deinum (Java Consultant) hun ervaring met het beveiligen van Java-codes in een DevOps omgeving deelden. Je kon hierbij zien hoe je een veilige ontwikkelomgeving creëert en daarbij automatisch beveiligingslekken in het systeem detecteert. Naast dat er CI/CD-omgevingen werden geconfigureerd om te kijken naar de beveiligingskwetsbaarheden, werd er ook live gecodeerd in een Spring Boot application. Heb je het gemist? Lees dan snel verder voor de belangrijkste conclusies.

Problemen tackelen

Veiligheid binnen applicaties is belangrijk. Dit maakt het ook direct een uitdaging: als het niet goed wordt gedaan, is het vertrouwen direct kwijt. DevOps zorgt voor een verhoogde frequentie van oplevering, waardoor het security team ineens veel moet bijbenen. Dit veroorzaakt regelmatig problemen. Om security en DevOps hand in hand te laten gaan, moeten we drie stappen op orde hebben: werknemers, processen en tools.

Werknemers

Binnen de IT is het niet de vraag of je wordt aangevallen, maar meer wanneer. Hackers zijn altijd opzoek naar geld, data of een stepping stone. Zelfs als ze niet specifiek jou willen hebben, kunnen ze ‘per toeval’ bij je terechtkomen. Door goed beschermd te zijn, voorkom je een inbreuk en daarmee een datalek. Je blijft echter alleen goed beschermd als alle medewerkers binnen je organisatie op de hoogte zijn van de gevaren. Bewustwording over de impact van datalekken en de verschillende typen ervan, voorkomt een hoop problemen. Organisaties doen er dan ook goed aan om eens in de zoveel tijd een basistraining te geven aan alle werknemers.

Zodra alle werknemers de basiskennis bevatten, is het tijd om je te richten op de security engineers. Het beste is om hen nauw contact te laten hebben, waarbij snel heen en weer geschakeld kan worden. Ook bij dit team is het belangrijk om bewustzijn te behouden en specialistische trainingen te geven. Reflecteer in het team regelmatig of de werkwijze nog accuraat is, zodat er snel ingespeeld kan worden op eventuele veranderingen.

Processen

De DevOps-wereld is namelijk aan veel veranderingen onderhevig. Bij elke verandering wordt goed overwogen of en hoe security moet worden geïmplementeerd in een applicatie. Bij toepassing ligt de focus van de beveiliging bij de meeste bedrijven alleen op het beheren van de toegang. Je moet echter met meerdere aspecten van security rekening houden wanneer je een applicatie of systeem ontwikkelt. We noemen er een paar voor je op:

  • Mogelijke aanvalsvectoren voor je applicatie (XSS en CSRF);
  • Beveiligingskwetsbaarheden in gebruikte platforms en frameworks;
  • Beveiligingskwetsbaarheden in de build container;
  • Certificaten, TLS en used ciphers.

Moet je je dan beschermen tegen ieder mogelijk scenario? Nee, je kunt ook té goed beschermd zijn. Gebruik het threat model om structurele kwetsbaarheden te identificeren. Deze kun je vervolgens opsommen en prioriteren aan de hand van potentieel bedreigingsgevaar. Door hier een duidelijke rangorde te maken, voorkom je alarm fatigue, waarbij je systeem dusdanig veel waarschuwingen krijgt, dat het niet meer reageert zoals gewenst. Ook hier geldt dat documenteren en monitoren zorgt dat je processen accuraat blijven bij eventuele verandering.

Tools

Zodra alle processen staan, is het tijd om te gaan scannen. Hier zijn meerdere manieren voor:

  • Static scanning
  • Dependency scanning
  • Dynamic scanning

Met static scanning bekijk je aan de hand van het threat model welke bugs het systeem direct moet blokkeren en van welke je een melding wilt krijgen. Met dependency scanning bekijk je of de opgeslagen data nog steeds betrouwbaar is. Vervolgens ga je met dynamic scanning nogmaals door je libraries en frameworks heen. Via de testing pyramid zorg je ervoor dat je meer low-level unit tests dan high-level end-to-end tests doet. Hierdoor krijgen de belangrijkste aspecten de meeste aandacht.

Scan alles op regelmatige basis, door een upgrade kunnen er namelijk weer nieuwe vulnerabilities ontstaan. Je wilt eventuele defecten in je beveiliging het liefste zo snel mogelijk tegenkomen. Door alle stappen te volgen kun je met DevOps optimaal de reparatietijd van vulnerabilities verkleinen. Dit geeft je de perfecte mogelijkheid om aanvallen op meerdere manieren op te sporen!

Spilberg organiseert regelmatig events om developers en testers bij elkaar te brengen. Houd onze agenda in de gaten om te kijken wanneer de volgende plaatsvindt!

Heb jij nog vragen naar aanleiding van dit artikel? Neem dan contact met ons op.