Browse By

Anteater – Estrutura de verificação de portas CI / CD

O Anteater é uma estrutura aberta para impedir a mesclagem indesejada de seqüências de caracteres, nomes de arquivos, binários, funções depreciadas, código / credenciais do ambiente de teste etc. Qualquer coisa que possa ser especificada com sintaxe de expressão regular pode ser detectada pelo anteater. 
Você diz ao tamanduá exatamente o que não deseja que seja mesclado e o tamanduá cuida do resto. 
Se o tamanduá encontrar algo, ele sairá com um código diferente de zero que, por sua vez, falha na criação da sua ferramenta de IC, com a idéia de que impediria a mesclagem de uma solicitação pull. Quaisquer falsos positivos são facilmente negados usando a mesma estrutura RegExp para cancelar a correspondência falsa. 
Projetos inteiros também podem ser verificados também, usando uma caminhada de diretório recursiva.
Com algumas etapas simples, ele pode ser facilmente implementado em um fluxo de trabalho de CI / CD com ferramentas como Travis CI , CircleCI , Gitlab CI / CD e Jenkins . 
Atualmente, ele é usado no projeto Linux Foundations ‘OPNFV’ como forma de fornecer verificações de segurança automatizadas no portão, mas, como mostrado nos exemplos abaixo, pode ser usado para outros cenários. 
O Anteater também fornece integração com a API do Virus Total, para que todos os binários, endereços IP públicos ou URLs encontrados pelo Anteater sejam enviados para a API do Virus Total e um relatório seja retornado. Se qualquer objeto for relatado como malicioso, ele falhará no trabalho de criação do IC.
É fornecido um exemplo de conteúdo para aqueles que não sabem o que começar e são incentivados e bem-vindos a compartilhar as seqüências de filtros do Anteater que achar úteis.

Por que eu iria querer usar isso? 
O Tamanduá tem muitos usos e pode ser facilmente dobrado para cobrir suas próprias necessidades específicas. 
Primeiro, como mencionado, ele pode ser configurado para bloquear strings e arquivos com um potencial risco ou impacto à segurança. Isso pode incluir chaves privadas, histórico do shell, credenciais do awsetc.
É especialmente útil para garantir que os elementos usados ​​em um ambiente de preparação / desenvolvimento não encontrem o caminho para um ambiente de produção. 
Vamos dar uma olhada em alguns exemplos:

apprun:
  regex: app\.run\s*\(.*debug.*=.*True.*\)
  desc: "Running flask in debug mode could potentially leak sensitive data"

O código acima corresponderá ao código em que um servidor de balão está definido para execução no modo de depuraçãoapp.run(host='0.0.0.0' port=80 debug=true), o que pode ser típico do ambiente de um desenvolvedor e encenado por engano na produção. 
Para um aplicativo rails, isso pode ser: 
regex: \<%=.*debug.*%>
Ainda mais simples, procure o seguinte na maioria das estruturas de log: 
regex: log\.debug
Precisa parar os desenvolvedores que adicionam por engano uma chave privada?

  private_key:
    regex: -----BEGIN\sRSA\sPRIVATE\sKEY----
    desc: "This looks like it could be a private key"

E os arquivos de credenciais que causariam perda de trabalho se algum dia vazassem para a produção? O Tamanduá também trabalha com nomes de arquivos. 
Por exemplo: 
jenkins\.plugins\.publish_over_ssh\.BapSshPublisherPlugin\.xml
Ou até ..

- \.pypirc
- \.gem\/credentials
- aws_access_key_id
- aws_secret_access_key
- LocalSettings\.php

Se seu aplicativo tiver seu próprio arquivo de configuração / segredos personalizado, será muito fácil adicionar suas próprias expressões regulares. Tudo é definido usando a formatação YAML, portanto, não é necessário alterar o código dos anteaterers. 

Funções depreciadas, classes, etc.
Outro uso é para quando um projeto deprecia uma função antiga, mas os desenvolvedores ainda podem fazer solicitações pull usando a nomeação de função antiga:

depreciated_function:``
  regex: depreciated_function\(.*\)
  desc: This function was depreciated in release X, use Y function.

Ou, talvez, impedindo as pessoas de usar as versões 1.x de uma estrutura: 
<script.src.*="https:\/\/ajax\.googleapis\.com\/ajax\/libs\/angularjs\/1.*<\/script>

E se eu receber postives falsos? 
Fácil, você define um RegExp para interromper a partida, como RegExp’ception. 
Digamos que queremos interromper o uso do MD5:

md245:
  regex: md[245]
  desc: "Insecure hashing algorithm"

Isso então corresponde incorretamente ao seguinte: 
mystring = int(amd500) * 4
Definimos um RegEx de ignição específico, portanto ele corresponde e é incomparável com a entrada ignorar. 
mystring.=.int\(amd500\).*
Ainda outro exemplo de MD5continuar sendo sinalizado. 

Binários
Com o tamanduá, se você passar o argumento --binaries, qualquer binário encontrado causa uma falha de construção na solicitação de origem. Não é até que uma soma de verificação sha256 seja configurada nos arquivos de ignição YAML do tamanduá que a compilação tem permissão para passar. 
Isso significa que você pode impedir que as pessoas façam check-in de objetos compilados, imagens, PDFs etc. que possam ter uma origem desconhecida ou violar os arquivos binários existentes. 
Um exemplo:

$ anteater --binaries --project myproj --patchset /tmp/patch
Non Whitelisted Binary file: /folder/to/repo/images/pal.png
Please submit patch with this hash: 3aeae9c71e82942e2f34341e9185b14b7cca9142d53f8724bb8e9531a73de8b2

Vamos inserir o hash ::

binaries:
  images/pal.png:
    - 3aeae9c71e82942e2f34341e9185b14b7cca9142d53f8724bb8e9531a73de8b2

Execute o trabalho novamente ::

$ anteater --binaries --project myproj --patchset /tmp/patch
Found matching file hash for: /folder/to/repo/images/pal.png

Dessa forma, podemos garantir que os binários não sejam violados por meio de uma assinatura / soma de verificação criptográfica com falha. 
Quaisquer binários que não possuam uma soma de verificação sha256 também serão enviados à API do Virus Total para verificação. 

Vírus API total
Se as seguintes bandeiras (combinados ou individualmente) --ips-urls--binaries são utilizados, tamanduá vai realizar uma pesquisa para o vírus API total. 
Os endereços IP terão seu histórico de DNS verificado quanto a qualquer conexão anterior ou presente com domínios conhecidos na lista negra marcados como maliciosos ou contendo malware. 
Os URLs serão verificados quanto a qualquer conexão anterior ou presente com domínios listados na lista negra conhecidos, marcados como maliciosos ou contendo malware.
Como mencionado, os binários serão enviados ao Virus Total e verificados como limpos / infectados. 
Para mais detalhes e documentação detalhada, visite readthedocs
Por fim, se você usa o tamanduá, eu adoraria saber (twitter: @lukeahinds) e solicitações / solicitações de recebimento são bem-vindas! 

Contribuir com
contribuições são bem-vindas. 
Faça uma solicitação de recebimento em uma nova ramificação e não mestre.

git checkout -b mypatch
git push origin mypatch

Os testes de unidade e as verificações do PEP8 estão em tox, então basta executar o toxcomando antes de enviar seu código. 
Se o seu patch corrigir e emitir um problema, cole o URL do problema na mensagem de confirmação.

Download de tamanduá

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.

FULL CRYPTERS