Utilize este identificador para referenciar este registo: https://hdl.handle.net/1822/79038

TítuloCompositional analysis of vulnerabilities in microservice-based applications
Autor(es)Loureiro, Nelson Diogo Santos
Orientador(es)Pinto, Luís F.
Frade, M. J.
Palavras-chaveData-flow analysis
Graphs
Microservices
Static analysis
Vulnerabilities
Análise do fluxo de dados
Análise estática
Grafos
Microserviços
Vulnerabilidades
Data2021
Resumo(s)Nowadays, 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.
Atualmente, 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.
TipoDissertação de mestrado
DescriçãoDissertação de mestrado em Matemática e Computação
URIhttps://hdl.handle.net/1822/79038
AcessoAcesso aberto
Aparece nas coleções:BUM - Dissertações de Mestrado

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
Dissertacao-PG37020.pdf1,67 MBAdobe PDFVer/Abrir

Este trabalho está licenciado sob uma Licença Creative Commons Creative Commons

Partilhe no FacebookPartilhe no TwitterPartilhe no DeliciousPartilhe no LinkedInPartilhe no DiggAdicionar ao Google BookmarksPartilhe no MySpacePartilhe no Orkut
Exporte no formato BibTex mendeley Exporte no formato Endnote Adicione ao seu ORCID