Compositional analysis of vulnerabilities in microservice-based applications

dc.contributor.advisorPinto, Luís F.por
dc.contributor.advisorFrade, M. J.por
dc.contributor.authorLoureiro, Nelson Diogo Santospor
dc.date.accessioned2022-07-27T11:23:38Z
dc.date.available2022-07-27T11:23:38Z
dc.date.issued2021
dc.date.submitted2021
dc.description.abstractNowadays, software applications are becoming larger, more expensive, and more complex due to high market demands and adoption of new technologies that have emerged in recent years. Several companies, in order to remain competitive and solve problems resulting from traditional architectural styles, have started to develop their applications following the microservice architectural style. Microservices are an approach to distributed systems, where a single application is developed as a collection of small services, each running its own process and communicating over a network using lightweight mechanisms, such as the HTTP protocol. All types of applications, including those based on microservices, may contain vulnerabilities, which when exploited by a malicious user can cause problems for the organization developing the application and/or the other users. One way to prevent such problems is through the detection and correction of vulnerabilities. However, due to the way microservice-based applications are developed, there exists an additional challenge on how to detect vulnerabilities resulting from service-toservice communications, since these type of interactions are entirely different from those that occur within traditional applications. In collaboration with Checkmarx, we developed a solution that detects vulnerabilities resulting from service-to-service interactions. This was achieved with the help of CxSAST, a static analyzer of Checkmarx built to discover vulnerabilities in source code, and CxQL queries, which implement a technique of data-ow analysis. We applied a compositional approach, which analyses one service at a time, and then connects the results. Our work is directed at services that communicate through the HTTP protocol and interact in a way that satisfies the REST architectural style. Our solution consists of a collection of queries and of an external tool. The queries produce results, searching for traces of vulnerabilities in the source code of services. The external tool, implemented in the C# language, connects these results and defines paths between them. This is done with the use of an adapted depth-first search algorithm over a graph where each vertex is a result, or a combination of results produced by the queries. In order to only provide relevant information, some decisions have been taken about the type of paths to be produced by the external tool, such as the decision to avoid subpaths, which in this context are a source of redundancy.eng
dc.description.abstractAtualmente, as aplicações de software estão a tornar-se maiores, mais dispendiosas e mais complexas devido a elevada exigência do mercado e da adoção de novas tecnologias que têm surgido nos últimos anos. Várias empresas, a fim de se manterem competitivas e resolverem problemas resultantes dos estilos arquiteturais tradicionais, começaram a desenvolver as suas aplicações seguindo o estilo arquitetural de microserviços. Os microserviços são uma abordagem de sistemas distribuídos, onde uma única aplicação é desenvolvida como um conjunto de pequenos serviços, cada um executando o seu próprio processo e comunicando numa rede, utilizando mecanismos leves, tais como o protocolo HTTP. Todos os tipos de aplicações, incluindo as baseadas em microserviços, poderão conter vulnerabilidades, que quando exploradas por um utilizador malicioso poderão causar problemas à empresa que desenvolve a aplicação e/ou aos restantes utilizadores. Uma forma de prevenir tais problemas e através da deteção e correção de vulnerabilidades. No entanto, devido a forma como as aplicações baseadas em microserviços são desenvolvidas, existe uma dificuldade acrescida de como detetar vulnerabilidades resultantes da comunicação entre serviços, uma vez que estas interações são completamente diferentes daquelas que ocorrem dentro de aplicações tradicionais. Em colaboração com a Checkmarx, desenvolvemos uma solução que deteta vulnerabilidades resultantes da interação entre serviços. Isto foi alcançado com a ajuda do CxSAST, um analisador estático da Checkmarx que deteta vulnerabilidades em código fonte, e das queries CxQL, que implementam uma técnica de análise do fuxo de dados. É aplicada uma abordagem composicional, que analisa um serviço de cada vez e de seguida liga os resultados. O nosso trabalho é dirigido a serviços que comunicam através do protocolo HTTP e interagem de uma forma que satisfaz o estilo arquitetural REST. A nossa solução é composta por um conjunto de queries e uma ferramenta externa. As queries produzem resultados, procurando indícios de vulnerabilidades no código fonte dos serviços. A ferramenta externa, implementada na linguagem C#, liga estes resultados e define caminhos entre eles. Isto é concretizado através de uma adaptação do algoritmo de pesquisa em profundidade sobre um grafo onde cada vértice é um resultado, ou combinação de resultados produzidos pelas queries. De forma a fornecer apenas informação relevante, foram tomadas algumas decisões sobre o tipo de caminhos que pretendemos produzir, tais como a decisão de evitar subcaminhos, que neste contexto são uma fonte de redundância.por
dc.identifier.tid202991202por
dc.identifier.urihttps://hdl.handle.net/1822/79038
dc.language.isoengpor
dc.rightsopenAccesspor
dc.rights.urihttp://creativecommons.org/licenses/by/4.0/por
dc.subjectData-flow analysispor
dc.subjectGraphspor
dc.subjectMicroservicespor
dc.subjectStatic analysispor
dc.subjectVulnerabilitiespor
dc.subjectAnálise do fluxo de dadospor
dc.subjectAnálise estáticapor
dc.subjectGrafospor
dc.subjectMicroserviçospor
dc.subjectVulnerabilidadespor
dc.subject.fosCiências Naturaispor
dc.titleCompositional analysis of vulnerabilities in microservice-based applicationspor
dc.typemasterThesiseng
dspace.entity.typePublicationen
sdum.degree.grade18 valorespor
sdum.uoeiEscola de Ciênciaspor
thesis.degree.grantorUniversidade do Minhopor
thesis.degree.nameMestrado em Matemática e Computaçãopor

Ficheiros

Pacote original

A mostrar 1 - 1 de 1
A carregar...
Nome:
Nelson Diogo Santos Loureiro.pdf
Tamanho:
1.63 MB
Formato:
Adobe Portable Document Format
Descrição:
Dissertação de Mestrado