Zmijski ugrizi: čuvajte se zlonamjernih Python knjižnica

Ranije ovog tjedna, dvije Python knjižnice koje sadrže zlonamjerni kod uklonjene su iz Python Package Index (PyPI), službenog Pythonova spremišta za pakete treće strane.

To je najnovija inkarnacija problema s kojim se susreću mnoge moderne zajednice za razvoj softvera, postavljajući važno pitanje za sve programere koji se oslanjaju na softver otvorenog koda: Kako ljudima omogućiti da svoj vlastiti kôd dodaju u zajedničko spremište za ponovnu upotrebu , a da ti repo poslovi ne postanu vektori napada?

Uglavnom, službena spremišta biblioteka treće strane za jezike koji se izvode kao projekti otvorenog koda, poput Pythona, su sigurna. No, zlonamjerne verzije knjižnice mogu se brzo proširiti ako se ne označe. A činjenica da većinu takvih jezičnih spremišta nadgledaju dobrovoljci znači da samo toliko očiju gleda i doprinosi ne dobivaju uvijek potrebnu kontrolu.

Dva zlonamjerna paketa uklonjena iz PyPI-ja ovog tjedna koristili su trik nazvan "typo squatting", tj. Odabir imena koja su dovoljno slična uobičajenim paketima da bi se skliznula obavijest, a koji mogu rezultirati slučajnom instalacijom ako netko pogrešno napiše željeno ime. Pokušaj maskenbal kao dateutili jellyfishpakete-koriste za manipulaciju Python datetime objekata i obavljanje približne utakmica na žice, odnosno-a zlonamjerne paketi su po imenu  python-dateutili jeIlyfish (s velikim slovom I umjesto prvog malih slova L).

Kada je instaliran  python-dateutili jeIlyfishponašao se točno poput originala - osim pokušaja krađe osobnih podataka od programera. Paul Ganssle, programer u dateutiltimu, rekao je za ZDNet da je vjerojatni razlog napada bio utvrditi na kojim je projektima žrtva radila kako bi pokrenula kasnije napade na te projekte.

Python knjižnice općenito se dijele na dva tabora - module koji čine standardnu ​​knjižnicu isporučenu s Python runtime i pakete treće strane hostirane na PyPI. Iako se moduli u standardnoj knjižnici pomno pregledavaju i strogo provjeravaju, PyPI je dizajnom daleko otvoreniji, omogućavajući zajednici korisnika Pythona da slobodno doprinose paketima za ponovnu upotrebu.

Zlonamjerni projekti već su bili pronađeni na PyPI-u. U jednom su slučaju zlonamjerni paketi pogrešno kucali Django okvir, glavnu komponentu web razvoja u Pythonu. No, čini se da problem postaje sve hitniji. 

"Kao član Python sigurnosnog tima (PSRT) svaki tjedan dobivam izvješća o pogrešnom čučnju ili zlonamjernim paketima", rekao je Christian Heimes, jezgroviti programer za Python, na službenom forumu za raspravu o Pythonu. "(Zabavna činjenica: Ovog su mjeseca postojale četiri niti e-pošte o zlonamjernom sadržaju na PyPI-u, a danas je tek 4. prosinca.)" 

Python Software Foundation ima na raspolaganju planove za zaštitu PyPI-a od zlouporabe, ali trebat će vremena da se u potpunosti uvede. Ranije ove godine Python tim uveo je dvofaktorsku provjeru autentičnosti kao opciju za PyPI korisnike koji prenose pakete. To pruža sloj zaštite programerima koji prenose na PyPI, što otežava otmicu njihovih računa i prijenos zlonamjernog softvera u njihovo ime. Ali to se ne bavi tipografskim čučnjem ili drugim zlouporabama zajedničkog dobra.

Ostale inicijative uključuju traženje načina za rješavanje tih problema s automatizacijom. Radna skupina u okviru Python Software Foundation koja se bavi pakiranjem dobila je potporu od Facebooka Research za stvaranje naprednijih sigurnosnih značajki PyPI, poput kriptografskog potpisivanja PyPI paketa i automatskog otkrivanja zlonamjernih prijenosa (umjesto radno intenzivnog ručnog pregleda).

Treće strane također nude određenu zaštitu. Reversing Labs, neovisna zaštitarska tvrtka, otkrila je napad temeljen na PyPI nakon provođenja skeniranja cijelog spremišta za sumnjive formate datoteka. No, tvrtka priznaje da takvi pregledi nisu zamjena za interno provjeravanje. "Da bi se u velikoj mjeri smanjila mogućnost hostinga zlonamjernog softvera," napisala je tvrtka, "takva bi spremišta imala koristi od kontinuirane obrade i boljeg postupka pregleda."

Kao što su svjesni Pythonovi programeri, najbolje rješenje mora doći iznutra.