Dissertação

{en_GB=Griffin: specification-based RASP approach against SQL injections in MySQL} {} EVALUATED

{pt=O Griffin foi criado com objetivo de proteger aplicações web de Java contra ataques em bases de dados MySQL, usando as especificações da aplicação. O Griffin foi criado numa ferramenta Runtime Application Self-Protection, openRASP, em que se alterou a forma de detectar injeções SQL. Como as injeções de SQL funcionam alterando a estrutura pretendida pelos programadores das queries enviadas, o Griffin aprende as estruturas das queries legítimas que são enviadas para a base de dados para detectar quando estas são alteradas. O Griffin funciona em duas fases: aprendizagem, onde coleciona as especificações pretendidas pelos programadores em relação às queries enviadas pela aplicação e deteção, onde usa a informação recolhida para detectar alterações na estrutura, verifica se o input dos utilizadores vai de encontro às especificações da base de dados e verifica se os valores estão de acordo com as especificações dos programadores. O Griffin foi testado contra a deteção do openRASP de injeções de SQL, para verificar o tempo que adiciona aos pedidos e a precisão na deteção de ataques. Também tem uns testes para averiguar o tempo adicionado na fase de aprendizagem. Os testes demonstram que o tempo adicionado pela aprendizagem é razoável, mas que a fase de deteção adiciona mais tempo aos pedidos do que o openRASP. O Griffin detetou todas as injeções que têm sucesso, ao contrário do openRASP, que nos testes efetuados sobre aplicações não bloqueou 83 injeções. Este número não conta com a deteção de especificações mal implementadas, que o openRASP não faz deteção., en=Griffin is a solution that protects Java Web Applications against SQL injections in MySQL databases by using the applications' specifications. It is built on top of openRASP, which is a Runtime Application Self-Protection tool, replacing its SQL injection detection. As SQL injections work by altering the regular structure of the queries issued to the database, Griffin learns the structures intended by the developers of the SQL queries that are issued to the database and uses that information to identify when malicious users change the structure of the SQL query issued. It works in two phases: learning, where it gathers the specifications intended by the developers, and detection, where it checks the structure of the query being issued, checks if the user input matches the database schema, and also checks if the user input is according to the developers' specifications. Griffin is tested against openRASP's SQL injection method regarding added overhead to regular requests and accuracy in detecting SQL injections. There are also tests used to measure the overhead introduced in the learning phase. It shows that the added overhead in learning is not significant, but adds a higher overhead in the request process time than openRASP. However, when measuring the accuracy, Griffin beats openRASP by detecting all tested injections that would be successful, unlike openRASP, which in total did not block 83 injections. This number does not count with the detection of badly coded specifications, which openRASP does not detect.}
{pt=Injeção SQL, base de dados MySQL, Runtime Application Self-Protection, aplicações web de Java, en=SQL Injection, MySQL Database, Runtime Application Self-Protection, Java Web Application}

Janeiro 28, 2021, 10:30

Orientação

ORIENTADOR

Pedro Miguel dos Santos Alves Madeira Adão

Departamento de Engenharia Informática (DEI)

Professor Associado

ORIENTADOR

Rui Filipe Lima Maranhão de Abreu

Departamento de Engenharia Informática (DEI)

Professor Associado