En grupp forskare vid à bo universitet (Finland) har publicerat resultaten av en analys av paketen i PyPI-repositoriet med avseende pÄ anvÀndning av potentiellt farliga konstruktioner som kan leda till sÄrbarheter. Vid analysen av 197 000 paket identifierades 749 000 potentiella sÀkerhetsproblem. I 46% av paketen finns det minst ett sÄdant problem. Bland de vanligast förekommande problemen mÀrks brister relaterade till hantering av undantag och anvÀndning av funktioner som tillÄter kodinjektion.
Av de identifierade 749 000 problemen Àr 442 000 (41%) markerade som obetydliga, 227 000 (30%) som problem av mÄttlig fara och 80 000 (11%) som farliga. Vissa paket sticker ut och har tusentals problem: till exempel har paketet PyGGI identifierat 2589 problem, frÀmst relaterade till anvÀndningen av konstruktionen 'try-except-pass', medan paketet appengine-sdk har 2356 problem. Ett stort antal problem finns ocksÄ i paketen genie.libs.ops, pbcore och genie.libs.parser.
Det bör noteras att resultaten har erhÄllits genom en automatiserad statisk analys som inte tar hÀnsyn till kontexten för anvÀndningen av olika konstruktioner. Utvecklaren av verktyget bandit, som anvÀndes för att skanna koden, uttryckte Äsikten att pÄ grund av det ganska höga antalet falska positiva resultat kan kontrollerna inte direkt betraktas som sÄrbarheter utan ytterligare manuell granskning av varje problem.
Till exempel anser analysatorn att anvÀndning av osÀkra slumptalsgeneratorer och hash-algoritmer som MD5 Àr ett sÀkerhetsproblem, Àven om sÄdana algoritmer i koden kan anvÀndas för ÀndamÄl som inte pÄverkar sÀkerheten. Analysatorn anser ocksÄ att varje hantering av externa data i osÀkra funktioner som pickle, yaml.load, subprocess och eval Àr ett problem, men denna anvÀndning behöver inte nödvÀndigtvis medföra en sÄrbarhet och i praktiken kan anvÀndningen av dessa funktioner genomföras utan sÀkerhetshot.
Bland de kontroller som anvÀndes i studien:
- AnvÀndning av potentiellt osÀkra funktioner som exec, mktemp, eval, mark_safe etc.
- OsÀkert att stÀlla in ÄtkomstrÀttigheter för filer.
- Anslutning av nÀtverksuttag till alla nÀtverksgrÀnssnitt.
- AnvÀndning av hÄrdkodade lösenord och nycklar.
- AnvÀndning av en fördefinierad temporÀr katalog.
- AnvÀndning av pass och continue i catch-all-stil undantagshanterare;
- Kör web-applikationer baserade pÄ webbramen Flask med felsökningslÀget aktiverat.
- AnvÀndning av osÀkra metoder för deserialisering av data.
- AnvÀndning av hash-funktionerna MD2, MD4, MD5 och SHA1.
- AnvÀndning av osÀkra kryptografiska algoritmer DES och krypteringslÀgen.
- AnvÀndning av osÀkra implementeringar av HTTPSConnection i vissa versioner av Python.
- Specifikation av file:// scheman i urlopen.
- AnvÀndning av pseudorandomtalsgeneratorer vid utförande av kryptografiska uppgifter.
- AnvÀndning av Telnet-protokollet.
- AnvÀndning av osÀkra XML-parsers.
Det Àr vÀrt att nÀmna att 8 skadliga paket har upptÀckts i PyPI-katalogen. Innan problematiska paket togs bort hade de laddats ner mer Àn 30 000 gÄnger. För att dölja skadlig aktivitet och kringgÄ varningar frÄn enklare statiska analyzers anvÀndes blockkodning med Base64 och exekvering efter avkodning via eval-anrop.
I paketen noblesse, genesisbot, are, suffer, noblesse2 och noblessev2 har kod upptÀckts för att fÄnga kreditkortsnummer och lösenord som sparats i Chrome- och Edge-webblÀsare, samt för att överföra token för konton frÄn Discord-appen och sÀnda systemdata inklusive skÀrmdumpar av skÀrminnehÄllet. I paketen pytagora och pytagora2 fanns det möjlighet att ladda ner och köra extern körbar kod.
KĂ€lla: opennet.ru
