A kutatói csoport a Turkui Egyetemtől (Finnország) közzétette a PyPI adattárban található csomagok potenciálisan veszélyes konstrukciók használatának elemzésének eredményeit, amelyek sebezhetőségek megjelenéséhez vezethetnek. Az elemzés során 197 ezer csomagban 749 ezer potenciális biztonsági problémát azonosítottak. A csomagok 46%-ában legalább egy ilyen probléma található. A leggyakrabban előforduló problémák közé tartoznak a kivételek kezelésével és a kód beszúrására lehetőséget adó megoldásokkal kapcsolatos hiányosságok.
A felderített 749 ezer probléma közül 442 ezer (41%) jelentéktelen, 227 ezer (30%) mérsékelt veszélyességű, és 80 ezer (11%) veszélyes. Néhány csomag kiemelkedik a tömegből, és több ezer problémát tartalmaz: például a PyGGI csomagban 2589 problémát találtak, főként a 'try-except-pass' konstrukció alkalmazásával kapcsolatban, míg az appengine-sdk csomagban 2356 problémát azonosítottak. Nagy számú problémát találunk a genie.libs.ops, pbcore és genie.libs.parser csomagokban is.
Fontos megemlíteni, hogy az eredmények automatizált statikus elemzés alapján készültek, amely nem veszi figyelembe a különböző konstrukciók alkalmazásának kontextusát. A bandit nevű eszköz fejlesztője, amelyet a kód beolvasására használtak, véleményt nyilvánított, hogy a viszonylag magas hamis pozitív arány miatt az ellenőrzési eredményeket nem lehet közvetlenül sebezhetőségekként értelmezni anélkül, hogy minden probléma további manuális felülvizsgálaton ne menne keresztül.
Például az elemző biztonsági problémának tekinti a megbízhatatlan véletlenszám-generátorok és hash-algoritmusok, például az MD5 alkalmazását, miközben a kódban az ilyen algoritmusok biztonságot nem befolyásoló célokra is használhatók. Az elemző továbbá problémának tekinti a külső adatok biztonságtalan funkciókban, mint például a pickle, yaml.load, subprocess és eval történő kezelését, de ez a használat nem feltétlenül kapcsolódik sebezhetőséghez, és az adott funkciók alkalmazása valójában megvalósítható biztonsági fenyegetés nélkül.
A kutatásban használt ellenőrzések közé tartozik:
- Potenciálisan nem biztonságos funkciók, mint az exec, mktemp, eval, mark_safe stb. használata.
- Nem biztonságos fájlhozzáférési jogok beállítása.
- Hálózati aljzat csatlakoztatása minden hálózati interfészhez.
- A kódban keményen megadott jelszavak és kulcsok használata.
- Előre meghatározott ideiglenes könyvtár használata.
- A pass és continue használata az összes kivételt kezelő catch-all stílusú kezelőkben;
- Webalkalmazások futtatása Flask webkeretrendszer alapján engedélyezett hibakeresési módban.
- Biztonságtalan adatdeszerializáló módszerek használata.
- MD2, MD4, MD5 és SHA1 hash-függvények használata.
- A biztonságtalan DES titkosító algoritmusok és titkosítási módok használata.
- Biztonságtalan HTTPSConnection megvalósítás bizonyos Python verziókban.
- file:// séma megadása az urlopen-ban.
- Pszeudo-véletlen szám generátorok használata a kriptográfiai feladatok végrehajtásakor.
- Telnet protokoll használata.
- Biztonságtalan XML elemzők használata.
Továbbá megjegyzetik, hogy 8 rosszindulatú csomagot fedeztek fel a PyPI könyvtárban. A problémás csomagok több mint 30 ezerszer letöltésre kerültek, mielőtt törölték volna őket. A rosszindulatú tevékenység elrejtésére és az egyszerű statikus elemzők figyelmeztetéseinek kijátszására Base64 kódolást alkalmaztak a kódrészletek blokkolására és a dekódolás utáni végrehajtásra eval hívás révén.
A noblesse, genesisbot, are, suffer, noblesse2 és noblessev2 csomagokban olyan kódot találtak, amely a Chrome és Edge böngészőkben tárolt hitelkártya számok és jelszavak elkobzására, valamint a Discord alkalmazásból származó account tokenek továbbítására, és rendszeradatok, például a képernyő tartalmának képernyőképeinek küldésére szolgál. A pytagora és pytagora2 csomagokban lehetőség volt külső végrehajtható kód letöltésére és végrehajtására is.
Forrás: opennet.ru
