Een opvallende bevinding: juist de eenvoudigere applicaties bevatten vaker kritieke kwetsbaarheden. Hoe kan dat?
Deze trend blijkt uit onderzoek van Black Duck. Vooral de apps uit de financiële sector blijken er vatbaar voor; volgens de onderzoekers onderschatten organisaties mogelijk de eis om ook kleinere websites en eenvoudige apps te beveiligen.
Het gaat regelmatig om basale fouten, zoals een tekortkomende of afwezige Transport Layer Protection. Dit in groot contrast met grotere, complexere sites en apps die niet alleen minder ernstige kwetsbaarheden vertonen, maar ook nog eens sneller worden opgelost.
Voor het bepalen van de complexiteit van elke app maakt Black Duck overigens gebruik van een zelf ontworpen classificatie. Minimale interactiviteit en een korte crawl tree (het doorlopen van alle URL’s) betekent simpel, dynamische content en interactieve elementen verhogen de complexiteit.
Gepokt securitylandschap
Black Duck nam negentien verschillende industrieën en 1.300 applicaties onder de loep. Daarbij werden 96.917 kwetsbaarheden gevonden. Wat vooral opvalt is dat de meeste sectoren bugs lang laten rondwaren in kleine apps. Zo werden de 72 gevonden kritieke kwetsbaarheden in de educatieve sector gemiddeld pas na 342 dagen geëlimineerd, als ze zich in eenvoudige systemen bevonden. De 69 kritieke bugs in grotere sites laten zien dat het anders kan, met gemiddeld een enkele dag om de kwetsbaarheid op te lossen. Soms is het nog schrijnender, zoals bij nutsvoorzieningen: daar waren apps en sites van een middelgroot formaat gemiddeld 876 (!) dagen kwetsbaar, terwijl grote projecten wederom na een dag weer beveiligd waren.
De soorten kwetsbaarheden liepen tevens sterk uiteen. Black Duck vond regelmatig misconfiguraties (36.321) en cryptografische fouten (30.726). Hoewel ook kapot toegangsbeheer, onveilig ontwerp en gedateerde componenten de revue passeerden, zijn de eerste twee soorten bugs ook gelijk goed voor tweederde van alle gevonden kwetsbaarheden.
Wat nu?
Niemand mag erdoor verrast zijn dat Black Duck, een appsecurityspecialist, betere application security aanraadt. Het bedrijf raadt specifiek een combinatie van DAST, SAST en SCA aan. DAST vindt met name runtime-problemen, SAST spoort fouten al in de code op en SCA zoekt nar bekende kwetsbaarheden. Black Duck ziet een combinatie van twee van deze drie als bijzonder succesvol, zoals SAST+DAST voor cross-site scripting en SQL injection-gevaren en SCA+SAST om een kwetsbaarheid te vinden voordat de code ooit draait.
Natuurlijk zijn deze technieken effectief, maar het grotere probleem lijkt toch echt een misvatting te zijn. Complexere apps krijgen overduidelijk de meeste aandacht en zijn het snelst weer veilig. Het aanpakken van complexiteit is dan ook een groot vraagstuk onder ontwikkelaars. Wie nieuw is bij een organisatie of project heeft wellicht meer handvaten nodig bij grotere codebases. Maar de kleinere apps lijken hierin niet te worden meegenomen.
Niet iedere kwetsbaarheid is direct aan te pakken. Dit contrast tussen veilige, complexe apps en eenvoudige, kwetsbare tegenhangers suggereert een prioritering van de een ten koste van de ander. Het is zaak om een balans te vinden die realistisch is: Black Duck wijst immers eveneens op het feit dat sommige sectoren zeer beperkte tijd en budgetten hebben om hun cyberhygiëne op orde te hebben. Daarnaast zijn eenvoudige apps voor een beperkte use case ingezet en daarom regelmatig tijdelijk van aard. Complexe apps daarentegen suggereren dat ze voor allerlei doeleinden geschikt zijn en voortdurend worden bijgehouden, met minder kans op etterende kwetsbaarheden.
Wellicht dat er lessen te trekken zijn uit het ‘monolith-versus-microservices’-debat. Zoals David Heinemeier Hansson, maker van Ruby on Rails, al suggereert: het distribueren van je krachten is iets om te vermijden. Hij haalt aan dat kleine organisaties zich niet moeten gedragen als grote, en de makers van kleine apps net zomin als die van grote apps. Geïntegreerde, monolithische oplossingen genieten de voorkeur boven gedistribueerde, vooral als de slagkracht van de maker ervan beperkt is. Dat geldt voor individuele apps maar ook voor een spectrum aan sites/apps met een beperkt team om het te onderhouden. In kritieke sectoren is dit al helemaal van toepassing, want het gaat goed mis als een kwetsbaarheid tot een compromis leidt. Black Duck noemt er al één: HIPAA-schendingen voor Amerikaanse organisaties actief binnen de gezondheidszorg leveren meer dan genoeg kopzorgen op om de cyberhygiëne op voorhand op orde te willen hebben.
Allerlei kleine applicaties bijhouden lijkt, ook op basis van dit onderzoek, net zo goed onhaalbaar als het onnodig distribueren van een enkele applicatie. Het zijn dan de perifere codebases die lang voor ellende kunnen zorgen. Als er dan een keer iets foutgaat, met name in kritieke sectoren, dan komt het voor de buitenwereld vrij stompzinnig over dat het juist een kleine, irrelevante site was die voor problemen zorgde. Maar dat is dus heel verklaarbaar.
Lees ook: Wanneer is een kritieke kwetsbaarheid daadwerkelijk ernstig?