Show simple item record

dc.contributor.advisorDyrkolbotn, Geir olav
dc.contributor.advisorLeder, Felix
dc.contributor.authorRøe, Simon Rødsbakken
dc.date.accessioned2023-07-14T17:21:35Z
dc.date.available2023-07-14T17:21:35Z
dc.date.issued2023
dc.identifierno.ntnu:inspera:139587122:34444834
dc.identifier.urihttps://hdl.handle.net/11250/3079062
dc.description.abstractDelingskulturen som finnes på internett og spesielt knyttet til åpen kildekode har vært viktig ved den økende interessen for teknologi. Innenfor programmering og språk slik som Python lener seg på gruppen som produserer og deler sine prosjekter med andre i form av programmer og funksjonalitet. Men, faren ved å stole på andre gjør det mulig for ondsinnede aktører å utnytte vanlige brukere ved å lokke med god funksjonalitet. Ved å legge med skadelig kode i disse pakkene som deles kan føre til store konsekvenser hvis de klarer å snike seg med i større programvareprosjekter. Denne oppgaven har som mål å øke kunnskapsnivået om attributter som er vanlig å finne på slike ondsinnede pakker i Python sitt pakkebibliotek PyPi samt undersøke hva slags prestasjon kan forventes av de vanligste maskinlærings modellene. Vi har gjort eksperimenter på metadata og statiske indikatorer hentet fra ett datasett som inneholder 382,712 legitime og 7,639 ondsinnede Python pakker. Vi har benyttet oss av InformationGain algoritmen for å rangere indikatorene og modeller hentet fra maskinlærings-biblioteket Scikitlearn for å finne de beste indikatorene samt å identifisere forventet presisjon innen klassifisering. Fra eksperimentene fant vi at Neural Network modellen Multilayer Perceptron presterte best med de originale parameterne. Det høyeste F1 resultatet fra tester mot datasettet for verifisering viste 92%. Vi fant også at de vanligste indikatorene blant ondsinnede pakker var de to godt brukte bibliotekene "requests" og "setuptools". Resultatene fra testing av modeller fremstår det som vi klarer å detektere mange av de små ondsinnede pakkene, siden gjennomsnittlig størrelse var mye høyere blant de feilklassifiserte. Det må derfor trolig ses nærmere på hvordan forbedre deteksjon av større og potensielt mer sofistikerte pakker. Vi konkluderer med at statiske indikatorer og maskinlæring kan være en god kombinasjon for å detektere ondsinnede pakker. Men det trengs mer forskning på hvordan optimalisere hver modell samt mer kunnskap om hvilke kombinasjoner av indikatorer er oftest sett blant de ondsinnede pakkene. Vi har bidratt med mer kunnskap, blant annet om hvordan ulike modeller klarer å klassifisere ondsinnede pakker basert på metadata og statiske indikatorer. Vi har også kommet med forslag til hva som kan fokuseres på videre innen dette området.
dc.description.abstractThe sharing culture, especially Open-Source, has become important with the increased use of technology and the internet. In programming, languages like Python rely on the open-source community to create libraries for people to use. This allows anyone to implement complex application functionality simply by adding a package. However, the danger of letting anyone publish such packages is the possibility of evil actors trying to exploit the users by uploading malicious packages, which can cause significant damage if they can sneak into popular projects. The thesis aims to increase the domain knowledge of the characteristics commonly found in malicious packages in the Python Package Index (PyPi) and to see how common machine learning models perform on this data. We have used static indicators and metadata of a dataset consisting of 382,712 benign and 7,639 malicious Python packages. We have used the feature ranking method InformationGain and common machine learning models from the Python library Scikitlearn to find the most valuable features and identify the expected performance from the models. From the experiments conducted, did we find the Neural Network Perceptron model to perform the best with the default options among those we tested with an F1-score of 92\% against the verification dataset. We also found the most common features among the malicious packages to be two commonly used libraries, "requests" and "setuptools". From the results of testing the models, we found that it can identify most of the small malicious samples while the average size of those misclassified was much higher. It needs to be looked closer at improving the detection of larger and potentially more sophisticated packages. We conclude that static indicators and machine learning could be good for detecting malicious packages. However, more research into optimization is needed, as well as more profound knowledge of what combination of indicators is typically malicious. We have contributed with extended knowledge on the topic and on how some models perform on static indicators on a larger dataset of packages. We have also provided recommendations for what could be focused on further in research on the topic.
dc.languageeng
dc.publisherNTNU
dc.titleIdentifying Malicious Python Packages: Using Static Indicators and Machine Learning
dc.typeMaster thesis


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record