Segurança da Aplicação: Como detectar vulnerabilidades de código e aplicar correções automáticas com uma ferramenta de AI

Imagem com um notebook com o símbolo de segurança, um escudo com fechadura, na tela.
Aprenda como detectar vulnerabilidades de aplicação e aplicar correções automáticas com a StackSpot AI. Leia mais no blog.

As vulnerabilidades de aplicação representam uma preocupação significativa no mundo da segurança cibernética. Essas falhas, fraquezas ou lacunas no código, seja na configuração ou no design de um software, podem ser exploradas por atacantes mal-intencionados para comprometer a segurança da aplicação. Por isso, formas de detectar vulnerabilidades de código e aplicar correções são tão importantes.

Utilizamos StackSpot AI para aumentar a segurança da aplicação, continue lendo para conhecer a ferramenta e aprender como fizemos. 

Mas o que são vulnerabilidades de aplicação?

As vulnerabilidades de aplicação podem variar em sua natureza e impacto. Elas podem permitir que hackers realizem uma ampla gama de atividades maliciosas, como acesso não autorizado a dados, manipulação de informações, interrupção de serviços ou execução de código arbitrário no sistema comprometido.

Essas vulnerabilidades podem surgir devido a:

  • Erros de Codificação: Falhas de programação, como injeção de SQL, Cross-Site Scripting (XSS), entre outras.
  • Falta de Controle de Acesso: Permissões inadequadas que permitem acesso não autorizado a dados ou funcionalidades.
  • Configurações Inseguras: Definições incorretas ou inseguras que podem ser exploradas por invasores.
  • Dependências Vulneráveis: Uso de bibliotecas ou componentes desatualizados e suscetíveis a ameaças.

Quando se fala em framework para análise e correção de vulnerabilidades a grande referência é a OWASP que é  uma comunidade global focada em melhorar a segurança de software. O OWASP Top 10 é uma lista das dez principais vulnerabilidades de segurança em aplicações web, atualizada periodicamente para refletir as ameaças mais prementes.

OWASP 

A importância e o respeito pela OWASP vêm  de vários fatores:

  1. Autoridade e Experiência: A OWASP é reconhecida mundialmente por sua expertise em segurança de aplicações web. A organização reúne profissionais de segurança de todo o mundo para contribuir com suas pesquisas e diretrizes.
  2. Conscientização: A lista serve como um ponto de partida para desenvolvedores, engenheiros de segurança e decisores de TI se conscientizarem sobre as vulnerabilidades mais críticas que podem afetar aplicações web. Isso ajuda a priorizar esforços de mitigação.
  3. Educação e Orientação: Além de identificar as vulnerabilidades, a OWASP Top 10 fornece recomendações detalhadas sobre como prevenir ou mitigar esses riscos, ajudando as organizações a desenvolverem software mais seguro desde o início.
  4. Padrão de Segurança: Muitas organizações e frameworks de compliance adotam a OWASP Top 10 como um padrão mínimo para práticas de segurança de aplicações web. Isso significa que seguir a lista pode ajudar as organizações a atenderem requisitos regulatórios e de compliance.
  5. Melhoria Contínua: A lista é atualizada regularmente para refletir as mudanças no cenário de ameaças, garantindo que as organizações estejam cientes das vulnerabilidades emergentes e das melhores práticas para combatê-las.

O impacto final de seguir a OWASP é a redução significativa do risco de incidentes de segurança, como vazamentos de dados, violações de segurança e ataques cibernéticos. 

Isso não apenas protege as informações confidenciais e a privacidade das pessoas usuárias, mas também ajuda a preservar a reputação da organização, evita penalidades legais e financeiras associadas a violações de dados e melhora a confiança de clientes e pessoas usuárias no software desenvolvido.

O conhecimento sobre a OWASP Top 10 vai ser muito importante para a efetividade da ação de detectar vulnerabilidades de código e aplicar correções usando a StackSpot AI.

Ferramentas de análise de vulnerabilidades de aplicação

Atualmente, existem no mercado uma série de ferramentas que são capazes de analisar e detectar vulnerabilidades de aplicação, inclusive mostrando os passos necessários para sua correção. Porém, além do preço elevado, ainda é bastante complexo para as pessoas desenvolvedoras entenderem a vulnerabilidade e corrigirem o código implementado às mudanças necessárias. 

