Segurança da Informação

DAST ou IAST: faça perguntas melhores

Se você é alguém que enviou, seja intuitivamente ou após uma consideração desnecessária, à ideia de DevSecOps, há chances de que as discussões sobre ferramentas de segurança sejam um recurso recorrente de sua semana de trabalho. Uma pessoa de discussão não resolvida, dentro do meu círculo, jura ter repetidamente voltado para as ferramentas IAST e DAST. O ponto crucial é: qual é o melhor, DAST ou IAST? Mais alarmante do que não ter uma resposta para uma pergunta em particular é tentar responder à pergunta errada. Dentro do domínio de segurança do aplicativo, vou tentar direcionar da seguinte maneira, uma pergunta melhor: qual ferramenta é melhor para mim, DAST ou IAST?

Mas, antes de começarmos, para aqueles que são novos no IAST ou DAST, vamos aos conceitos

DAST: O teste de segurança de aplicativos dinâmicos (DAST) é um processo de teste de um aplicativo durante o tempo de execução. O objetivo de tal teste é identificar vulnerabilidades de segurança, enquanto o aplicativo está operando no ambiente para o qual foi construído. Isso pode ser feito manualmente ou usando ferramentas DAST. Essas ferramentas rastreiam e testam o aplicativo de fora para dentro, e com casos de teste projetados adequadamente, ele pode simular casos de uso de segurança de maneira eficaz em todo o aplicativo. Bons exemplos de uma ferramenta DAST seria o ZAP, o BURP Suite, o Arachni, etc. do OWASP.

IAST: O IAST (Interactive Application Security Testing) usa um conceito comumente conhecido como “instrumentação” que combina as técnicas de teste de segurança DAST e Static Analysis Security (SAST) para aumentar a precisão dos testes de segurança de aplicativos. A instrumentação envolve o trabalho com uma abordagem “semelhante a um agente”, em que um agente IAST é executado no servidor de aplicativos de destino para monitorar ativamente o comportamento do aplicativo enquanto o aplicativo está sendo usado. O agente se conecta a várias funções e chamadas do aplicativo e identifica problemas de segurança, visto que é capaz de enxergar de dentro para fora – tanto do código quanto do fluxo de tráfego para dentro e para fora do aplicativo.

Existem alguns fatores que precisam ser considerados ao avaliar uma ferramenta adequada ao seu pipeline de SDLC. Vamos estudá-los em três silos: pessoas, processos e tecnologia.

Pessoas
As pessoas são um dos principais pilares do DevSecOps. A ferramenta não deve comprometer sua eficiência e, portanto, não deve ser muito complexa ou difícil de adaptar. Não deve haver muito esforço incremental envolvido para desenvolver um bom entendimento da ferramenta, suas capacidades, limitações e aprender seu sistema de suporte para ajudá-los a integrá-lo facilmente como parte do desenvolvimento ágil de aplicativos. Portanto, quando você escolhe uma ferramenta, precisa fazer as seguintes perguntas:

  • Quanta experiência a ferramenta requer para integrar ou gerenciar como parte do pipeline?
  • O suporte adequado é necessário para garantir o bom funcionamento da ferramenta fornecida pelo fornecedor da ferramenta ou por outras fontes de terceiros?
  • Qual é o suporte de código aberto para configuração e correção de erros?
  • A ferramenta tem um painel de controle amigável e fornece métricas abrangentes?

Não é necessário ter muita experiência para colocar o IAST em funcionamento. É um sistema quase plug-and-play. No entanto, você pode precisar da ajuda do fornecedor para configurar configurações importantes e parâmetros necessários, como configurações de políticas, parâmetros de entrada, etc. Também será necessário implantá-lo em seu servidor, o que pode forçar a compra de hardware adicional.

A ferramenta DAST é configurada de uma maneira um pouco mais simples. Você pode apenas usar o URL do aplicativo da Web para executar uma verificação de política padrão ou instruções passo a passo com script. Você pode fazer isso diretamente do seu computador, sem a necessidade de servidores ou sistemas adicionais.

As ferramentas do IAST são principalmente proprietárias e, portanto, o suporte para o mesmo é limitado. As ferramentas DAST, por outro lado, têm uma forte presença de código aberto e, portanto, têm suporte da comunidade em fóruns de tecnologia e outros espaços similares. Assim, sua equipe de engenharia provavelmente acharia mais fácil encontrar correções para erros de configuração e de sistema enquanto usava ferramentas DAST.

A facilidade de uso e a natureza abrangente das métricas variam de ferramenta para ferramenta e de fornecedor para fornecedor. Portanto, não faço distinção aqui.

