Onderzoekers van de Universiteit van Turku (Finland) bekend gemaakt kort geleden de resultaten van een analyse ze maakten naar de pakketten in de repository door PyPI voor het gebruik van potentieel gevaarlijke constructies die kwetsbaarheden kunnen genereren. In de analyse dat Het werd uitgevoerd op bijna 197.000 pakketten en er werden 749.000 mogelijke beveiligingsproblemen geïdentificeerd.
Met andere woorden, 46% van de pakketten heeft minstens één van deze problemen, en een van de meest voorkomende problemen zijn die met betrekking tot de afhandeling van uitzonderingen en het gebruik van codevervangingsmogelijkheden.
Van de 749 duizend geconstateerde problemen waren dat er 442 duizend (41%) werden aangemerkt als minderjarig, 227 duizend (30%) als matig gevaarlijk en 80 duizend (11%) als gevaarlijk.
De dataset is gebaseerd op een momentopname van alle pakketten die zijn opgeslagen in de Python Package Index (PyPI)...
Wat betreft de soorten problemen, zijn de afhandeling van uitzonderingen en verschillende code-injecties de meest voorkomende problemen. In die zin valt de draadmodule op. Als gevolg van de over het algemeen kleine omvang van de pakketten, voorspellen softwaregroottestatistieken niet goed het aantal problemen dat door de scan aan het licht komt.
Sommige pakketten zijn ongewoon en bevatten duizenden problemen: Er zijn bijvoorbeeld 2589 problemen gevonden in het PyGGI-pakket, voornamelijk gerelateerd aan het gebruik van de "try-except-pass"-constructie, en 2356 problemen zijn gevonden in het appengine-sdk-pakket. Er zijn ook veel problemen in de pakketten genie.libs.ops, pbcore en genie.libs.parser.
Opgemerkt moet worden dat de resultaten werden verkregen op basis van een geautomatiseerde statische analyse, die geen rekening houdt met de context van de toepassing van bepaalde structuren.
De Bandit-ontwikkelaar, die werd gebruikt om de code te scannen, stelde voor dat vanwege het grote aantal fout-positieven, lDe scanresultaten kunnen niet als kwetsbaarheden worden beschouwd rechtstreeks zonder aanvullende handmatige beoordeling van elk probleem.
De parser beschouwt bijvoorbeeld het gebruik van onbetrouwbare random number generators en hash-algoritmen zoals MD5 als een beveiligingsprobleem, terwijl dergelijke algoritmen in code kunnen worden gebruikt voor doeleinden die geen invloed hebben op de beveiliging.
De analysator houdt ook rekening met eventuele externe gegevensverwerking in onveilige functies zoals pickle, yaml.load, subproces en eval het is een probleem, maar dit gebruik is niet noodzakelijkerwijs gekoppeld aan een kwetsbaarheid, en in feite kan het gebruik van deze functies een geïmplementeerd probleem zijn zonder een beveiligingsbedreiging.
Onder de controles die in het onderzoek zijn gebruikt:
- Gebruik van potentieel onveilige functies exec, mktemp, eval, mark_safe, enz.
- Onveilige configuratie van bestandstoegangsrechten.
- Sluit een netwerkstekker aan op alle netwerkinterfaces.
- Gebruik van wachtwoorden en versleutelde sleutels.
- Een vooraf gedefinieerde tijdelijke directory gebruiken.
- Gebruik doorgeven en doorgaan in exception-handlers in catch-all-stijl.
- Start webapplicaties op basis van het Flask-webframework met ingeschakelde foutopsporingsmodus.
- Onveilige methoden gebruiken om gegevens te deserialiseren.
- MD2-, MD4-, MD5- en SHA1-hashfuncties gebruiken.
- Gebruik van onveilige DES-cijfers en coderingsmodi.
- Gebruik van een onveilige HTTPSConnection-implementatie in sommige versies van Python.
- Specificeer het file:// schema in urlopen.
- Gebruik generatoren van pseudowillekeurige getallen bij het uitvoeren van cryptografische taken.
- Het Telnet-protocol gebruiken.
- Onveilige XML-parsers gebruiken.
Bovendien wordt de detectie van 8 kwaadaardige pakketten in de PyPI-directory genoemd. De problematische pakketten werden meer dan 30 keer gedownload voordat ze werden verwijderd. Om schadelijke activiteiten te verbergen en waarschuwingen van eenvoudige statische analysers op pakketten te vermijden, gebruiken we codeblokcodering met behulp van het Base64-formaat en voeren we de uitvoering na decodering uit door eval aan te roepen.
Code gevonden in de pakketten noblesse, genesisbot, are, suff, noblesse2 en noblessev2 om creditcardnummers en wachtwoorden te onderscheppen die zijn opgeslagen in Chrome- en Edge-browsers, evenals accounttokens over te zetten vanuit de Discord-app en systeemgegevens te verzenden, inclusief screenshots van scherminhoud. …De pakketten pytagora en pytagora2 bevatten de mogelijkheid om uitvoerbare code van derden te downloaden en uit te voeren.
Eindelijk als u er meer over wilt weten, kunt u de details bekijken In de volgende link.