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

TítuloAutomatic generation of ASTs from a programming language grammar
Autor(es)Silva, Pedro Miguel Mimoso Lopes Ferreira da
Orientador(es)Henriques, Pedro Rangel
Cruz, Daniela Carneiro
Palavras-chaveProgramming languages and grammars
Static analysis
Vulnerabilities
SAST
Language-based tools
Linguagens de programação e gramáticas
Análise estática
Vulnerabilidades
Data31-Jan-2023
Resumo(s)Tools that detect security problems are very important nowadays and for the people doing code reviews it is even more important to have tools that identify vulnerabilities in the code. In this way companies that provide applications can be more confident that the code they deploy is almost vulnerabilities free. A subset of these tools, known as Static Application Security Testing (SAST) tools, rely on the analysis of the source code aiming at looking for patterns that correspond to vulnerabili ties. These analyzers use mainly language processors to help them extract from the source code the information they need. Languages exist for many years but they never ceased to exist because they are in constant development.The description of languages is supported by grammars. Grammars also evolve to sustain the referred languages evolution. They were primarily used for compilers to analyse the structure of the language and parse it; nowadays they help many other tools like SAST for example. Having a tool that can detect vulnerabilities is very useful like was said, but to identify those vulnerabilities it is necessary to find patterns in languages. By finding these abstract patterns the work is simplified since all concrete languages will present similar vulnerabilities. For example, SQl Injection is a vulnerability that is shared across almost all languages; so, it is possible to define one general pattern to capture that common vulnerability in each language. Those patterns are defined over Abstract Syntax Trees (AST). To build an AST while parsing a program, Checkmarx uses a set of functions called Visitors that are associated to the productions of the programming language Grammar. In that context, the Language Factory tool developed by Checkmarx generates automatically some visitors and let programmers to generate the others by dragging and dropping rules. The main objective of Language Factory tool is to aid programmers understanding how to create visitors and, at the same time, to generate as many visitors as possible to be used directly. When Checkmarx is working on a new Language to to include support for that language in the CxSAST tool, the use of Language Factory will help creating the appropriate Visitors making this process simpler and faster. The Master’s project reported in this dissertation appears in that framework aiming at the improvement of the Checkmarx Language Factory making it capable of infer more Visitors from the new language’s Grammar.
Ferramentas que detectam problemas de segurança são muito importantes nos dias de hoje. Para quem tenta encontrar vulnerabilidades no código é ainda mais importante ter ferramentas que as identifiquem. Dessa forma, as empresas que desenvolvem aplicação podem ter mais confiança de que o código que implementaram não contem vulnerabilidades Um subconjunto dessas ferramentas, conhecidas como ferramentas de Static Application Security Testing (SAST), conta com a análise de código-fonte com o objetivo de encontrar padrões que correspondam a vulnerabilidades. Esses analisadores usam principalmente processadores de linguagem para os ajudar a extrair do código-fonte as informações de que precisam. As linguagens existem há muitos anos mas nunca deixaram de existir porque estão em constante mudança. A descrição das linguagens é suportada por gramáticas. As gramáticas também evoluem a par da evolução das referidas linguagens. Eles foram usados principalmente por compiladores para analisar a estrutura da linguagem e analisá-la; hoje em dia usam-se muitas outras ferramentas como o SAST por exemplo. Ter uma ferramenta que detecte vulnerabilidades é muito útil como foi dito, mas para iden tificar essas vulnerabilidades é necessário encontrar padrões nas linguagens. Ao encontrar esses padrões, simplificamos oo trabalho, pois todas as linguagens compartilham as mesmas vulnerabilidades, por exemplo, SQl Injection é uma vulnerabilidade que é compartilhada em quase todas as linguagens, portanto, deve ter padrões em comum. Assim, o objetivo deste projeto de mestrado é melhorar o número de Visitors gerados na ferramenta Language Factory desenvolvida pela Checkmarx. Esta ferramenta gera um número de Visitors e permite que os programadores gerem estes através de associar as respectivas regras. Esta ferramenta tem como principal objetivo fazer com que os programadores entendam como gerar Visitors de forma a gerar o maior número possível destes para que possamos usá-los; por exemplo quando a Checkmarx está a adicionar uma nova linguagem na ferramenta CxSAST, um dos passos é ter uma AST com todos os Visitors para a nova linguagem e se tivéssemos quase todos os Visitors gerados poderíamos tornar o trabalho mais simples e rápido para os programadores. O projeto de Mestrado mencionado nesta dissertação surge nesse enquadramento, visando o aperfeiçoamento da ferramenta Language Factory da Checkmarx tornando-a capaz de inferir mais Visitors, através do uso de uma Gramática nova de uma linguagem de progra mação.
TipoDissertação de mestrado
DescriçãoDissertação de mestrado integrado em Informatics Engineering
URIhttps://hdl.handle.net/1822/86527
AcessoAcesso aberto
Aparece nas coleções:BUM - Dissertações de Mestrado
DI - Dissertações de Mestrado

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
Pedro Miguel Mimoso Lopes Ferreira da Silva.pdfDissertação de Mestrado1,71 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