Development

Security
Python

'20% van kwetsbaarheden gerelateerd aan Python-projecten'

Snyk: Meeste Python-kwetsbaarheden gemakkelijk te verhelpen

25 januari 2022

Snyk: Meeste Python-kwetsbaarheden gemakkelijk te verhelpen

Python is al jaren één van de populairste programmeertalen. In verschillende ranglijsten staat de taal in de top drie. De TIOBE-lijst wordt zelfs aangevoerd door Python en is daar verkozen tot de Programming Language of the Year. Beveiligingsbedrijf Snyk greep dat aan om onderzoek te doen naar securityproblemen met betrekking tot de taal. Uit dat onderzoek blijkt nu dat 20% van de door Snyk Code geïdentificeerde kwetsbaarheden in security gerelateerd zijn aan Python-projecten.

Uit het onderzoeksrapport van Snyk is goed en slecht nieuws te halen. Het positieve deel is dat maar liefst 81% van de meest populaire Python-pakketten zich in een gezonde staat bevindt. Maar tegelijkertijd zijn in meer dan 60% van de Python-projecten code-gerelateerde elementen van de OWASP Top 10 2021-lijst met de meest voorkomende problemen te vinden. Dergelijke fouten kunnen het voor aanvallers mogelijk maken om client-side scripts in websites te injecteren, SQL injectie-aanvallen uit te voeren of man-in-the-middle-aanvallen in te zetten.

Een groot deel van de fouten die Snyk tegenkomt, zijn bovendien zeer ernstig of kritiek. Bijna een derde van de gemiddeld 60 nieuwe Python-kwetsbaarheden die Snyk maandelijks aan zijn kwetsbaarheidsdatabase toevoegt wordt als kritiek of zeer ernstig bestempeld. 27% is van hoge ernst, 56% van gemiddelde ernst.

Complexe applicaties

Eén van de aandachtspunten is volgens Snyk de inhoud van een typische Python-repository. Dergelijke repository's bestaan tegenwoordig niet meer alleen uit de Python-code die de ontwikkelaar schreef, maar ook uit bijvoorbeeld opensource-pakketen, containerafbeeldingen en configuratiebestanden. Een gemiddeld Python-project heeft nu ongeveer 35 afhankelijkheden. 

Dat betekent dat het aanvalsoppervlak van projecten in de loop der tijd groter wordt. In 47% van de projecten introduceren de afhankelijkheden kwetsbaarheden. "Naarmate applicaties complexer worden, wordt de securitytaak ook groter", stelt Daniel Berman, Product Marketing Director bij Snyk. "Kwaadwillende actoren hebben een breed scala aan aanvalsvectoren om te gebruiken bij het aanvallen van een Python-app, of het nu gaat om bekende kwetsbaarheden die zijn geïntroduceerd via directe of indirecte afhankelijkheden, securitygebruik in de eigen code van de app of kwetsbaarheden in containers."

Fouten gemakkelijk te dichten

Het goede nieuws is dat veel van de problemen snel te verhelpen zijn. Maar liefst 87% van de kwetsbaarheden kan namelijk voorkomen worden door over te stappen op bijgewerkte pakketten. Daarnaast zijn de meeste kwetsbaarheden in containers te dichten door kleinere pakketten te gebruiken, aldus Snyk.

Snyk adviseert verder om moderne statische code-analyse te gebruiken, bijvoorbeeld in de vorm van linters als Pylint en scanners als Bandit. Ook wordt aangeraden om binnenkomende gegevens van externe bronnen op het toegangspunt in de applicatie op te schonen, moderne ORM- (Object Relational Mapping-)tools te gebruiken en om indien mogelijk alle strings naar een enkele Unicode-codering te standaardiseren.

Het beveiligingsbedrijf adviseert verder om API's te sluiten en om geheimen als gebruikersnamen, wachtwoorden, API-toegangstokens, bestandspaden en bestandscodes te bewaken. Dergelijke geheimen worden namelijk regelmatig via de broncode gelekt. "Het is een goede gewoonte om ze in aparte bestanden te bewaren, of beter nog, geheime opslagplaatsen zoals HashiCorp Vault, AWS Key Management Service, enz.", aldus Snyk.

Reactie toevoegen
De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.