46% van de Python-pakketten in de PyPI-repository bevatten potentieel onveilige code

Een groep onderzoekers van de Universiteit van Turku (Finland) publiceerde de resultaten van een analyse van pakketten in de PyPI-repository op het gebruik van potentieel gevaarlijke constructies die tot kwetsbaarheden zouden kunnen leiden. Tijdens de analyse van 197 pakketten zijn 749 potentiële beveiligingsproblemen geïdentificeerd. 46% van de pakketten heeft minstens één dergelijk probleem. Tot de meest voorkomende problemen behoren tekortkomingen met betrekking tot de afhandeling van uitzonderingen en het gebruik van functies die codevervanging mogelijk maken.

Van de 749 duizend gesignaleerde problemen werden er 442 duizend (41%) bestempeld als klein, 227 duizend (30%) als matige problemen en 80 duizend (11%) als gevaarlijk. Sommige pakketten onderscheiden zich van de massa en bevatten duizenden problemen: het PyGGI-pakket identificeerde bijvoorbeeld 2589 problemen, voornamelijk gerelateerd aan het gebruik van de "try-except-pass" -constructie, en het appengine-sdk-pakket vond 2356 problemen. Er zijn ook een groot aantal problemen aanwezig in de pakketten genie.libs.ops, pbcore en genie.libs.parser.

Opgemerkt moet worden dat de resultaten zijn verkregen op basis van geautomatiseerde statische analyse, waarbij geen rekening wordt gehouden met de toepassingscontext van bepaalde structuren. De ontwikkelaar van de bandit-toolkit, die werd gebruikt om de code te scannen, was van mening dat vanwege het vrij hoge aantal false positives, de scanresultaten niet direct als kwetsbaarheden kunnen worden beschouwd zonder aanvullende handmatige beoordeling van elk probleem.

De analysator beschouwt bijvoorbeeld het gebruik van onbetrouwbare generatoren van willekeurige getallen en hash-algoritmen, zoals MD5, als een beveiligingsprobleem, terwijl dergelijke algoritmen in de code kunnen worden gebruikt voor doeleinden die de veiligheid niet aantasten. De analyser beschouwt ook elke verwerking van externe gegevens in onveilige functies zoals pickle, yaml.load, subprocess en eval als een probleem, maar dit gebruik brengt niet noodzakelijkerwijs een kwetsbaarheid met zich mee en in feite kan het gebruik van deze functies worden geïmplementeerd zonder een beveiligingsrisico. .

Onder de tests die in het onderzoek zijn gebruikt:

  • Mogelijk onveilige functies gebruiken exec, mktemp, eval, mark_safe, etc.
  • Onveilige instelling van toegangsrechten voor bestanden.
  • Een netwerkaansluiting op alle netwerkinterfaces aansluiten.
  • Gebruik van wachtwoorden en sleutels die strikt in de code zijn gespecificeerd.
  • Een vooraf gedefinieerde tijdelijke map gebruiken.
  • Pass en continue gebruiken in uitzonderingshandlers in catch-all-stijl;
  • Webapplicaties starten op basis van het Flask-webframework met de foutopsporingsmodus ingeschakeld.
  • Gebruik van onveilige methoden voor deserialisatie van gegevens.
  • Maakt gebruik van MD2-, MD4-, MD5- en SHA1-hashfuncties.
  • Gebruik van onveilige DES-cijfers en coderingsmodi.
  • Gebruik van een onveilige HTTPSConnection-implementatie in sommige versies van Python.
  • Het specificeren van het file:// schema in urlopen.
  • Het gebruik van pseudo-willekeurige getalgeneratoren bij het uitvoeren van cryptografische taken.
  • Het Telnet-protocol gebruiken.
  • Onveilige XML-parsers gebruiken.

Bovendien kan worden opgemerkt dat er 8 kwaadaardige pakketten zijn gedetecteerd in de PyPI-directory. Vóór de verwijdering werden problematische pakketten meer dan 30 keer gedownload. Om kwaadaardige activiteiten te verbergen en waarschuwingen van eenvoudige statische analysers in pakketten te omzeilen, werden codeblokken gecodeerd met Base64 en na decodering uitgevoerd met behulp van een eval-aanroep.

De pakketten noblesse, genesisbot, are, lijden, noblesse2 en noblessev2 bevatten code om creditcardnummers en wachtwoorden te onderscheppen die zijn opgeslagen in Chrome- en Edge-browsers, evenals accounttokens over te dragen vanuit de Discord-applicatie en systeemgegevens te verzenden, inclusief schermafbeeldingen van scherminhoud. De pytagora- en pytagora2-pakketten bevatten de mogelijkheid om uitvoerbare code van derden te laden en uit te voeren.

Bron: opennet.ru

Voeg een reactie