Programmering

Slangebid: Pas på ondsindede Python-biblioteker

Tidligere på ugen blev to Python-biblioteker indeholdende ondsindet kode fjernet fra Python Package Index (PyPI), Pythons officielle lager for tredjepartspakker.

Det er den seneste inkarnation af et problem, som mange moderne softwareudviklingssamfund står over for, og rejser et vigtigt spørgsmål til alle udviklere, der er afhængige af open source-software: Hvordan kan du gøre det muligt for folk at bidrage med deres egen kode til et fælles arkiv til genbrug , uden at disse repoer bliver vektorer til angreb?

I det store og hele er de officielle tredjepartsbibliotekslagre for sprog, der kører som open source-projekter, som Python, sikre. Men ondsindede versioner af et bibliotek kan sprede sig hurtigt, hvis de ikke er markeret. Og det faktum, at de fleste sådanne sprogopbevaringssteder overvåges af frivillige, betyder, at kun så mange øjne er på udkig, og bidrag får ikke altid den nødvendige kontrol.

De to ondsindede pakker, der blev fjernet fra PyPI i denne uge, brugte et trick kaldet "typo squatting", dvs. at vælge navne, der ligner nok på almindeligt anvendte pakker til at glide varsel, og det kan resultere i utilsigtet installation, hvis nogen fejlagtigt skriver det tilsigtede navn. Forsøg på at maskerere som dateutil og vandmand pakker - bruges til at manipulere Python datetime-objekter og udfører omtrentlige matches på henholdsvis strenge - de ondsindede pakker blev navngivetpython-dateutil og jeIlyfish (med store bogstaver I i stedet for den første små bogstav L).

Når det er installeret,python-dateutil og jeIlyfish opførte sig nøjagtigt som originalerne - undtagen forsøg på at stjæle personlige data fra udvikleren. Paul Ganssle, en udvikler af dateutil team, fortalte ZDNet, at den sandsynlige årsag til angrebet var at finde ud af, hvilke projekter offeret arbejdede på for at starte senere angreb på disse projekter.

Python-biblioteker falder generelt i to lejre - modulerne, der udgør standardbiblioteket, der leveres med Python-runtime, og tredjepartspakker, der er hostet på PyPI. Mens modulerne i standardbiblioteket er nøje inspiceret og nøje undersøgt, er PyPI langt mere åben af ​​design, hvilket gør det muligt for Python-brugerne at bidrage frit med pakker til genbrug.

Ondsindede projekter er fundet på PyPI før. I et tilfælde hukommede ondsindede pakker typografi Django-rammen, en hæfteklamme til webudvikling i Python. Men problemet ser ud til at blive mere presserende.

"Som medlem af Python-sikkerhedsteamet (PSRT) får jeg rapporter om skrivefejl eller ondsindede pakker hver uge," sagde Christian Heimes, en vigtig Python-udvikler, i Pythons officielle udviklingsdiskussionsforum. “(Sjovt faktum: Der var fire e-mail-tråde om ondsindet indhold på PyPI i denne måned, og i dag er det kun 4. december.)”

Python Software Foundation har planer på bordet for at beskytte PyPI mod misbrug, men de vil tage tid at udrulle fuldt ud. Tidligere på året rullede Python-teamet tofaktorautentificering ud som en mulighed for PyPI-brugere, der uploader pakker. Det giver et beskyttelseslag for udviklere, der uploader til PyPI, hvilket gør det sværere at kapre deres konti og uploade malware i deres navn. Men det vedrører ikke typografisk huk eller andet misbrug af fælles.

Andre initiativer inkluderer at se på måder at udligne disse problemer med automatisering på. Arbejdsgruppen inden for Python Software Foundation, der håndterer emballage, har modtaget et tilskud fra Facebook Research til at skabe mere avancerede PyPI-sikkerhedsfunktioner, såsom kryptografisk signering af PyPI-pakker og automatisk påvisning af ondsindede uploads (snarere end arbejdskrævende manuel screening).

Tredjeparter tilbyder også en vis beskyttelse. Reversing Labs, et uafhængigt sikkerhedsfirma, opdagede et PyPI-baseret angreb efter at have foretaget en scanning af hele arkivet for mistænkelige filformater. Men virksomheden indrømmer, at sådanne scanninger ikke er en erstatning for intern kontrol. "For i høj grad at reducere muligheden for at være vært for malware", skrev virksomheden, "ville sådanne arkiver alle drage fordel af kontinuerlig behandling og en bedre gennemgangsproces."

Den bedste løsning, som Pythons egne udviklere er klar over, skal komme indefra.

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