24 de abril de 2026
Detecção Automatizada de Injeção de SQL em Bancos de Dados
Fernanda Maria Vieira da Cruz; Anaximandro Anderson Pereira Melo De Souza
Resumo elaborado pela ferramenta ResumeAI, solução de inteligência artificial desenvolvida pelo Instituto Pecege voltada à síntese e redação.
A segurança de aplicações web configura-se como um dos desafios mais persistentes e complexos no desenvolvimento de software contemporâneo, especialmente diante do aumento expressivo no volume e na sofisticação das ameaças cibernéticas. Métodos tradicionais de proteção têm se mostrado insuficientes para acompanhar a evolução de ataques que exploram vulnerabilidades em camadas profundas dos sistemas (Marel, 2025). Nesse contexto, a Segurança da Informação é estabelecida como a preservação das propriedades fundamentais de confidencialidade, integridade, disponibilidade e autenticidade, protegendo os dados contra uma diversidade de ameaças que podem comprometer a continuidade dos negócios (ABNT, 2005). Os bancos de dados, por serem os repositórios centrais de informações sensíveis em aplicações web, tornam-se alvos preferenciais. Entre as técnicas de exploração mais críticas, a injeção de SQL destaca-se pela capacidade de permitir que atacantes manipulem consultas ao banco de dados por meio da inserção de comandos maliciosos em campos de entrada não sanitizados.
A persistência da injeção de SQL como uma das falhas mais prevalentes, conforme listado sistematicamente em classificações de risco globais, reforça a necessidade de vigilância constante e da adoção de medidas defensivas mais robustas (Noman e Abu-Sharkh, 2023). A ausência de mecanismos de proteção adequados permite que entradas inesperadas comprometam a estrutura lógica das consultas, expondo dados que deveriam permanecer restritos. Esse cenário é agravado pela dificuldade que muitos fornecedores de software enfrentam ao tentar garantir a segurança em nível granular, que consiste em prover diferentes tipos de acesso, como leitura, escrita ou execução, de forma específica para cada usuário ou grupo (Marques, 2013). A gestão eficaz de implantações de banco de dados para assegurar a usabilidade e a integridade dos dados tornou-se, portanto, uma disciplina-chave no gerenciamento de ativos tecnológicos corporativos.
A adoção de testes automatizados de segurança surge como uma resposta estratégica para aumentar a eficiência operacional e permitir que os profissionais de tecnologia se concentrem na mitigação de ameaças mais complexas. A padronização na execução desses testes reduz drasticamente a incidência de erros humanos, garantindo que os resultados obtidos sejam precisos, confiáveis e reprodutíveis em diferentes estágios do desenvolvimento (Ale, 2021). Além disso, a detecção precoce de vulnerabilidades durante o ciclo de vida de desenvolvimento de software contribui para a redução de custos, uma vez que as correções realizadas em fases iniciais são significativamente menos onerosas do que aquelas efetuadas após a implantação em ambiente de produção. Esse processo beneficia a escalabilidade das operações, permitindo que as rotinas de validação sejam aplicadas em diversos ambientes e configurações com esforço reduzido.
A evolução constante das táticas de invasão torna a automação dos testes de segurança indispensável para que as organizações antecipem possíveis falhas e estabeleçam uma posição de defesa proativa. Ao automatizar a identificação de vulnerabilidades e as auditorias de conformidade, as empresas conseguem reforçar a proteção de informações sensíveis e fortalecer a confiança de clientes e partes interessadas. O objetivo central reside na proposição e implementação de rotinas de testes automatizados focadas especificamente na detecção de injeção de SQL, garantindo a resiliência do banco de dados frente a tentativas de exploração. A integração dessas práticas ao fluxo de trabalho contínuo permite uma validação sistemática que acompanha o ritmo das atualizações de código, assegurando que novas funcionalidades não introduzam brechas de segurança previamente mitigadas.
A fundamentação teórica deste estudo baseia-se na compreensão de que a injeção de SQL não é apenas uma falha técnica, mas uma vulnerabilidade de design que explora a confiança implícita em entradas de usuários. A literatura técnica aponta que a identificação dessas falhas está entre os principais benefícios proporcionados pelos testes de penetração, que simulam o comportamento de agentes maliciosos para avaliar a robustez das defesas (Najah e Mujeebuddin, 2023). A diversidade de técnicas de injeção, que variam desde métodos diretos de extração de dados até inferências baseadas em tempo ou respostas booleanas, exige uma abordagem de monitoramento contínuo e uma validação rigorosa de todas as entradas de dados. A implementação de boas práticas de governança e o uso de ferramentas de automação são essenciais para identificar riscos operacionais e estabelecer controles que protejam tanto a organização quanto os titulares dos dados.
A metodologia adotada para a execução deste estudo caracteriza-se como uma pesquisa de natureza aplicada, com objetivos essencialmente descritivos. A pesquisa aplicada justifica-se pela busca de conhecimentos voltados à solução de um problema específico, resultando no desenvolvimento de um artefato tecnológico funcional (Marconi e Lakatos, 2017). O caráter descritivo manifesta-se na exposição detalhada das características da solução implementada, do ambiente de validação utilizado e dos resultados quantitativos e qualitativos obtidos. A abordagem utiliza métodos mistos, com ênfase na análise qualitativa da arquitetura da solução e dos desafios técnicos enfrentados durante a implementação (Creswell, 2021). A dimensão quantitativa é observada no levantamento do número de vulnerabilidades detectadas e na contagem de sucessos e falhas durante a execução da suíte de testes.
O ambiente controlado para a realização dos experimentos foi estruturado utilizando a aplicação Damn Vulnerable Web Application (DVWA), executada em um contêiner Docker. A escolha dessa plataforma justifica-se por ser uma aplicação web de código aberto, desenvolvida em PHP, especificamente projetada para a experimentação e o aperfeiçoamento de técnicas de identificação de vulnerabilidades (Dewhurst, 2023). O uso de contêineres garante um ambiente isolado, seguro e reprodutível, permitindo a simulação prática de ataques sem oferecer riscos a sistemas de produção ou dados de terceiros. A aplicação DVWA permite a seleção entre quatro perfis de segurança distintos, denominados low, medium, high e impossible, que regulam o nível de mitigação aplicado às funcionalidades vulneráveis (Julliand et al., 2008).
No nível low, a aplicação não possui mecanismos de proteção, representando um cenário de vulnerabilidade total onde as entradas são processadas sem qualquer filtro. O nível medium introduz barreiras parciais, como a validação básica de entrada e o uso de funções de escapamento de caracteres. No nível high, são aplicadas medidas de proteção mais abrangentes, incluindo filtros rigorosos, validação estrita de tipos de dados e restrições de lógica que reduzem expressivamente a superfície de ataque. Por fim, o nível impossible configura o sistema de modo que as vulnerabilidades propositais não sejam acessíveis, utilizando consultas parametrizadas e outras técnicas avançadas de defesa que eliminam a causa raiz da injeção de SQL. A variação desses perfis é fundamental para avaliar a eficácia dos scripts de automação em cenários com níveis crescentes de resistência à exploração.
O banco de dados utilizado internamente pela aplicação foi o MariaDB, já incorporado ao contêiner Docker. Essa configuração simplifica o processo de implantação e reforça o isolamento, uma vez que o banco não é acessível diretamente fora do ambiente do contêiner. O MariaDB é um sistema de gerenciamento de banco de dados relacional amplamente utilizado em aplicações corporativas devido à sua estabilidade e escalabilidade. Para o desenvolvimento dos testes automatizados, utilizou-se a linguagem de programação Python, escolhida por sua versatilidade e pelo amplo ecossistema de bibliotecas voltadas à automação e segurança. A biblioteca Requests foi empregada para o envio de requisições HTTP, simulando interações reais de usuários e permitindo a execução de cargas úteis de injeção de SQL.
A organização e execução dos casos de teste foram gerenciadas pelo framework Pytest, que facilita o controle de falhas e a geração de relatórios detalhados. A suíte de testes foi projetada para realizar o login automático na aplicação, ajustar o nível de segurança conforme o parâmetro do teste e executar os payloads nos endpoints vulneráveis. O processo de preparação de cada teste envolvia a extração de tokens anti-CSRF para garantir a validade da sessão, simulando o comportamento de um atacante autenticado. A lógica de asserção central foi baseada na comparação entre o estado de vulnerabilidade detectado e o resultado esperado para cada nível de segurança configurado.
A integração contínua foi estabelecida por meio do GitHub Actions, uma plataforma que permite a criação de pipelines de automação disparadas por eventos no repositório, como o envio de novas alterações de código. O workflow configurado no GitHub Actions executa os testes em uma máquina virtual com sistema operacional Ubuntu, orquestrando o início do serviço Docker com a aplicação DVWA, a instalação das dependências em Python e o reset do banco de dados para um estado inicial limpo. Essa abordagem garante a consistência e a repetibilidade dos testes, permitindo que a validação de segurança seja uma parte integrante e automática do ciclo de desenvolvimento. Ao final de cada execução, um relatório detalhado em formato HTML é gerado e armazenado como artefato, servindo como evidência para auditorias e análises técnicas.
As técnicas de injeção de SQL exploradas foram divididas em categorias principais: in-band e inferencial. Nas técnicas in-band, os dados são extraídos diretamente pela mesma via de comunicação utilizada para o ataque. Exemplos incluem a injeção baseada em UNION, que utiliza a cláusula UNION SELECT para anexar resultados de consultas maliciosas às consultas legítimas, e a injeção baseada em erro, que provoca a geração de mensagens detalhadas do banco de dados revelando informações sobre a estrutura interna do sistema. Já as técnicas inferenciais, ou cegas, baseiam-se na observação do comportamento da aplicação. A injeção booleana infere informações a partir de mudanças nas respostas da página para condições verdadeiras ou falsas, enquanto a injeção baseada em tempo utiliza funções que causam atrasos propositais na resposta do servidor para confirmar a presença da vulnerabilidade.
Os resultados obtidos demonstram a alta eficácia das rotinas de testes automatizados na identificação de vulnerabilidades em diferentes níveis de proteção. Durante a execução da bateria de testes, composta por cinco tipos de injeção aplicados contra os quatro níveis de segurança, totalizando 20 execuções, observou-se que todos os testes detectaram com sucesso as falhas no nível low. Nesse estágio, a ausência de mecanismos de sanitização permitiu a extração completa de nomes de tabelas, credenciais de usuários e hashes de senhas. A automação mostrou-se 100% eficaz em mapear a superfície de ataque e confirmar a vulnerabilidade total do sistema quando nenhuma defesa é aplicada.
Ao elevar o nível de segurança para medium, os resultados tornaram-se mais complexos, evidenciando a necessidade de adaptação das técnicas de ataque. Observou-se que defesas baseadas em funções de escapamento de strings, embora úteis, foram ineficazes contra injeções em contextos numéricos onde o uso de aspas não era obrigatório. Os testes de injeção baseada em UNION, tempo e booleanos obtiveram sucesso após a adaptação dos payloads para um formato que não dependia de caracteres bloqueados. No entanto, o teste de injeção baseada em erro falhou em detectar a vulnerabilidade nesse nível, uma vez que a supressão de mensagens detalhadas do banco de dados mostrou-se uma medida de segurança eficaz contra essa técnica específica. Esse comportamento valida a importância de uma estratégia de segurança em camadas, onde a falha de um controle pode ser compensada por outro.
Nos níveis high e impossible, a suíte de testes automatizados confirmou a ausência de vulnerabilidades exploráveis, validando a robustez das defesas implementadas. No nível high, a aplicação de filtros mais rigorosos e a validação estrita de tipos de dados impediram a execução de comandos maliciosos. No nível impossible, o uso de consultas parametrizadas eliminou completamente a possibilidade de injeção de SQL, tratando as entradas de usuários estritamente como dados e não como parte do comando executável. A lógica de asserção dos scripts automatizados foi capaz de confirmar com precisão que nenhum dos payloads conseguiu comprometer o sistema nesses níveis, demonstrando a confiabilidade da ferramenta de teste para validar tanto a presença quanto a ausência de falhas.
A comparação entre o tempo de execução dos testes manuais e automatizados revelou uma vantagem significativa para a automação. Enquanto a análise manual dos resultados e a execução dos payloads demandaram aproximadamente uma hora, a suíte automatizada completou o ciclo total em menos de dois minutos quando integrada à pipeline de CI/CD. Essa agilidade permite que a validação de segurança seja realizada de forma frequente, sem onerar o cronograma de desenvolvimento. A capacidade de repetir os testes de forma idêntica a cada alteração no código assegura que regressões de segurança sejam identificadas imediatamente, fortalecendo a resiliência da aplicação ao longo do tempo.
A discussão dos resultados ressalta que a identificação de vulnerabilidades é um dos pilares fundamentais para a construção de softwares seguros. A observação de falhas em consultas manuais e automatizadas corrobora a premissa de que a falta de proteção adequada compromete a estrutura do banco de dados e expõe informações sensíveis (Halfond et al., 2006). É imperativo reconhecer que nenhum sistema é permanentemente invulnerável, e a diversidade de técnicas de ataque disponíveis exige uma abordagem de monitoramento contínuo. A integração de testes de segurança em pipelines de desenvolvimento, alinhada às práticas de DevSecOps, reduz custos de correção e promove uma cultura de responsabilidade compartilhada pela segurança do software (Koneru, 2021).
A eficácia da automação na detecção de falhas críticas, como as listadas no OWASP Top 10, reforça a relevância deste estudo para o cenário real de desenvolvimento de aplicações web. A utilização de ferramentas como GitHub Actions e Pytest demonstra que é possível implementar rotinas de segurança robustas de maneira relativamente simples e integrada ao fluxo de trabalho existente. Além do aspecto puramente técnico, a proteção de dados possui implicações legais e organizacionais profundas, tornando a conformidade e a gestão de riscos elementos essenciais para a governança corporativa (Garbaccio e Kischelewski, 2024). A implementação de boas práticas de codificação, como o uso de consultas parametrizadas, deve ser validada sistematicamente por meio de testes automatizados para garantir que as diretrizes de segurança sejam efetivamente seguidas.
As limitações deste estudo devem ser explicitadas para evitar generalizações indevidas. Os experimentos foram conduzidos em um ambiente controlado utilizando o DVWA, que possui vulnerabilidades propositalmente inseridas para fins didáticos. Aplicações em produção podem apresentar camadas adicionais de defesa, como firewalls de aplicação web (WAF) ou sistemas de detecção de intrusão, que não foram contemplados nesta análise (Antunes e Vieira, 2015). Além disso, o foco exclusivo em injeção de SQL deixa de fora outras classes de vulnerabilidades igualmente críticas, como Cross-Site Scripting (XSS) ou falhas de controle de acesso. A dificuldade em encontrar referências acadêmicas que abordem de forma integrada a implementação prática de automação de testes específicos em esteiras DevSecOps também foi identificada como um desafio durante a pesquisa.
Apesar dessas limitações, o estudo estabelece uma base validada para a expansão de rotinas de testes de segurança automatizados. A arquitetura proposta demonstra como a combinação de ferramentas de código aberto e práticas de integração contínua pode elevar o nível de maturidade de segurança de um projeto de software. A reprodutibilidade garantida pela disponibilização dos artefatos experimentais e pela documentação detalhada dos processos contribui para a confiabilidade dos resultados obtidos. A transição de uma abordagem de segurança reativa para uma proativa é essencial para enfrentar o cenário de ameaças em constante evolução, protegendo os ativos digitais e garantindo a integridade dos sistemas de informação.
Conclui-se que o objetivo foi atingido por meio da implementação bem-sucedida de uma suíte de testes automatizados capaz de detectar vulnerabilidades de injeção de SQL em diferentes níveis de segurança, integrando-a de forma nativa a uma pipeline de CI/CD. Os resultados evidenciaram que a automação proporciona uma validação rápida, precisa e repetível, superando as limitações dos testes manuais em termos de escalabilidade e eficiência temporal. A pesquisa demonstrou que, embora defesas parciais possam mitigar ataques simplistas, apenas a adoção de práticas robustas como consultas parametrizadas e validação estrita de entradas é capaz de eliminar as causas raízes das vulnerabilidades. O estudo reforça a importância da cultura DevSecOps, evidenciando que a segurança deve ser tratada como um requisito contínuo e integrado desde as fases iniciais do desenvolvimento, contribuindo significativamente para a construção de aplicações web mais resilientes e seguras no cenário tecnológico atual.
Referências Bibliográficas:
Ale, K. N. 2021. Enhancing Cybersecurity through Effective Test Automation Strategies. International Journal of Science and Research 10(9):1783-1786.
Antunes, N.; Vieira, Marco. 2015. Defending against web application vulnerabilities. IEEE Computer 48(2): 66–72.
Associação Brasileira de Normas Técnicas (ABNT). NBR ISO/IEC 17799:2005: Tecnologia da informação – Técnicas de segurança – Código de prática para gestão de segurança da informação. Rio de Janeiro, 2005.
Creswell, J. W. 2021. Projeto de pesquisa: métodos qualitativo, quantitativo e misto. 4. ed. Penso, Porto Alegre, RS, Brasil. Disponível em: <https://app.minhabiblioteca.com.br/reader/books/9786581334192/epubcfi/6/48[%3Bvnd.vst.idref%3Dchapter10.xhtml]!/4/2/2/2/4%4051:6>. Acesso em: 21 set. 2025.
Dewhurst, R.Damn Vulnerable Web Application (DVWA). [S.l.]: GitHub, 2023. Disponível em: <https://github.com/digininja/DVWA>. Acesso em: 4 jun. 2025.
Garbaccio, G. L., & Kischelewski, F. L. N. 2024. Governança e boas práticas na Lei Geral de Proteção de Dados por meio da conformidade, da gestão de riscos e da accountability. Revista Brasileira de Estudos Políticos, 128: 155-195.
Halffond, W. G. J.; Viegas, J.; Orso, A. 2006. A classification of SQL-injection attacks and countermeasures. In: IEEE International Symposium on Secure Software Engineering, 2006, Arlington. Anais… p. 13-22.
Julliand, P.A.; Masson, R. Tissot. Generating security tests in addition to functional tests. In Proceedings of the 3rd International Workshop on Automation of Software Test (AST’08). Leipzig, Germany: ACM Press, May 2008, pp. 41–44.
Koneru, N.M.K.2021. Integrating security into CI/CD pipelines: A DevSecOps approach with SAST, DAST, and SCA tools. International Journal of Science and Research Archive 03(01), 250-265.
Marconi, M.A; Lakatos, E.M. 2017. Fundamentos de metodologia científica. 8. ed. Atlas, São Paulo, SP, Brasil. Disponível em: <https://app.minhabiblioteca.com.br/reader/books/9786559770670/epubcfi/6/2[%3Bvnd.vst.idref%3Dcover]!/4/2/2%4071:49>. Acesso em: 21 set. 2025.
Marel, D. 2025. Automation in Enterprise Security: Enhancing Protection and Efficiency. Disponível em: <https://www.researchgate.net/publication/389593254_Automation_in_Enterprise_Security_Enhancing_Protection_and_Efficiency>Acesso em: 28 mar. 2025.
Marques, M.G. 2013. Uma metodologia para controle de acesso granular em sistemas de banco de dados relacionais open source. Dissertação (Mestrado) em Ciência da Computação – Universidade Federal de Pernambuco (UFPE), Centro de Informática, Recife, PE, Brasil.
Najah, S.; Mujeebuddin, M. 2023. Pen Test Report for DVWA in a Virtual Environment. In: 6th Middle East College Student Research Conference, 2023, Muscat, Oman. Anais… p. 120-128.
Noman, H.A.; Abu-Sharkh, O.M.F. 2023. Code Injection Attacks in Wireless-Based Internet of Things (IoT): A Comprehensive Review and Practical Implementations. Sensors, 23(13): 6067.
Resumo executivo oriundo de Trabalho de Conclusão de Curso da Especialização em Engenharia de Software do MBA USP/Esalq
Para saber mais sobre o curso, clique aqui e acesse a plataforma MBX Academy




























