Ohjelmointi

Käärmeen puremat: Varo haitallisia Python-kirjastoja

Aiemmin tällä viikolla kaksi haittaohjelmakoodia sisältävää Python-kirjastoa poistettiin Pythonin pakettihakemistosta (PyPI), joka on Pythonin virallinen kolmansien osapuolten pakettien arkisto.

Se on viimeisin monien nykyaikaisten ohjelmistokehitysyhteisöjen kohtaaman ongelman inkarnaatio, joka herättää tärkeän kysymyksen kaikille avoimen lähdekoodin ohjelmistoihin luottaville kehittäjille: Kuinka voit tehdä ihmisille mahdollisuuden lisätä oman koodinsa yhteiseen arkistoon uudelleenkäyttöä varten , ilman että näistä repoista tulisi vektoreita hyökkäyksille?

Avoimien lähdekoodien projektina toimivien kielten viralliset kolmannen osapuolen kirjastovarastot, kuten Python, ovat yleensä turvallisia. Kirjaston haitalliset versiot voivat kuitenkin levitä nopeasti, jos niitä ei valita. Ja se, että suurinta osaa tällaisista kielivarastoista valvoo vapaaehtoinen, tarkoittaa, että vain niin monet silmät ovat etsimässä, eikä kommentit aina saa tarvittavaa valvontaa.

Kaksi PyPI: stä tällä viikolla poistettua haitallista pakettia käytti temppua nimeltä ”kirjoitusvirhe kyykky” eli valitsi nimiä, jotka ovat riittävän samankaltaisia ​​kuin yleisesti käytetyt paketit huomautuksen liukastamiseksi, ja tämä voi johtaa vahingossa tapahtuvaan asennukseen, jos joku kirjoittaa väärän nimen. Yritetään naamioida dateutil ja meduusa paketit - joita käytetään Python-päivämääräobjektien manipulointiin ja likimääräisten vastaavuuksien suorittamiseen merkkijonoille - haitalliset paketit nimettiinpython-dateutil ja jeniä (isolla I: llä ensimmäisen pienen L: n sijaan).

Asennettunapython-dateutil ja jeniä käyttäytyi täsmälleen kuten alkuperäiset - lukuun ottamatta yritystä varastaa henkilötietoja kehittäjältä. Paul Ganssle, kehittäjä dateutil joukkue, kertoi ZDNetille, että hyökkäyksen todennäköinen syy oli selvittää, minkä projektien uhri työskenteli, jotta voidaan myöhemmin käynnistää hyökkäyksiä kyseisiä projekteja vastaan.

Python-kirjastot jakautuvat yleensä kahteen leiriin - moduulit, jotka muodostavat tavallisen kirjaston, joka toimitetaan Python-ajon aikana, ja kolmannen osapuolen paketit, joita isännöi PyPI. Vaikka vakiokirjaston moduulit tarkastetaan tarkasti ja tarkasti, PyPI on suunnittelulta paljon avoimempi, jolloin Python-käyttäjien yhteisö voi vapaasti lähettää paketteja uudelleenkäyttöä varten.

PyPI: stä on aiemmin löydetty haitallisia projekteja. Yhdessä tapauksessa haitalliset paketit kirjoitusvirheessä tukahtuivat Django-kehyksen, joka on osa Pythonin verkkokehitystä. Mutta ongelma näyttää kasvavan yhä kiireellisemmäksi.

"Python-tietoturvaryhmän (PSRT) jäsenenä saan viikoittain ilmoituksia kirjoitusvirheistä tai haittaohjelmista", kertoi Pythonin ydinkehittäjä Christian Heimes Pythonin virallisessa kehitysfoorumissa. "(Hauska tosiasia: PyPI: ssä oli tässä kuussa neljä haitallista sisältöä sisältävää sähköpostiketjua ja tänään on vasta 4. joulukuuta.)"

Python Software Foundationilla on suunnitelmia PyPI: n suojaamiseksi väärinkäytöksiltä, ​​mutta niiden käyttöönotto vie aikaa. Aiemmin tänä vuonna Python-tiimi esitteli kaksivaiheisen todennuksen vaihtoehtona paketteja lataaville PyPI-käyttäjille. Se tarjoaa suojan kehittäjille, jotka lataavat PyPI: hen, mikä vaikeuttaa heidän tiliensä kaappaamista ja haittaohjelmien lähettämistä heidän nimiinsä. Mutta siinä ei käsitellä kirjoitusvirheen kyykkyjä tai muita tavallisen väärinkäytöksiä.

Muita aloitteita ovat etsiminen tapoja kompensoida nämä ongelmat automaatiolla. Pakkauksia käsittelevä Python Software Foundation -säätiön työryhmä on saanut apurahan Facebook Researchilta kehittyneempien PyPI-suojausominaisuuksien luomiseen, kuten PyPI-pakettien salaukselliseen allekirjoittamiseen ja haitallisten latausten automaattiseen havaitsemiseen (työvoimavaltaisen manuaalisen seulonnan sijaan).

Myös kolmannet osapuolet tarjoavat jonkin verran suojaa. Riippumaton tietoturvayhtiö Reversing Labs löysi PyPI-pohjaisen hyökkäyksen tarkistaessaan koko arkiston epäilyttäviä tiedostomuotoja varten. Mutta yritys myöntää, että tällaiset skannaukset eivät korvaa sisäistä tarkastusta. "Haittaohjelmien isännöinnin mahdollisuuden vähentämiseksi huomattavasti", yritys kirjoitti, "tällaiset arkistot hyötyisivät jatkuvasta prosessoinnista ja paremmasta tarkistusprosessista."

Parhaan ratkaisun, kuten Pythonin omat kehittäjät tietävät, on oltava sisältäpäin.

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