Zo sterk als de zwakste schakel

2019-06-29

Na maandenlang zwoegen is het dan eindelijk zo ver, de nieuwe applicatie gaat live!
Reviews zijn gedaan, de kwaliteit is gecheckt met Sonar, alle automatische tests draaien groen. Jullie zijn er klaar voor. 

Inmiddels staat de applicatie een aantal maanden live in productie. Er zijn wat change requests doorgevoerd en een aantal kleine bugs opgelost. De gewijzigde functionaliteit is toegevoegd aan de automatische regressietests. ‘So far so good’.

Totdat het mis gaat.

Zwakke Schakel

Het support team wordt al vroeg in de ochtend overladen met berichten van gebruikers dat de site niet bereikbaar is. En inderdaad, de server is overbelast.
Er wordt in de logfiles gedoken en daaruit blijkt dat er al wekenlang verdachte meldingen voorbij komen, maar aangezien het monitoren van de logmeldingen nog niet bij een team is belegd zijn deze over het hoofd gezien.

Na analyse van de logmeldingen blijkt dat er via een bestandsupload een executable gestart is, die zoveel ruimte inneemt dat de server overbelast raakt. Jullie begrijpen het niet. In de code is expliciet aangegeven wat er is toegestaan in een bestandsupload en jullie zijn er zeker van dat het daarin niet mogelijk is om een script te draaien. Toch lijkt dit de oorzaak te zijn.

Na wat dieper in de code te hebben gegraven komen jullie erachter dat het probleem in een van de externe bibliotheken zit. Door een kwetsbaarheid in een van de dependencies was het mogelijk om een uitvoerbaar script toe te voegen aan een XML bestand en een hacker kan hierdoor met een simpel scriptje de server overbelasten.
Deze kwetsbaarheid blijkt echter al een tijd bekend te zijn en de eigenaren van de externe bibliotheek hebben dan ook een nieuwe versie uitgebracht waarin dit probleem is opgelost. Maar jullie applicatie draait nog op de oude versie..

Billion Laughs Attack (XML Bomb)

Uit bovenstaand verhaal zijn in ieder geval 2 belangrijke risico’s te halen: logging werd niet of nauwelijks gecheckt waardoor een kwaadwillende gebruiker ongezien tientallen pogingen heeft kunnen doen voordat zijn aanval daadwerkelijk slaagde. Daarnaast maakt de applicatie gebruik van verouderde bibliotheken, waardoor de applicatie vatbaar is voor bekende kwetsbaarheden.

Het is bijna niet mogelijk om je applicatie 100% veilig te maken en dicht te timmeren tegen alle beveiligingsrisico’s, maar er zijn wel een aantal hulpmiddelen die je applicatie robuuster kunnen maken tegen malafide activiteit.
Zo brengt de organisatie ‘Open Web Application Security Project’ (afgekort OWASP) iedere paar jaar een lijst uit met de 10 meest kritische security risico’s in webapplicaties. Dit is een verzameling van de meest voorkomende risico’s én risico’s met een hoge impact. Deze lijst wordt de ‘OWASP Top 10’ genoemd.

Het is belangrijk dat je met deze lijst in het achterhoofd meewerkt aan het schrijven en beheren van een applicatie. Daarnaast bestaat er tooling die helpt met het controleren van de kwetsbaarheden:

* OWASP ZAP
* Arachni
* OWASP Dependency-Check


OWASP ZAP

De OWASP Zed Attack Proxy is een tool om automatisch security risico’s te vinden in een webapplicatie. Deze tool kan in een CI/CD-omgeving worden geïnstalleerd (bijv. Jenkins) en automatisch meedraaien.

Arachni

De Arachni scanner is soortgelijk aan de OWASP ZAP tool en is een van de favoriete tools voor software pen testers. Een groot voordeel aan de Arachni scanner is dat deze schaalbaar en modulair is. De tool kan een specifiek deel van de applicatie testen op één specifiek security issue, maar het kan ook worden ingezet om routinematig een large-scale applicatie te testen.

Screenshot van www.arachni-scanner.com

Screenshot van de Arachni scanner


OWASP Dependency-Check

De OWASP Dependency-Check tool identificeert de externe bibliotheken in een project en scant of hier bekende (gerapporteerde) kwetsbaarheden in zitten. Ook deze tool kan in een CI/CD-omgeving draaien.

Tot slot

Deze tools helpen niet alleen kwetsbaarheden op te sporen, maar doordat je deze programma’s al met je lokale omgeving kunt laten meedraaien, hoef je de issues niet pas in een (te) laat stadium te ontdekken.

Het is een kleine investering om deze tools te installeren en de regels op te nemen in je werkproces, maar het kan je wel de nodige blocker- en hotfix-ellende besparen.


Bekijk alle posts van Thanja