Výzkumníci z University of Turku (Finsko) oznámeno nedávno výsledky analýzy udělali s balíčky v úložišti od PyPI za použití potenciálně nebezpečných konstrukcí, které by mohly generovat zranitelnosti. V analýze, že bylo provedeno asi 197.000 749.000 balíků a bylo identifikováno XNUMX XNUMX možných bezpečnostních problémů.
Jinými slovy, 46% balíků má alespoň jeden z těchto problémů, z nichž mezi nejčastější problémy patří problémy související s vyřizováním výjimek a používáním možností nahrazování kódu.
Ze 749 tisíc identifikovaných problémů 442 tisíc (41%) bylo označeno jako nezletilí, 227 tisíc (30%) jako středně nebezpečný a 80 tisíc (11%) jako nebezpečných.
Datová sada je založena na snímku všech balíčků uložených v Python Package Index (PyPI) ...
Z hlediska typů problémů byly nejčastějšími problémy zpracování výjimek a vkládání různých kódů. V tomto smyslu vyniká modul vláken. Vzhledem k obecně malým velikostem paketů metriky velikosti softwaru nepředpovídají dobře počet problémů odhalených analýzou.
Některé balíčky jsou neobvyklé a obsahují tisíce problémů: Například v balíčku PyGGI bylo nalezeno 2589 problémů, které se týkaly hlavně použití konstrukce „zkuste-vyjít-projít“, a 2356 problémů bylo nalezeno v balíčku appengine-sdk. V balíčcích genie.libs.ops, pbcore a genie.libs.parser je také mnoho problémů.
Je třeba poznamenat, že výsledky byly získány na základě automatizované statické analýzy, která nebere v úvahu kontext aplikace určitých struktur.
Vývojář Banditu, který byl použit ke skenování kódu, navrhl že vzhledem k velkému počtu falešných poplachů lvýsledky skenování nelze považovat za zranitelnosti přímo bez dodatečné ruční kontroly každého problému.
Analyzátor například považuje použití nespolehlivých generátorů náhodných čísel a algoritmů hash, jako je MD5, za problém zabezpečení, zatímco v kódu lze tyto algoritmy použít pro účely, které nemají vliv na zabezpečení.
Analyzátor také bere v úvahu jakékoli externí zpracování dat v nebezpečných funkcích, jako je okurka, yaml.load, podproces a eval to je problém, ale toto použití není nutně spojeno se zranitelností a ve skutečnosti může být používání těchto funkcí problémem implementovaným bez ohrožení zabezpečení.
Mezi ovládací prvky použité ve studii:
- Použití potenciálně nebezpečných funkcí exec, mktemp, eval, mark_safe atd.
- Nezabezpečená konfigurace přístupových práv k souborům.
- Připojte síťovou zástrčku ke všem síťovým rozhraním.
- Používání hesel a šifrovaných klíčů.
- Použití předdefinovaného dočasného adresáře.
- Použití pass and continue v obslužných rutinách výjimek typu catch-all.
- Spouštějte webové aplikace založené na webovém rámci Flask s povoleným režimem ladění.
- Použití nezabezpečených metod k deserializaci dat.
- Pomocí hashovacích funkcí MD2, MD4, MD5 a SHA1.
- Používání nezabezpečených šifer a režimů šifrování DES.
- Použití nezabezpečené implementace HTTPSConnection v některých verzích Pythonu.
- Určení souboru: // schéma v urlopenu.
- Při provádění kryptografických úkolů používejte generátory pseudonáhodných čísel.
- Pomocí protokolu Telnet.
- Používání nezabezpečených analyzátorů XML.
Kromě toho je zmíněna detekce 8 škodlivých balíčků v adresáři PyPI. Problémové balíčky byly před odstraněním staženy více než 30 64krát. Abychom skryli škodlivou aktivitu a vyhnuli se jednoduchým upozorněním statického analyzátoru na balíčky, použili jsme blokové kódování pomocí kódu ve formátu BaseXNUMX a po dekódování jsme zinscenovali jeho spuštění voláním eval.
Kód nalezený v balíčcích noblesse, genesisbot, jsou, suff, noblesse2 a noblessev2 pro zachycení čísel kreditních karet a hesel uložených v prohlížečích Chrome a Edge, jakož i pro přenos tokenů účtů z aplikace Discord a odesílání dat ze systému, včetně screenshotů obsahu obrazovky. … Balíčky pytagora a pytagora2 obsahovaly možnost stáhnout a spustit spustitelný kód jiného výrobce.
Konečně pokud máte zájem o tom vědět více, můžete zkontrolovat podrobnosti Na následujícím odkazu.