Processo
Para que qualquer pipeline de DevOps permaneça eficiente, o processo de integração de segurança deve ser contínuo e facilmente operacionalizado. Ele também deve ser resiliente à sua equipe e às mudanças de metas da empresa. Aqui estão algumas perguntas para se fazer ao escolher uma ferramenta:

  • Quão fácil é – em termos de tempo e esforço – integrar a ferramenta ao seu pipeline?
  • Qual é o meu status de segurança atual e a maturidade do DevOps?
  • O que é mais importante para você: integração contínua ou implantação contínua?
  • Onde no seu pipeline você quer?
  • Quão fácil é automatizar?
  • É compatível com nossos testes de automação existentes, como testes de controle de qualidade, rastreadores da Web automatizados ou testes de unidade?

Como o IAST é uma ferramenta plug-and-play e a dependência do fornecedor de ferramentas não obstante, é fácil integrá-lo ao seu pipeline, enquanto apenas algumas ferramentas DAST têm a capacidade de serem integradas como parte de um conjunto de ferramentas. De um modo geral, no entanto, leva mais tempo para integrar uma ferramenta DAST em comparação com uma ferramenta IAST. Algo que também vale a pena notar aqui é que, com uma ferramenta DAST, você é muito mais flexível para definir políticas e modos de teste de acordo com as necessidades de sua aplicação.

Quando se trata de facilitar a automação, é difícil fazer uma distinção, pois diferentes ferramentas se comportam de maneira diferente. O aspecto positivo de uma perspectiva DAST é a presença de scripts prontos, que são usados ​​para orientar a ferramenta para maior profundidade e testes eficientes, além de outros recursos compartilhados online, facilitando a automação, ao contrário das ferramentas IAST, que podem exigir que você examine sua fornecedor para ajuda.

Outro fator importante a considerar é o que é mais importante para você como parte dos ciclos de lançamento de seu aplicativo: Entrega contínua, Integração contínua ou Implantação contínua? Algumas empresas visam a entrega contínua, que tem um sprint muito curto e o código está pronto para entrega a qualquer momento. Enquanto algumas empresas visam a implantação contínua, onde qualquer alteração feita no código é implantada imediatamente.

Tecnologia
O primeiro e mais importante aqui é garantir que a ferramenta realmente melhore a segurança e não reduza drasticamente a agilidade do seu pipeline de desenvolvimento. Então, as perguntas que você se faz aqui são:

  • Quão exata é a ferramenta? Qual porcentagem dos resultados são falsos positivos?
  • Quanto tempo leva para a ferramenta ser executada? Pode ser executado continuamente em tempo real?
  • Ela suporta sua pilha de tecnologia? Tem os plugins ou extensões necessários?
  • A ferramenta tem a capacidade de identificar vulnerabilidades de segurança e determinar se elas podem ser exploradas? (Capacidade de ação)

O IAST tem quase 100% de precisão. Quase não tem falsos positivos. As ferramentas DAST, por outro lado, estão cheias de falsos positivos que exigem uma análise manual para filtrar os falsos positivos. A este respeito, portanto, o IAST é muito superior ao DAST.

Pilha de tecnologias – uma das principais desvantagens do IAST é que ele só pode testar aplicativos que tenham idiomas suportados por sua biblioteca. As ferramentas atuais do IAST, coletivamente, suportam apenas alguns idiomas, como Java, python, ruby, nó js e .net. Portanto, se você tiver aplicativos que usam o Go Lang, por exemplo, o IAST será inútil; Se o seu aplicativo tiver dependências de outros idiomas, apenas alguns dos quais são cobertos pelo IAST serão verificados e o restante será ignorado, tornando o IAST menos eficiente em relação ao aplicativo inteiro.

O DAST, por outro lado, é agnóstico em termos de linguagem.

Com relação à velocidade e continuidade, o IAST é executado em tempo real e, portanto, é mais rápido que o DAST. O DAST é muito lento e leva horas para concluir um teste. Uma coisa que reduz o tempo com o DAST é a flexibilidade de modificar e varrer as políticas para incluir apenas o que você deseja.

Outra vantagem que o IAST tem sobre o DAST é que, após um teste, as ferramentas do IAST encontram falhas e apontam para as linhas de código vulneráveis. Com o DAST, é difícil identificar onde está a falha.

O que eu quero elucidar neste artigo é que não é fácil escolher de forma conclusiva o IAST sobre o DAST ou vice-versa sem contexto. Ambos têm características diferentes e servem a propósitos diferentes que exigem atenção especial antes de tomar uma decisão. Espero que, por meio desta peça informativa e de suas considerações sobre o pipeline de automação, você possa escolher ferramentas de segurança que funcionem melhor para você.