• Nenhum resultado encontrado

Ferramentas

No documento Ricardo Silveira Moreira (páginas 47-52)

No decurso desta disserta¸c˜ao foram identificadas algumas ferramentas capazes de fazer em parte, ou na sua totalidade, o que se prop˜oe neste projecto. Contudo, exis- tem v´ario problemas associados a cada uma dessas ferramentas. Uma das linguagens alvo desta aplica¸c˜ao ´e o ASP (Cl´assico) e foi para esta que foram procuradas ferra- mentas, isto porque ´e a mais antiga e pelo facto de ser uma linguagem de scripting ´e aquela que tem um maior n´umero de vulnerabilidades comparativamente com C#. Sendo o objectivo principal da aplica¸c˜ao desenvolvida a an´alise lexical e o pattern matching, al´em das ferramentas de an´alise est´atica de c´odigo apresentam-se tamb´em algumas ferramentas que fazem parsing e an´alise lexical.

2.5.1

An´alise lexical

As ferramentas desta categoria limitam-se a receber express˜oes regulares e criam aut´omatos que representam essas express˜oes e depois s˜ao capazes mediante inputs de realizar alguma ac¸c˜ao. Estas ferramentas s˜ao muitas vezes complementadas com outras de parsing.

Flex

Dentro da an´alise lexical uma das ferramentas muito documentada, principalmente na ´area de compiladores, ´e o flex[16]. Esta ferramenta foi escrita em C, em 1987, por Vern Paxson juntamente com Van Jacobson. Tem origem no lex e ´e uma fer- ramenta capaz de gerar scanners para reconhecer padr˜oes lexicais. ´E muito usada juntamente com ferramentas de parsing como o YACC (mais sobre este na sec¸c˜ao 2.5.2). Internamente esta ferramenta traduz um NFA para um DFA e alimenta o DFA com a string que tem a express˜ao a ser reconhecida. Em seguida executa c´odigo C/C++ de acordo com as express˜oes regulares que conhece. Esta tradu¸c˜ao do NFA para DFA ´e um dos problemas do Flex, j´a discutidos anteriormente.

2.5.2

Parsing

ANTLER

O ANTLER [2] ´e um gerador de parsers para leitura, processamento, execu¸c˜ao ou tradu¸c˜ao de ficheiros de texto ou bin´arios. Esta ferramenta constr´oi ´arvores de

parsing que depois analisa. Foi desenvolvido por Terence Parr em 1989. De notar

que esta ferramenta para fazer parsing tem que fazer tamb´em an´alise lexical.

YACC

O YACC[12] ´e uma ferramenta que ´e muitas vezes combinada com o Flex para fazer parse recorrendo aos tokens que s˜ao devolvidos pelo flex. Este parser utilizar nota¸c˜oes semelhantes ao Backus-Naur Form. `a semelhan¸ca com o flex tem padr˜oes que vai procurar e ac¸c˜oes (comandos escritos em c) que vai executar quando encontra esses padr˜oes.

2.5.3

An´alise est´atica

Tal como se disse, a principal motiva¸c˜ao para o desenho da aplica¸c˜ao de raiz foi primeiro que tudo a falta de aplica¸c˜oes de an´alise de c´odigo est´aticas que fossem de acesso livre para ASP. Apresenta-se a seguir uma tabela com ferramentas capazes de analizar c´odigo ASP cl´assico.

A dificuldade em encontrar ferramentas capazes de analisar este tipo de lingua- gem deve-se a esta ter sido descontinuada em 2003.

YASCA

O YASCA [15] ´e uma ferramenta de an´alise de c´odigo est´atico capaz de analizar m´ultiplas linguagens uma das quais sendo o ASP. Esta ferramenta est´a escrita em PHP e JAVA e utiliza v´arios plugins capazes de detectar vulnerabilidades noutras ferramentas. O [15] utiliza t´ecnicas de parsing e an´alise lexical, e funciona utilizando padr˜oes que s˜ao considerados vulner´aveis e detectando-os atrav´es do grep.

Para testar esta ferramenta foram utilizados v´arios ficheiros de ASP antes e depois de terem sido corrigidos. A ferramenta detectava de facto quase todas, se n˜ao todas, as vulnerabilidades. Contudo, continuava a alertar para a presen¸ca de vulnerabilidades mesmo depois dos ficheiros terem sido corrigidos. Este ´e um dos problemas de utiliza¸c˜ao de ferramentas externas de an´alise est´atica por reconheci- mento de padr˜oes.

Fortify

Ferramenta de an´alise de c´odigo est´atico capaz de analisar m´ultiplas linguagens uma das quais sendo o ASP. Permite integra¸c˜ao em [11] e fazer an´alise autom´aticas [4].

Cap´ıtulo 2. Contexto e trabalho relacionado 31

IBM Security AppScan

Ferramenta de an´alise de c´odigo est´atico que identifica vulnerabilidades em aplica¸c˜oes e gera relat´orios com recomenda¸c˜oes. Esta aplica¸c˜ao tambem ´e capaz de analisar m´ultiplas linguagens tais como o ASP [6].

Veracode

Ferramenta de an´alise de c´odigo est´atico que identifica vulnerabilidades em aplica¸c˜oes e gera relat´orios com recomenda¸c˜oes. Esta aplica¸c˜ao tambem ´e capaz de analisar m´ultiplas linguagens tais como o ASP e permite integra¸c˜ao em [11] [10].

2.5.4

Compara¸ao

Ferramenta Pago Mantida

Fortify Sim Sim

IBM Security AppScan Sim Sim

Veracode Sim Sim

Yasca N˜ao Sim

Tabela 2.4: Ferramentas existentes no mercado para an´alise de c´odigo ASP Na tabela 2.4 est˜ao as ferramentas que existem actualmente no mercado capaz de analisar c´odigo ASP. Est´a tamb´em indicado se s˜ao pagas e se s˜ao mantidas.

Dado que apenas uma das ferramentas ´e de c´odigo aberto ´e dif´ıcil fazer qualquer an´alise relevante sobre as ferramentas. A documenta¸c˜ao que ´e aqui feita serve no entanto como referˆencia sobre o que j´a existe no mercado.

Cap´ıtulo 3

Aplica¸ao Athena

A solu¸c˜ao desenvolvida visa resolver o problema da n˜ao existˆencia de uma ferramenta na empresa Escrita Digital para a detec¸c˜ao de potenciais vulnerabilidades e a da falta de uma ferramenta livre no mercado que se adapte `as necessidades da empresa.

Em solu¸c˜oes como a desenvolvida para an´alise est´atica de c´odigo atrav´es de

Pattern matching, o objectivo ´e identificar padr˜oes no c´odigo que s˜ao potencialmente vulner´aveis. Dada a sua natureza, isto gera um grande n´umero de falsos positivos uma vez que cada empresa tem as suas pr´oprias fun¸c˜oes e bibliotecas. Isto faz com que existam diferentes padr˜oes em empresas diferentes, tornando necess´ario que qualquer ferramenta deste tipo ofere¸ca a possibilidade de adicionar ”padr˜oes seguros”na aplica¸c˜ao que est´a a analisar.

A solu¸c˜ao proposta tem dois requisitos: (i) adaptabilidade a qualquer linguagem e (ii) adaptabilidade `as aplica¸c˜oes da empresa. Os dois requisitos foram resolvidos atrav´es do desenvolvimento de um schema de XML que permite descrever o l´exico e um conjunto de regras espec´ıficos para qualquer linguagem e para qualquer conjunto de fun¸c˜oes ou regras de programa¸c˜ao da empresa.

A solu¸c˜ao desenvolvida n˜ao ´e mais do que um motor que usa regras express˜ao regular para traduzir sequˆencias de caracteres em tokens, o que corresponde `a an´alise lexical. Estas s˜ao especificadas no ficheiro de l´exico e s˜ao usadas para descrever padr˜oes no ficheiro de regras (semelhante `a fase de parsing num compilador). Estes padr˜oes v˜ao ser depois identificados no c´odigo e ir˜ao activar as a¸c˜oes que lhe est˜ao associadas.

3.1

Tecnologias utilizadas

O desenvolvimento da solu¸c˜ao apresentada foi feita com recurso as tecnologias abaixo apresentadas.

• Visual Studio 2019 [11] : Compilador.

• Notepad++: Ferramentas de edi¸c˜ao de c´odigo.

• ILSpy [7]: Ferramenta de descompila¸c˜ao de bibliotecas de .NET 33

• CVS [13]: Reposit´orio de ficheiros usado para armazenar a ferramenta que foi desenvolvida

• Innosetup [14]: Ferramenta usada para criar o instalador do Athena

No documento Ricardo Silveira Moreira (páginas 47-52)

Documentos relacionados