46% af Python-pakker i PyPI-repositoriet indeholder potentielt usikker kode

En gruppe forskere fra University of Turku (Finland) har publiceret resultaterne af en analyse af pakker i PyPI-repositoriet for at undersøge brugen af potentielt farlige konstruktioner, der kan føre til sårbarheder. I løbet af analysen af 197.000 pakker blev der identificeret 749.000 potentielle sikkerhedsproblemer. I 46% af pakkerne er der mindst ét sådant problem. Blandt de mest almindelige problemer fremhæves mangler i håndteringen af undtagelser og brugen af funktioner, der tillader kodeindskiftning.

Af de identificerede 749.000 problemer er 442.000 (41%) markeret som ubetydelige, 227.000 (30%) som problemer af moderat fare, og 80.000 (11%) som farlige. Nogle pakker skiller sig ud og indeholder tusinder af problemer: for eksempel er der i pakken PyGGI identificeret 2589 problemer, hovedsageligt relateret til brugen af konstruktionen "try-except-pass", mens der i pakken appengine-sdk er fundet 2356 problemer. Et stort antal problemer findes også i pakkerne genie.libs.ops, pbcore og genie.libs.parser.

Det skal bemærkes, at resultaterne er baseret på automatiseret statisk analyse, som ikke tager højde for konteksten af de forskellige konstruktioner. Udvikleren af værktøjet bandit, som blev brugt til at scanne koden, udtalte, at på grund af det relativt høje antal falske positiver kan resultaterne ikke direkte betragtes som sårbarheder uden yderligere manuel revision af hvert problem.

For eksempel anser analysatoren det som et sikkerhedsproblem at anvende usikre tilfældighedsgeneratorer og hash-algoritmer som MD5, hvorimod sådanne algoritmer i koden kan anvendes til formål, der ikke påvirker sikkerheden. Analysatoren anser også enhver behandling af eksterne data i usikre funktioner som pickle, yaml.load, subprocess og eval som et problem, men denne brug er ikke nødvendigvis forbundet med opståen af sårbarheder, og i praksis kan anvendelsen af disse funktioner implementeres uden sikkerhedstrusler.

Blandt de kontroller, der blev anvendt i undersøgelsen:

  • Brug af potentielt usikre funktioner som exec, mktemp, eval, mark_safe m.fl.
  • Usikker tildeling af filrettigheder.
  • Tilslutning af en netværkssocket til alle netværksgrænseflader.
  • Brug af hårdt kodede adgangskoder og nøgler.
  • Brug af en foruddefineret midlertidig mappe.
  • Brug af pass og continue i catch-all-style undtagelseshåndterere;
  • Kørsel af webapplikationer baseret på webframeworket Flask med debug-tilstand tændt.
  • Brug af usikre metoder til deserialisering af data.
  • Brug af hash-funktioner som MD2, MD4, MD5 og SHA1.
  • Brug af usikre krypteringsmetoder såsom DES og krypteringsmodus.
  • Brug af en usikker implementering af HTTPSConnection i nogle versioner af Python.
  • Angivelse af schemaet file:// i urlopen.
  • Brug af pseudo-tilfældige talgeneratorer ved udførelse af kryptografiske opgaver.
  • Brug af protokollen Telnet.
  • Brug af usikre XML-parsere.

Derudover kan det nævnes, at der blev opdaget 8 skadelige pakker i PyPI kataloget. Før de problematiske pakker blev fjernet, var de downloadet mere end 30.000 gange. For at skjule skadelig aktivitet og omgå advarsler fra enkle statiske analyser blev kodestykker i pakkerne kodet ved hjælp af Base64 og organiseret til udførelse efter dekodning via kald til eval.

I pakkerne noblesse, genesisbot, are, suffer, noblesse2 og noblessev2 blev der fundet kode til opsnapning af kreditkortnumre og adgangskoder gemt i browserne Chrome og Edge, samt til overførsel af tokens fra Discord-appen og sendelse af systemdata, herunder skærmbilleder af skærmindholdet. I pakkerne pytagora og pytagora2 var der mulighed for at downloade og udføre tredjeparts eksekverbare filer.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster