Utilize este identificador para referenciar este registo:
https://hdl.handle.net/1822/79038
Título: | Compositional analysis of vulnerabilities in microservice-based applications |
Autor(es): | Loureiro, Nelson Diogo Santos |
Orientador(es): | Pinto, Luís F. Frade, M. J. |
Palavras-chave: | Data-flow analysis Graphs Microservices Static analysis Vulnerabilities Análise do fluxo de dados Análise estática Grafos Microserviços Vulnerabilidades |
Data: | 2021 |
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. |
Tipo: | Dissertação de mestrado |
Descrição: | Dissertação de mestrado em Matemática e Computação |
URI: | https://hdl.handle.net/1822/79038 |
Acesso: | Acesso aberto |
Aparece nas coleções: | BUM - Dissertações de Mestrado |
Ficheiros deste registo:
Ficheiro | Descrição | Tamanho | Formato | |
---|---|---|---|---|
Dissertacao-PG37020.pdf | 1,67 MB | Adobe PDF | Ver/Abrir |
Este trabalho está licenciado sob uma Licença Creative Commons