Snyk:Omfattande risker med programspråket Python
Hem NYHETERUNDERSÖKNINGAR Omfattande risker med programspråket Python

Omfattande risker med programspråket Python

Publicerat av: Redaktionen

43 procent av alla dataintrång sker idag till följd av inneboende sårbarheter i den drabbade applikationen.

Snyk har undersökt det allt populärare programspråket Python, och kan visserligen konstatera att 81 procent av de populäraste Python-ramverken är fria från sårbarheter – men att cirka 20 procent av all identifierad skadlig kod idag kan relateras till Python-projekt.

Programspråket Python blir allt populärare, mycket tack vare sitt ekosystem av maskininlärningsdelar, såsom NumPy, Pandas, Googles TensorFlow, och Facebooks PyTorch. Enligt TIOBE Index är Python nu det populäraste programspråket i världen – och överträffar alltså såväl Java som C i popularitet.

Snyk konstaterar dock i en färsk rapport att cirka sextio nya sårbarheter med Python-koppling laddas upp på Snyks sårbarhetsdatabas varje månad. Av dess bedömer man att 5 procent utgör mycket allvarliga hot. Vid sidan om dessa betecknar man knappt en tredjedel (27 procent) som allvarliga, cirka hälften (56 procent) som ganska allvarliga, och 12 procent som inte så allvarliga. Man konstaterar också, glädjande nog, att 87 procent av sårbarheterna kan åtgärdas av användarna själva, genom att de uppdaterar sina ramverk – samt att de flesta container-sårbarheter kan undvikas om användaren väljer ett mindre ramverk för applikationen.

Snyks undersökning visar också att sårbarheter från OWASPs sårbarhetslista återfinns i över 60 procent av alla Python-projekt. Dessa sårbarheter kan till exempel leda till att angripare smittar sina offers webbsidor med skript, att användares personliga data kan användas för att konstruera SQL-frågor till SQL-attacker, samt att certifikatsverifieringssystem slås ut, vilket möjliggör så kallade man-in-the-middle-attacker.

– När vi studerar sårbarheter i Python-projekt så ser vi tydligt att problem kopplade till externa resurser, såsom fil- eller nätverks-streams, långt ifrån är de enda återkommande hoten, säger Daniel Berman, Product Marketing Director, Snyk. Vår slutsats är att Python-utvecklarna i dagsläget tyvärr inte är tillräckligt disciplinerade när det kommer till att åtgärda interna svagheter.

Attackytorna större över tid

Snyk lyfter också fram det faktum att innehållet i en typisk Python-kod idag består av mycket mer än utvecklarens egen kod. Det är vanligt att de också innehåller ramverk med öppen källkod och containers, samt konfigureringsfiler för infrastrukturen som krävs för att köra dem. Från ett säkerhetsperspektiv leder denna omfattande volym till att attackytorna blir allt fler med tiden.

Snyks undersökning visar att ett genomsnittligt Python-projekt innehåller 35 beroenden till andra mjukvarukomponenter, så kallade ”dependencies”. Av dessa utgör 17 en direkt del av projektet, och 18 är indirekt sammankopplade med det. I 47 procent av projekten introducerar dessa mjukvarukomponenter sårbarheter. Ett genomsnittligt projekt består av 33 kända sårbarheter, utav vilka 10 procent ses som kritiska, 26 procent som mycket allvarliga, 26 procent som allvarliga och 28 procent som inte så allvarliga.

Snyk:Omfattande risker med programspråket Python– I takt med att applikationerna blir alltmer komplexa, blir det allt svårare att skydda dem, säger Daniel Berman. Fientliga aktörer har en rad attackvektorer att använda när de ska angripa en Python-applikation, oavsett om det sker genom kända sårbarheter via direkta eller indirekta mjukvarukomponenter, via säkerheten i applikationens egen kod, eller container-sårbarheter.

Efter att ha studerat säkerhetsbristerna i applikationskoden har Snyk formulerat sex generella säkerhetstips för Python-utvecklare:

  1. Använd modern statisk kodanalys: Linters som Pylint, och säkerhetsscanners som Bandit, är en bra början. Tyvärr uppstår dock allvarliga problem ofta samtidigt som applikationens data flödar mellan olika källfiler, och det är nästan omöjligt att finna dessa manuellt.
  2. Sanera data: Försök att sanera inkommande data från externa källor (inklusive databaser) så fort data kommer in i applikationen.
  3. ORM: Använd moderna Object Relational Mapping-verktyg för att abstrahera databasinteraktioner och förhindra SQL-injektioner. Om du använder ramverk som Django eller Flask, använd välrennomerade bibliotek som Django ORM eller SQLAlchemy.
  4. Unicode: Om möjligt, standardisera alla strängar till en Unicode-kodning – vi rekommenderar UTF-8 och var försiktig när du konverterar Unicode-strängar till ASCII.
  5. Stäng API:er: Se till att stänga dina nätverkskopplingar. På detta sätt kan du vara säker på att data verkligen sparaspå ett korrekt sätt, och det frigör resurser i ditt system.
  6. Vakta dina hemligheter: Detta gäller inte bara Python, men allt för många användarnamn, lösenord, API-tokens och filinformation läcker in i källkoden. Det är en bra praxis att förvara sådan information i separata filer, eller ännu bättre: att ha dem i säkert förvar hos till exempel HashiCorp Vault, eller AWS Key Management Service.

 

Relaterade Artiklar

Vi använder cookies och andra identifierare för att förbättra din upplevelse. Detta gör att vi kan säkerställa din åtkomst, analysera ditt besök på vår webbplats. Det hjälper oss att erbjuda dig ett personligt anpassat innehåll och smidig åtkomst till användbar information. Klicka på ”Jag godkänner” för att acceptera vår användning av cookies och andra identifierare eller klicka ”Mer information” för att justera dina val. Jag Godkänner Mer Information >>

-
00:00
00:00
Update Required Flash plugin
-
00:00
00:00