Ícone do site Conviso AppSec

Automação de requisitos de segurança com API da Conviso Plataform

rerquisitos de segurança

O processo de análise de requisitos de segurança pode ser uma tarefa árdua. Neste artigo, veremos como a automação por meio de script em Python pode ser um grande aliado neste processo. Abordaremos ainda informações extras de como obter informações da API da Conviso Platform

Vamos mostrar ainda como podemos validar automaticamente requisitos de uma “análise de requisitos” (Project com tipo Requirements), na Conviso Platform frente a vulnerabilidades (vulnerabilities) já encontradas nos ativos relacionados a estes requisitos. Esse processo traz muita agilidade na análise da modelagem de ameaças para ativos que já estão na esteira de desenvolvimento.

É uma dica muito útil para security champions, desenvolvedores, analistas de segurança, ethical hackers, enfim… para quem estiver validando requisitos de segurança de aplicações.

A principal vantagem é a otimização do trabalho de análise manual pela redução do número de requisitos validados automaticamente.

O que é preciso:

No decorrer do artigo, utilizaremos a validação da análise gerada pelo “Threat Modeling”, ou ainda, a análise de ameaças. Vamos lá?

Entendendo o contexto

Neste momento, precisamos entender o contexto dessa automação. Vamos partir de um cenário em que estamos com uma aplicação operacional e realizamos uma modelagem de ameaças que gerou requisitos de segurança para esta aplicação. Sendo assim, em seguida falaremos mais sobre a modelagem de ameaças como a origem dos requisitos de segurança. Explicarei também a origem das vulnerabilidades, para então realizarmos a análise dos requisitos de maneira automatizada comparando com as vulnerabilidades encontradas nos ativos do escopo.

O que são requisitos de segurança

Os requisitos de segurança geralmente têm origem na modelagem de ameaças (Threat Modeling).

A Conviso Platform, por meio do produto Secure by Design, apoia os analistas de segurança na modelagem de ameaças, gerando requisitos automaticamente de acordo com o padrão de ataque (Mitre CAPEC) combinado ao item de arquitetura. O resultado é um projeto (Project do tipo Threat Modeling) com os requisitos de segurança específicos para os itens de arquitetura definidos na modelagem.

Importante citar que os requisitos gerados tem como base o ASVS. Você pode ler mais sobre ASVS no link oficial do projeto em: OWASP Application Security Verification Standard | OWASP Foundation

Sobre Vulnerabilidades

Já as vulnerabilidades podem ser oriundas de diversas fontes. Possivelmente em uma esteira de desenvolvimento automatizada o maior número de vulnerabilidades será de testes automatizados, estamos falando de SCA e SAST, mas as vulnerabilidades pode também ter sua origem de análises manuais, como pentest. Essas vulnerabilidades podem ser cadastradas manualmente ou de integrações com ferramentas de gerenciamento de demandas (Bug Tracker).

No caso de ferramentas de análise automática de código (SAST) vale a pena citar que é fornecido por meio do produto Secure Pipeline da Conviso Platform. No entanto, cada esteira pode ter o seu fornecedor. Inclusive, você sabia que a Conviso Platform oferece, além da orquestração ASTs, integração com as principais soluções de mercado?

Um overview sobre análise automatizada

A lógica que vamos utilizar para realizar a análise é baseada nas seguintes premissas:

Logo, podemos dizer que se encontramos uma vulnerabilidade na aplicação, isso significa que não estamos aplicando o controle adequado! Portanto, o requisito relacionado à vulnerabilidade não está implantado.

O que não significa dizer que se não encontramos vulnerabilidades, estamos de acordo com o requisito. Afinal, isso apenas é verdade para os requisitos de nível 1 do ASVS.

Executando a automação

1º passo: Conseguir credenciais – API Key
Para poder utilizar a API, precisamos da credencial. Isso é feito pela chave da API.

No canto superior direito: usuário > menu “Edit Profile”:

2º passo: Obtendo identificação do projeto e da companhia

No exemplo da imagem acima o código do projeto é o 2983
E o código do companhia é o 277

3º passo: Executando nosso script

Chegou a hora de utilizarmos o nosso script em Python!

Observações: Validar a URL do ambiente de acordo com o uso que será feito!

pip3 install pandas
pip3 install requests
pip install openpyxl

4º passo: Interpretando o resultado

O resultado é disponibilizado no arquivo “Result.xlsx”:

Os possíveis resultados para os requisitos serão:

Requisitos que não têm CWE relacionado não estão incluídos na análise.

Informações adicionais para manipulação manual

Vamos passar também algumas informações que podem ser úteis no processo de customização ou manutenção do script, ou ainda realizar a análise de forma manual.

Utilizando client Graphql, Altair para consumir API da Conviso Platform:
Instalar a extensão do Altair GraphQL Client no navegador:

O Altair é um cliente GraphQL para todas as plataformas. Usaremos a extensão para o navegador. No entanto, existe ainda a opção desktop. Assim como também pode ser usado outro GraphQL Client.

Confira as orientações:

Obter os requisitos via API

x-api-key: {{API_KEY}}

Para mais informações para uso das APIs da Conviso Platform, ver nossas documentações em: Getting Started | Conviso Platform Docs (convisoappsec.com).

Caso tenha problemas com a API key, a resposta será:

No entanto, se tudo estiver certo, a resposta será:

{
  project(id: 999) {
    activities {
      id
      title
      reference
      status
      description
      justify
    }
    playbooks {
      checklistTypeId
      companyId
    }
  }
}

Para consultar a documentação da API, acesse o menu “Docs” e “Reload docs”:

O resultado pode ser manipulado em planilha ou com scripts no Python como fizemos de forma automatizada.

Obter as Vulnerabilidades via API

	assets(id: 999, page:1, limit:1000){
    metadata{
      currentPage
      limitValue
      totalCount
      totalPages
    }
    collection{
      id
      name
      projects{
        pid
        ...VulnByAsset
      }
    }
  } 
}




fragment VulnByAsset on Project{
  vulnerabilities{
    title
    vulnerabilityTemplate{
      categoryList
      reference
    }
  }

Mais uma vez, lembramos que estes resultados podem ser manipulados em planilha ou com scripts no Python como fizemos de forma automatizada.

Conhecendo a fonte do OWASP ASVS

Neste processo, utilizamos a planilha do Application Security Verification Standard (ASVS) da OWASP na versão 4.0.2. porque é a versão que a Conviso Platform utiliza na lógica para gerar os requisitos. No momento ela está disponível pelo link:

ASVS/OWASP Application Security Verification Standard 4.0.2-en.csv at v4.0.2 · OWASP/ASVS (github.com)

A lógica empregada, conforme pode ser visto no script, é de posse do código ASVS do requisito ir na planilha do ASVS e pegar o código da CWE correspondente para comparar com as vulnerabilidades encontrada. Podemos aplicar isso em uma planilha com PROCV.

É possível ganhar muito tempo na análise de requisitos do nível 1 do ASVS com esta automação. Lembrando que, para isso, a análise estática precisa estar rodando nos ativos da aplicação. Assim, o analista consegue focar nos requisitos que de fato precisam de validação manual.

Além de realizar essa automação, mostramos também como é fácil utilizar a API GraphQL da Conviso Platform para evoluções e customização de acordo com a necessidade da sua esteira. Sendo assim, convidamos você também a contribuir com a comunidade em nosso repositório publico no GitHub da Conviso Lab. E fique atento – muitas novidades boas virão por aí!

Sair da versão mobile