The Embedding and Retrieval of Software Supply Chain Information in Java Applications
2024 (English)Independent thesis Advanced level (degree of Master (Two Years)), 20 credits / 30 HE credits
Student thesisAlternative title
Inbäddning och extraktion av mjukvaruleverantörskejdan i Java-applikationer (Swedish)
Abstract [en]
As attacks on the software supply chain become increasingly prevalent, many steps have been taken to provide further insight into the components that make up the software. A common way to do this is through a software bill of materials – a document providing information about each component in the supply chain as well as their relationships. However, these are often generated by statically inspecting a project and contain no information about which code is actually executed at runtime. Knowing what components are used and when can be useful in many ways, such as for dependency trimming or dynamic vulnerability querying. In this thesis, we present and evaluate a collection of tools, Classport, which can be used to produce runtime-aware dependency representations for Java programs built using the Maven build system. This is achieved in two main steps. First, we use a Maven plugin to automatically embed supply chain information inside the class files required by the project, including those contained in its dependencies. Second, we use a Java agent to monitor the loaded classes at runtime and extract the supply chain information from them. We evaluate Classport by testing it on eight open source projects, comparing its dependency representations to those provided by Maven itself. We also investigate side effects of the embedding, such as the size increase and whether it leads to changes in the program’s behaviour. The results show that we are able to achieve our goal of accurately reflecting the runtime state of the program in terms of its loaded dependencies. Additionally, the results show that while our method of adding metadata does not seem to affect the correctness of a program, it does noticeably increase its size. Making the impact of Classport less noticeable to the average user could increase the possibility of mainstream adoption, and is thus an appropriate candidate for future work.
Abstract [sv]
Den så kallade mjukvaruleverantörskedjan, bestående av alla komponenter som används i ett programs utveckling, har blivit ett allt vanligare mål för cyberattacker. I takt med detta har ett flertal lösningar tagits fram för att öka förståelsen för dessa komponenter – exempelvis den kod som ingår i mjukvaran. En materialförteckning för mjukvara (eng: software bill of materials) används ofta för detta ändamål, och innehåller bland annat information om ett programs komponenter samt deras relation till varandra. De allra flesta sådana förteckningar genereras dock medan koden byggs eller efter att den packats ihop till en fil, och har ingen insikt i vilka delar av koden som faktiskt exekveras. Kunskap om detta kan vara användbart på många sätt, till exempel för att hitta tredjepartskomponenter som inte används eller för att undersöka koden för kända sårbarheter under tiden den körs. I detta examensarbete presenterar och utvärderar vi en samling verktyg, Classport, som kan användas för att producera representationer av mjukvaruleverantörskedjan som tar hänsyn till vilken kod som faktiskt exekveras. Verktygen är utvecklade för att användas på Java-projekt som använder byggsystemet Maven, och består av två huvudsakliga steg. I det första används Maven för att identifiera alla klassfiler som används i projektet, och information om deras ursprung bäddas in i dem. I det andra steget används en Java-agent för att fånga upp alla klasser som laddas in för exekvering, varpå den tidigare inbäddade information extraheras igen. Vi utvärderar Classport genom att testa verktygen på åtta projekt med öppen källkod, och jämför informationen det ger oss med den information som tillhandahålls av Maven självt. Vi undersöker även hur vår inbäddade data påverkar applikationen. Resultaten visar på att vi med hög precision kan återge både vilken kod som laddats in under körtiden och dess ursprung. Den inbäddade informationen verkar inte heller ha någon påverkan på programmets funktion. Däremot leder den till att programfilerna blir märkbart större, vilket riskerar att minska verktygens användningsområde. Hur dessa storleksökningar kan undvikas utan att minska mängden extraherbar information vore således ett lämpligt område för framtida forskning.
Place, publisher, year, edition, pages
2024. , p. 55
Series
TRITA-EECS-EX ; 2024:657
Keywords [en]
Java, Metadata, Software supply chain, Maven
Keywords [sv]
Java, Metadata, Mjukvaruleverantörskedjor, Maven
National Category
Computer and Information Sciences
Identifiers
URN: urn:nbn:se:kth:diva-354837OAI: oai:DiVA.org:kth-354837DiVA, id: diva2:1905606
Supervisors
Examiners
2024-10-172024-10-142024-10-17Bibliographically approved