Vis enkel innførsel

dc.contributor.advisorFranke, Katrin
dc.contributor.authorMilje, Anders Aasrum
dc.date.accessioned2022-08-04T17:19:20Z
dc.date.available2022-08-04T17:19:20Z
dc.date.issued2022
dc.identifierno.ntnu:inspera:106263136:21450228
dc.identifier.urihttps://hdl.handle.net/11250/3010208
dc.description.abstractDeling av åpen kildekode er en vanlig praksis i store deler av moderne programvareutvikling. Å dele programvare sparer utallige ressurser for utviklere, ikke bare fordi dette reduserer utviklingstid, men også en kan være mer sikker på at koden er robust. Ikke alle utviklere har ekspertisen til å implementere avanserte algoritmer, for eksempel maskinlærings-biblioteker. Ofte er denne gjenbruken av programvare mer pålitelig, på grunn av det store antallet personer som bidrar og verifiserer at funksjonaliteten fungerer slik som forventet. På baksiden av medaljen kan fiendtlige aktører enten kapre eller laste opp nye programvarepakker som er injisert med ondsinnet kode. Ondsinnet kode som ikke blir oppdaget tidlig nok kan forårsake enorme mengder skade; spesielt hvis pakken er populær. Målet med denne oppgaven er å forbedre den nyeste forskningen på detektering av skadelige pakker i Python sitt pakke-register (PyPI). Vi gjorde dette ved å utvikle en ny metode for statisk analyse av potensielle skadelige programvarepakker, samt gi en oversikt over den nåværende sikkerhetstilstanden til PyPI, og i andre pakke-registre for programvare generelt. Vi gjorde dette ved å bygge på nyere forskning innen verdikjede-sikkerhet (supply-chain security) i åpen kildekode og sikkerhet i pakke-register for programvare. Vi tester deretter vår implementasjon av den nye metoden på et datasett som inneholder både skadelig og godartet programvarepakker. Vi bruker genetiske algoritmer for å optimalisere parametersett, som resulterer i to sett med parametere som vi ser potensiale i. Det første settet med parametere resulterer i en 60\% F-score og 222 varsler som genereres når vi utfører eksperimenter på datasettet vårt med 441 godartede og 97 ondsinnede pakker. Det andre parametersettet, med samme datasett, resulterer i en 8-9\% F-score, men genererer null varsler. Vi konkluderer med at våre første parametere er egnet for små- til middels-skala analyse av en eller flere Python-pakker, og pakker de avhenger av. Vår analyse av det andre settet indikerer at det kan være egnet for analyser i stor skala, for eksempel til skanning etter ondsinnede pakker i PyPI, men mer forskning er nødvendig på dette området. Som et siste bidrag deler vi vår implementasjon av denne nye metoden som åpen kildekode (https://github.com/Syntox32/scout/).
dc.description.abstractSharing open-source software is a common practice in large parts of modern software development. Sharing software saves countless resources for developers, not only because it cuts down on development time but also because it is more robust. Not every developer has the expertise to implement advanced algorithms, for example, machine learning libraries. Often this re-use of software is more reliable due to the large number of persons who contribute and verify that functionality works as intended. On the flip side of the coin, hostile actors could potentially hijack or upload new software packages injected with malicious code. Malicious contributions that are not discovered in a timely manner in such packages could cause huge amounts of damage, especially if the package is popular. This thesis aims to improve on state-of-the-art detection of malicious packages in the Python Package Index (PyPI). We did this by developing a new method for static analysis of potential malicious packages, as well as providing an overview of the current state of security in PyPI, and software package managers in general. We did this by building on recent research in the field of software supply-chain security and package managers. We then test an implementation of the method on a dataset containing both malicious and benign software packages. We use genetic algorithms to optimize parameter sets, which result in two sets of parameters where we see potential. The first set of parameters resulted in a 60\% F-score and 222 alerts when experimenting on our dataset of 441 benign and 97 malicious packages. With the same dataset, the second parameter set results in an 8-9\% F-score but generates zero alerts. We conclude that our first parameters are suited for small-to-medium scale analyses of one or more Python packages and their dependencies. Our analysis of the second set indicates it could be suitable for large-scale scanning of malicious packages, for example, in PyPI. Still, more research is needed on this topic. As the last contribution, we provide our implementation of this new method as open-source software (https://github.com/Syntox32/scout/).
dc.languageeng
dc.publisherNTNU
dc.titleDetecting Malicious Python Packages in the Python Package Index (PyPI)
dc.typeMaster thesis


Tilhørende fil(er)

Thumbnail

Denne innførselen finnes i følgende samling(er)

Vis enkel innførsel