A StackSpot AI, com sua grande versatilidade, é uma alternativa que permite a correção das vulnerabilidades de forma rápida e eficaz com o auxílio da inteligência artificial. Saiba como a seguir.

Conheça a StackSpot AI

StackSpot AI é um assistente de código capaz de usar seu contexto, bases de conhecimento e decisões tecnológicas para gerar sugestões mais assertivas e de alta qualidade. Você pode:

  • Otimizar a Developer Experience (DevEx) e aumentar a produtividade do seu time.
  • Receber sugestões de código mais assertivas.
  • Criar comandos rápidos para automatizar tarefas repetitivas.

A ferramenta possibilita a criação de código de forma eficiente e segura baseada na linguagem de programação, frameworks e stacks utilizadas no seu projeto ou empresa. Através dela é possível alimentar bases de conhecimento personalizadas, além de documentar, explicar, refatorar códigos e criar casos de testes. 

Corrigindo as vulnerabilidades de aplicação com a StackSpot AI

Nesse artigo, iremos mostrar como foi possível utilizar a StackSpot AI para detectar e corrigir algumas das vulnerabilidades de código mais comuns. 

Para isso, seguimos os passos abaixo: 

  1. Criar um “Quick Command” utilizando a StackSpot AI. Essa é uma das funcionalidades da  ferramenta que permite centralizar e orquestrar uma série de prompts de comando, utilizar uma base de conhecimento e chamar APIs externas.
  2. É possível alimentar uma Knowledge Source com informações e snippets  de correção de vulnerabilidades de código. Esse passo é opcional, uma vez que na maioria das vezes o prompt já será suficiente. Utilize essa opção para casos específicos ou vulnerabilidades zero day.
  3. Prover uma base de parâmetros personalizados da empresa  (Ex: Conta da AWS, região, padrões de nomenclatura etc.)
  4. Realizar uma engenharia de prompts para obter os melhores resultados para o nosso propósito junto ao software de inteligência artificial. 
  5. Criar um step para integração com o GitHub de forma a criar uma Issue de correção para a vulnerabilidade encontrada de forma automática. 
  6. Publicar o Quick Command em um Estúdio da StackSpot. 
  7. Adicione este Estúdio em um Workspace da StackSpot. 

O Quick command irá buscar por vulnerabilidades baseadas no OWASP top 10, explicar qual é a vulnerabilidade, mostrar o trecho de código onde ela se aplica e sugerir um código corrigido. 

Demonstrações de correção de vulnerabilidades de código

Utilizamos o Quick Command para testar a hipótese e demonstrar que era possível a identificação e correção automática de códigos.

Vamos agora executar o quick command nos códigos abaixo que contém vulnerabilidades conhecidas. Nos prints abaixo será possível verificar o código corrigido sugerido por ele.

Exemplo 1: Vulnerabilidade SQL Injection na linguagem Java

SQL Injection: A injeção de SQL (SQL injection, em inglês) é uma técnica de ataque cibernético comumente usada para explorar vulnerabilidades em sistemas que interagem com bancos de dados por meio de consultas SQL.

Essa técnica envolve a inserção de código SQL malicioso em campos de entrada de dados, como formulários da web, parâmetros de URL, cookies etc. Quando o aplicativo web não sanitiza ou valida corretamente esses dados de entrada, o código SQL inserido pode ser executado pelo sistema de banco de dados, permitindo que o invasor acesse, modifique ou exclua dados do banco de dados, ou até mesmo execute comandos no servidor.

Código java com vulnerabilidades de SQL Injection
A StackSpot AI corrigiu a vulnerabilidade encontrada substituindo a concatenação de String no código pela passagem por parâmetros utilizando Java PreparedStatement.

Exemplo 2: Vulnerabilidade Hard-coded credentials na linguagem Java

Hard-coded credentials: Credenciais codificadas (hard-coded credentials, em inglês) referem-se à prática de incluir informações de autenticação diretamente no código-fonte de um programa ou aplicativo, em vez de armazená-las de forma segura em um local protegido, como um arquivo de configuração seguro ou um gerenciador de segredos.

Essas credenciais geralmente incluem nomes de usuário, senhas, tokens de acesso, chaves de API ou outras informações de autenticação. Quando essas informações são incorporadas diretamente no código-fonte, elas podem ser facilmente acessadas e visualizadas por qualquer pessoa que tenha acesso ao código, seja um desenvolvedor, revisor de código, ou até mesmo um invasor em potencial que tenha obtido acesso ao código-fonte.

Código Java contendo credenciais expostas.

StackSpot AI substituiu os campos username e password que estavam hardcoded no código pela utilização do AWS Secret Manager, utilizando as informações armazenadas nesta secret.

Exemplo 3: Vulnerabilidade Cross-Site Scripting (XSS) na linguagem Python

Cross-Site Scripting (XSS) é uma vulnerabilidade de segurança em aplicações web que permite que um invasor injete e execute scripts maliciosos no navegador de um usuário final. Isso pode ocorrer quando dados não confiáveis são inseridos em uma página da web e, em seguida, executados no navegador de outras pessoas usuárias, comprometendo a segurança e privacidade dos mesmos. Os ataques XSS podem ser usados para roubo de sessão, redirecionamento para sites maliciosos, roubo de cookies, exibição de conteúdo indesejado, entre outros danos.

Código em Python vulnerável a ataques XSS.

A StackSpot AI detectou a vulnerabilidade de Cross-Site Scripting (XSS) e corrigiu o código realizando o escape da variável user_input. 

Exemplo 4: Vulnerabilidade XML external Entity (XXE) na linguagem Python

XML External Entity (XXE) é uma vulnerabilidade de segurança em sistemas que processam documentos XML. Essa vulnerabilidade ocorre quando um aplicativo processa entradas XML que contêm referências a entidades externas, permitindo que um atacante acesse recursos do sistema ou execute ações indesejadas. Em um ataque XXE, um invasor pode explorar essa vulnerabilidade para ler arquivos do sistema, interagir com serviços internos, executar código remoto e até mesmo provocar negação de serviço. As consequências podem ser graves, incluindo vazamento de dados confidenciais e comprometimento do sistema.

Código em Python com vulnerabilidade XXE

No código corrigido, o analisador é passado corretamente para a função etree.fromstring usando o argumento de palavra-chave 'parser'. Isso garante que o XMLParser, com a configuração 'resolve_entities' definida como False, seja utilizado, o que impede o processamento de entidades externas pelo analisador XML e reduz o risco de ataques XXE.

Exemplo 5: Criação de Bucket público com risco de vazamento de dados na linguagem Terraform.

Bucket Público: Não é exatamente uma vulnerabilidade mas não é recomendado a não ser por casos bem específicos.

Código em Terraform que cria um bucket S3 público.

StackSpot AI removeu o acesso público ao Bucket S3 e restringiu as políticas de acesso.

Confira em nosso canal do YouTube todos os exemplos de correção de vulnerabilidades de aplicação com a StackSpot AI.  Aproveite e se inscreva no nosso canal no YouTube:

Conclusão

A StackSpot AI se mostrou extremamente eficiente em detectar as vulnerabilidades e também em criar o código já corrigido, independentemente da linguagem utilizada. Por utilizar inteligência artificial com contexto, ela tem a grande vantagem de utilizar parâmetros personalizados na correção (linguagem, frameworks, parâmetros, padrões, políticas etc). 

Desta forma, ela pode criar o código mais adequado ao seu projeto e a sua empresa.

Como é possível alimentar a IA com bases de conhecimento, a StackSpot AI se mantém atualizada mesmo que a base de dados da LLM seja limitada a um período. A ferramenta se mostrou mais eficiente do que as tradicionais de mercado por sugerir o código corrigido com contexto, além de trazer explicações e insights relacionados à segurança.

Quer saber como a StackSpot AI pode ser usada no seu cenário? Então peça uma demonstração!

Consuma inovação e transforme sua empresa

Assine nossa newsletter e fique em dia com as melhores práticas de tecnologia para gerar impacto nos negócios.

Summary

Related posts