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

Een groep onderzoekers van de Universiteit van Turku (Finland) heeft de resultaten gepubliceerd van een analyse van pakketten in de PyPI-repository op het gebruik van potentieel gevaarlijke constructies die kunnen leiden tot kwetsbaarheden. Tijdens de analyse van 197.000 pakketten zijn 749.000 potentiƫle beveiligingsproblemen vastgesteld. In 46% van de pakketten is er ten minste ƩƩn van dergelijke problemen aanwezig. De meest voorkomende problemen zijn gerelateerd aan gebreken in exception handling en het gebruik van mogelijkheden die toelaatbare code-injectie mogelijk maken.

Van de 749.000 vastgestelde problemen zijn 442.000 (41%) gemarkeerd als minimaal, 227.000 (30%) als problemen van gematigde ernst en 80.000 (11%) als gevaarlijk. Sommige pakketten vallen buiten de massa en bevatten duizenden problemen: bijvoorbeeld, in het pakket PyGGI zijn 2589 problemen vastgesteld, voornamelijk gerelateerd aan het gebruik van de constructie 'try-except-pass', en in het pakket appengine-sdk zijn 2356 problemen gevonden. Ook een groot aantal problemen komt voor in de pakketten genie.libs.ops, pbcore en genie.libs.parser.

Het moet worden opgemerkt dat de resultaten zijn verkregen op basis van een geautomatiseerde statische analyse, die de context van de toepassing van bepaalde constructies niet in overweging neemt. De ontwikkelaar van de bandit-tool, die werd gebruikt voor het scannen van de code, merkte op dat vanwege het relatief hoge aantal valse positieven de resultaten van de controle niet rechtstreeks als kwetsbaarheden kunnen worden beschouwd zonder aanvullende handmatige beoordeling van elk probleem.

Bijvoorbeeld, de analyzer beschouwt het gebruik van onbetrouwbare willekeurige getallengeneratoren en hashing-algoritmen, zoals MD5, als een beveiligingsprobleem, terwijl dergelijke algoritmen in de code voor doeleinden kunnen worden gebruikt die geen invloed hebben op de beveiliging. De analyzer beschouwt ook elke verwerking van externe gegevens in onveilige functies zoals pickle, yaml.load, subprocess en eval als een probleem, maar het gebruik hiervan hoeft niet noodzakelijkerwijs gepaard te gaan met de opkomst van kwetsbaarheden en in werkelijkheid kan het gebruik van de genoemde functies zonder veiligheidsrisico's worden gerealiseerd.

Onder de controles die in de studie zijn gebruikt:

  • Het gebruik van potentieel onveilige functies zoals exec, mktemp, eval, mark_safe, enz.
  • Onveilige toegangsmachtigingen voor bestanden.
  • Verbinding van de netwerk socket met alle netwerkinterfaces.
  • Gebruik van hardcoded wachtwoorden en sleutels in de code.
  • Gebruik van een vooraf gedefinieerde tijdelijke directory.
  • Gebruik van pass en continue in catch-all-style exceptiehandlers;
  • Uitvoering van webapplicaties gebaseerd op het webframework Flask met debugmodus ingeschakeld.
  • Gebruik van onveilige methoden voor gegevensdeserialisatie.
  • Gebruik van hash-functies MD2, MD4, MD5, en SHA1.
  • Gebruik van onveilige encryptiemethoden zoals DES en encryptiemodi.
  • Gebruik van onveilige implementatie van HTTPSConnection in sommige versies van Python.
  • Opgeven van het schema file:// in urlopen.
  • Gebruik van pseudorandom number generators bij cryptografische taken.
  • Gebruik van het Telnet-protocol.
  • Gebruik van onveilige XML-parsers.

Daarnaast kan worden opgemerkt dat er 8 kwaadaardige pakketten in de PyPI-directory zijn gevonden. Voor verwijdering waren de problematische pakketten al meer dan 30.000 keer gedownload. Om kwaadaardige activiteiten te verbergen en waarschuwingen van eenvoudige statische analysetools te omzeilen, werd in de pakketten codering van blokken met code door middel van Base64 toegepast, en werd de uitvoering na decoderen georganiseerd via een aanroep van eval.

In de pakketten noblesse, genesisbot, are, suffer, noblesse2 en noblessev2 is er code ontdekt voor het afvangen van creditcardnummers en wachtwoorden die in de browsers Chrome en Edge zijn opgeslagen, evenals voor het verzenden van accounttokens uit de Discord-app en het versturen van systeemgegevens, inclusief screenshots van de inhoud van het scherm. In de pakketten pytagora en pytagora2 was er de mogelijkheid om externe uitvoerbare code te downloaden en uit te voeren.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster