Programavimas

Gyvatės įkandimai: saugokitės kenkėjiškų „Python“ bibliotekų

Šios savaitės pradžioje iš „Python Package Index“ (PyPI), oficialios „Python“ trečiųjų šalių paketų saugyklos, buvo pašalintos dvi „Python“ bibliotekos, kuriose yra kenkėjiškų kodų.

Tai naujausias problemos, su kuria susiduria daugelis šiuolaikinių programinės įrangos kūrimo bendruomenių, įsikūnijimas, keliantis svarbų klausimą visiems kūrėjams, pasikliaujantiems atvirojo kodo programine įranga: Kaip jūs galite leisti žmonėms savo kodą įkelti į bendrą saugyklą, kad būtų galima pakartotinai naudoti , net jei tie atpirkimo takai tapo atakų vektoriais?

Apskritai oficialios trečiųjų šalių bibliotekų saugyklos kalboms, vykdomoms kaip atvirojo kodo projektai, pvz., „Python“, yra saugios. Bet nepažymėjus, kenkėjiškos bibliotekos versijos gali greitai išplisti. Tai, kad daugumą tokių kalbų saugyklų prižiūri savanoriai, reiškia, kad tik tiek daug žvilgsnių žvalgosi, o indėliai ne visada sulaukia reikiamo patikrinimo.

Šioje savaitėje iš PyPI pašalintose dviejose kenkėjiškose paketėse buvo naudojamas triukas, vadinamas „rašybos tupėjimas“, t. Y. Pasirenkant pavadinimus, kurie yra pakankamai panašūs į dažniausiai naudojamus paketus, kad būtų galima užfiksuoti pranešimą, ir tai gali sukelti netyčinį įdiegimą, jei kas nors neteisingai įveda numatytą pavadinimą. Bandymas užmaskuoti kaip dateutil ir medūza paketai, naudojami manipuliuojant „Python“ datos laiko objektais ir atitinkamai atliekant apytiksles stygų atitikmenis, buvo pavadinti kenksmingais paketaispython-dateutil ir jeIlyfish (didžiosiomis raidėmis I vietoj pirmųjų mažųjų L raidžių).

Įdiegę,python-dateutil ir jeIlyfish elgėsi tiksliai taip, kaip originalai, išskyrus bandymą pavogti asmeninius duomenis iš kūrėjo. Paulas Ganssle'as, kūrėjas dateutil komanda, ZDNet sakė, kad tikėtina išpuolio priežastis buvo išsiaiškinti, prie kokių projektų auka dirbo, kad vėliau būtų galima pradėti šių projektų išpuolius.

„Python“ bibliotekos paprastai suskirstytos į dvi stovyklas - modulius, sudarančius standartinę biblioteką, pateikiamą kartu su „Python“ vykdymo laiku, ir trečiųjų šalių paketus, talpinamus „PyPI“. Nors standartinės bibliotekos moduliai yra kruopščiai tikrinami ir kruopščiai tikrinami, PyPI yra kur kas atviresnis, nes „Python“ vartotojų bendruomenė gali laisvai prisidėti prie paketų pakartotiniam naudojimui.

Kenkėjiški projektai jau buvo rasti PyPI. Vienu atveju kenkėjiški paketai suklydo „Django“ sistemoje - pagrindiniame „Python“ žiniatinklio kūrimo etape. Tačiau panašu, kad problema vis aktualesnė.

„Būdamas„ Python “saugos komandos (PSRT) narys, kiekvieną savaitę gaunu pranešimus apie rašybos klaidas ar kenkėjiškus paketus“, - oficialiame „Python“ plėtros diskusijų forume sakė pagrindinis „Python“ kūrėjas Christianas Heimesas. „(Įdomus faktas: šį mėnesį PyPI buvo keturios el. Pašto gijos apie kenkėjišką turinį, o šiandien yra tik gruodžio 4 d.)“

„Python“ programinės įrangos fondas turi planų, kaip apsaugoti PyPI nuo piktnaudžiavimo, tačiau norint juos visiškai įgyvendinti, prireiks laiko. Šių metų pradžioje „Python“ komanda pristatė dviejų veiksnių autentifikavimą kaip „PyPI“ vartotojams, kurie siunčia paketus. Tai suteikia apsaugą kūrėjams, kurie įkelia į PyPI, apsunkindami savo paskyras ir įkeldami kenkėjiškas programas jų vardu. Tačiau jame nesprendžiama rašybos klaidų ar kitokio piktnaudžiavimo bendruoju ženklu.

Kitos iniciatyvos apima būdų, kaip kompensuoti tas problemas, susijusias su automatizavimu, paiešką. „Python“ programinės įrangos fondo darbo grupė, tvarkanti pakuotes, gavo „Facebook Research“ dotaciją sukurti pažangesnes PyPI saugos funkcijas, tokias kaip „PyPI“ paketų kriptografinis pasirašymas ir automatinis kenkėjiškų įkėlimų nustatymas (o ne daug darbo reikalaujantis rankinis patikrinimas).

Trečiosios šalys taip pat siūlo tam tikrą apsaugą. Nepriklausoma saugos įmonė „Reversing Labs“ atrado PyPI pagrįstą ataką atlikusi visos saugyklos nuskaitymą dėl įtartinų failų formatų. Tačiau bendrovė pripažįsta, kad tokie nuskaitymai nepakeičia vidinio patikrinimo. „Norint labai sumažinti kenkėjiškų programų talpinimo galimybę, - rašė bendrovė, - tokioms saugykloms būtų naudingas nuolatinis apdorojimas ir geresnis peržiūros procesas“.

Geriausias sprendimas, kaip žino patys „Python“ kūrėjai, turi būti iš vidaus.

$config[zx-auto] not found$config[zx-overlay] not found