46% Python balíčků v repozitáři PyPI obsahuje potenciálně nebezpečný kód

Skupina výzkumníků z Univerzity v Turku (Finsko) publikovala výsledky analýzy balíčků v repozitáři PyPI z hlediska používání potenciálně nebezpečných konstrukcí, které by mohly vést k vzniku zranitelností. Během analýzy 197 tisíc balíčků bylo identifikováno 749 tisíc potenciálních bezpečnostních problémů. V 46 % balíčků se nachází alespoň jeden takový problém. Mezi nejčastěji se vyskytujícími problémy jsou nedostatky související s обработкой исключений a použitím konstrukcí, které umožňují injekci kódu.

Z 749 tisíc identifikovaných problémů je 442 tisíc (41 %) označeno jako nevýznamné, 227 tisíc (30 %) jako problémy s mírnou nebezpečností a 80 tisíc (11 %) jako nebezpečné. Některé balíčky se vymykají průměru a obsahují tisíce problémů: například v balíčku PyGGI bylo identifikováno 2589 problémů, převážně souvisejících s použitím konstrukce „try-except-pass“, v balíčku appengine-sdk bylo nalezeno 2356 problémů. Velké množství problémů je také přítomno v balíčcích genie.libs.ops, pbcore a genie.libs.parser.

Je třeba poznamenat, že výsledky byly získány na základě provedení automatizované statické analýzy, která nezohledňuje kontext použití jednotlivých konstrukcí. Vývojář nástroje bandit, který byl použit pro skenování kódu, vyjádřil názor, že kvůli poměrně vysokému počtu falešných pozitivních výsledků nelze výsledky kontroly přímo považovat za zranitelnosti bez dalšího ručního přezkoumání každého problému.

Například analyzátor považuje za bezpečnostní problém použití nespolehlivých generátorů náhodných čísel a hashovacích algoritmů, jako je MD5, zatímco v kódu mohou být tyto algoritmy používány pro účely, které neovlivňují bezpečnost. Analyzátor také považuje za problém jakékoli zpracování externích dat v nezabezpečených funkcích, jako jsou pickle, yaml.load, subprocess a eval, ale toto použití nemusí nutně souviset s vznikem zranitelnosti a ve skutečnosti může být použití uvedených funkcí provedeno bez bezpečnostního rizika.

Mezi kontroly použité ve studii patřily:

  • Použití potenciálně nebezpečných funkcí exec, mktemp, eval, mark_safe atd.
  • Nezabezpečené nastavení přístupových práv pro soubory.
  • Připojení síťového socketu ke všem síťovým rozhraním.
  • Používání hesel a klíčů tvrdě zakódovaných v kódu.
  • Používání předdefinovaného dočasného adresáře.
  • Používání pass a continue v zpracovatelích výjimek catch-all-style;
  • Spouštění webových aplikací na základě webového frameworku Flask s povoleným režimem ladění.
  • Používání nebezpečných metod deserializace dat.
  • Používání hashovacích funkcí MD2, MD4, MD5 a SHA1.
  • Používání nebezpečných šifer DES a šifrovacích módů.
  • Používání nebezpečné implementace HTTPSConnection v některých verzích Pythonu.
  • Uvedení schématu file:// v urlopen.
  • Používání generátorů pseudonáhodných čísel při provádění kryptografických úloh.
  • Používání protokolu Telnet.
  • Používání nebezpečných XML parserů.

Dále je třeba poznamenat, že v adresáři PyPI bylo objeveno 8 škodlivých balíčků. Před odstraněním měly problémové balíčky více než 30 tisíc stažení. K obfuscaci škodlivé aktivity a obraně proti varování jednoduchých statických analytiků se v balíčcích používalo kódování bloků kódu pomocí Base64 a organizace jejich spuštění po dekódování pomocí volání eval.

V balíčcích noblesse, genesisbot, are, suffer, noblesse2 a noblessev2 byl nalezen kód pro zachycení čísel kreditních karet a hesel uložených v prohlížečích Chrome a Edge, stejně jako pro přenos tokenů účtů z aplikace Discord a odesílání systémových dat, včetně snímků obrazovky obsahu obrazovky. V balíčcích pytagora a pytagora2 byla přítomna možnost stahování a spouštění cizího spustitelného kódu.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster