Automatic generation of ASTs from a programming language grammar

Detalhes bibliográficos
Autor(a) principal: Silva, Pedro Miguel Mimoso Lopes Ferreira da
Data de Publicação: 2023
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
Texto Completo: https://hdl.handle.net/1822/86527
Resumo: Dissertação de mestrado integrado em Informatics Engineering
id RCAP_85ddd5dc1c48bd8aeedcc8ca2f9953da
oai_identifier_str oai:repositorium.sdum.uminho.pt:1822/86527
network_acronym_str RCAP
network_name_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository_id_str 7160
spelling Automatic generation of ASTs from a programming language grammarProgramming languages and grammarsStatic analysisVulnerabilitiesSASTLanguage-based toolsLinguagens de programação e gramáticasAnálise estáticaVulnerabilidadesEngenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e InformáticaDissertação de mestrado integrado em Informatics EngineeringTools 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.Henriques, Pedro RangelCruz, Daniela CarneiroUniversidade do MinhoSilva, Pedro Miguel Mimoso Lopes Ferreira da2023-01-312023-01-31T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttps://hdl.handle.net/1822/86527eng203356225info:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2023-09-23T01:18:39Zoai:repositorium.sdum.uminho.pt:1822/86527Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T20:30:41.240997Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse
dc.title.none.fl_str_mv Automatic generation of ASTs from a programming language grammar
title Automatic generation of ASTs from a programming language grammar
spellingShingle Automatic generation of ASTs from a programming language grammar
Silva, Pedro Miguel Mimoso Lopes Ferreira da
Programming languages and grammars
Static analysis
Vulnerabilities
SAST
Language-based tools
Linguagens de programação e gramáticas
Análise estática
Vulnerabilidades
Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
title_short Automatic generation of ASTs from a programming language grammar
title_full Automatic generation of ASTs from a programming language grammar
title_fullStr Automatic generation of ASTs from a programming language grammar
title_full_unstemmed Automatic generation of ASTs from a programming language grammar
title_sort Automatic generation of ASTs from a programming language grammar
author Silva, Pedro Miguel Mimoso Lopes Ferreira da
author_facet Silva, Pedro Miguel Mimoso Lopes Ferreira da
author_role author
dc.contributor.none.fl_str_mv Henriques, Pedro Rangel
Cruz, Daniela Carneiro
Universidade do Minho
dc.contributor.author.fl_str_mv Silva, Pedro Miguel Mimoso Lopes Ferreira da
dc.subject.por.fl_str_mv Programming languages and grammars
Static analysis
Vulnerabilities
SAST
Language-based tools
Linguagens de programação e gramáticas
Análise estática
Vulnerabilidades
Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
topic Programming languages and grammars
Static analysis
Vulnerabilities
SAST
Language-based tools
Linguagens de programação e gramáticas
Análise estática
Vulnerabilidades
Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
description Dissertação de mestrado integrado em Informatics Engineering
publishDate 2023
dc.date.none.fl_str_mv 2023-01-31
2023-01-31T00:00:00Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://hdl.handle.net/1822/86527
url https://hdl.handle.net/1822/86527
dc.language.iso.fl_str_mv eng
language eng
dc.relation.none.fl_str_mv 203356225
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron:RCAAP
instname_str Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron_str RCAAP
institution RCAAP
reponame_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
collection Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository.name.fl_str_mv Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
repository.mail.fl_str_mv
_version_ 1799133575341146112