Integrando Syhunt ao BitBucket

As informações contidas neste documento se aplicam a versão 7.0 do Syhunt Hybrid.

Introduction

Iniciar varreduras Syhunt a partir de um script BitBucket CI YML é simples e direto, permitindo integrar as ferramentas de teste de segurança Syhunt Dynamic, Syhunt Code e Syhunt Mobile em seu pipeline de entrega contínua.

O exemplo de script BitBucket YML a seguir varrerá o código-fonte do repositório atual, falhando no trabalho se vulnerabilidades médias ou altas forem identificadas. Além disso, anexa um relatório de vulnerabilidade aos artefatos de trabalho do pipeline.

Windows


pipelines:
  default:
      - step:
          runs-on:
            - self.hosted
            - windows
          script:
            - Start-CodeScan -pfcond 'fail-if:risk=mediumup' -output 'report.pdf'
          artifacts:
            - report.pdf

Linux


pipelines:
   default:
       - step:
           runs-on:
             - self.hosted
             - linux.shell
           script: 
             - ${HOME}/syhunt-hybrid/carbon/scancode ${PWD} -pfcond:fail-if:risk=mediumup -rout:${PWD}/report.html
           artifacts:
             - report.html

Ativando um Syhunt Runner

Syhunt Runner é um serviço CI que receberá solicitações de varredura, executará varreduras e comunicará os resultados da varredura com o BitBucket.

IMPORTANTE: Por motivos de segurança e desempenho, é aconselhável que o Runner seja instalado em uma máquina virtual separada ou em uma máquina física dedicada.

  1. Primeiro, instale com suas configurações padrão o comando Git:
    1. No Windows: instale o Git para Windows, que pode ser baixado em https://gitforwindows.org/
    2. No Linux: instale o pacote git usando o gerenciador de pacotes da sua distribuição.
  2. Em segundo lugar, instale com suas configurações padrão o Syhunt Hybrid (syhunt-hybrid-7.0.14.0.exe no Windows ou syhunt-hybrid-7.0.14.0.jar no Linux)
  3. Em terceiro lugar, digite java -version no prompt de comando do Windows ou terminal Linux e certifique-se de ter o Java 22.0.2 ou superior instalado. Caso contrário, instale o JDK22 ou superior baixando de https://www.oracle.com/java/technologies/downloads/
  4. Por fim, em Bitbucket.com, navegue até a página principal do repositório:
    1. Abaixo do nome do seu repositório, clique em Repository Settings (Configurações do repositório na barra lateral esquerda.
    2. Role para baixo até Pipelines e clique em Runners
    3. Clique no botão Add runner (Adicionar executor), e selecione em Sistema e arquitetura: Windows (64 bits) ou Linux Shell se você tiver o Syhunt instalado no Linux.
    4. Dê um nome ao runner (por exemplo: Syhunt) e um label (por exemplo: syhunt) e clique em Next (Avançar)
    5. Você verá instruções mostrando como baixar o aplicativo runner e instalá-lo em sua máquina runner auto-hospedada.
  5. Siga as instruções fornecidas para ativar o runner e, em seguida, clique em Next (Avançar)

Syhunt agora está pronto para ser chamado a partir de scripts BitBucket CI! Veja exemplos abaixo

Adicionando Syhunt ao seu script CI YML

Se você não tiver um arquivo YML de fluxo de trabalho em seu repositório, crie um arquivo como “bitbucket-pipelines.yml” no caminho raiz do seu projeto.

Exemplo SAST - O script BitBucket CI YML de exemplo a seguir varrerá o código-fonte do repositório atual, falhando no trabalho se vulnerabilidades médias ou altas forem identificadas. Além disso, anexa um relatório de vulnerabilidade aos artefatos de trabalho do pipeline.

Windows


pipelines:
  default:
      - step:
          runs-on:
            - self.hosted
            - windows
          script:
            - Start-CodeScan -pfcond 'fail-if:risk=mediumup' -output 'report.pdf'
          artifacts:
            - report.pdf

Linux


pipelines:
   default:
       - step:
           runs-on:
             - self.hosted
             - linux.shell
           script: 
             - ${HOME}/syhunt-hybrid/carbon/scancode ${PWD} -pfcond:fail-if:risk=mediumup -rout:${PWD}/report.html
           artifacts:
             - report.html

Exemplo DAST - O script YML do BitBucket de exemplo a seguir varrerá a aplicação web ativa após entrar em produção, falhando no trabalho se vulnerabilidades médias ou altas forem identificadas. Além disso, anexa um relatório de vulnerabilidade aos artefatos de trabalho do pipeline.

Linux


pipelines:
   default:
       - step:
           runs-on:
             - self.hosted
             - linux.shell
           script: 
             - ${HOME}/syhunt-hybrid/carbon/scanurl www.productionurl.com -pfcond:fail-if:risk=mediumup -rout:${PWD}/report.html
           artifacts:
             - report.html

Windows


pipelines:
  default:
      - step:
          runs-on:
            - self.hosted
            - windows
          script:
            - Start-DynamicScan -target 'www.productionurl.com' -pfcond 'medium' -output 'report.pdf'
          artifacts:
            - report.pdf

Exemplos adicionais para o Windows:


# Exemplo de SAST - Analisar diretório / repositório local
Start-CodeScan -pfcond "medium"

# Exemplo de SAST - Analisar um repositório GIT remoto
$MyProject = @{
  target = 'https://github.com/syhunt/vulnphp.git';
  branch = 'main';
  pfcond = 'medium';
  output = 'report.pdf'
}
Start-CodeScan @MyProject

# Exemplo de DAST - Analisar um URL
$MyWebsite= @{
  target = 'https://www.somewebsite.com';
  pfcond = 'medium';
  output = 'report.pdf'
}
Start-DynamicScan @MyWebsite

Função Start-DynamicScan

Linux

No Linux, o Syhunt Dynamic deve ser iniciado através do comando scanurl.

Windows

O Syhunt Dynamic deve ser iniciado através da função Start-DynamicScan(). Os seguintes parâmetros devem ser fornecidos ao chamar a função Start-DynamicScan():

  • target (obrigatório) - o URL alvo a ser analisado (ex. http://www.somesite.com)
  • huntmethod (opcional) - o Método de Varredura a ser usado durante a análise. Se omitido, o método padrão será usado.
  • pfcond (opcional) - permite que o script falhe com o código de saída adequado se uma determinada condição for atendida. Veja abaixo uma lista das condições de aprovação / reprovação disponíveis.
  • tracker (opcional) - o nome do rastreador criado anteriormente ou um rastreador gerado dinamicamente para o qual será enviado um resumo das vulnerabilidades identificadas ao final da varredura. Exemplos
  • output (opcional) - permite definir um nome de arquivo de relatório (por exemplo, report.pdf ou report.html).
  • outputex (opcional) - permite definir um segundo nome de arquivo de saída (por exemplo, export.json).
  • verbmode (opcional) - $ false por padrão. Se alterado para true, ativa o modo detalhado, permitindo que informações de erro e informações básicas sejam adicionadas ao console.
  • genrep (opcional) - $ true por padrão. Se alterado para false, o Syhunt não gerará um arquivo de relatório.
  • redirIO (opcional) - $ true por padrão. Se alterado para false, informações de status em tempo-real do scanner Syhunt não serão redirecionadas para o console.
  • timelimit (opcional) - define o tempo máximo da varredura (padrão: sem limite). Caso o tempo seja atingido, a varredura é cancelada. Exemplos: 1d, 3h, 2h30m, 50m

Ao usar os parâmetros output ou outputex, todos os formatos de saída suportados pelo Syhunt estão disponíveis. O relatório ou exportação será salvo no diretório de trabalho atual, a menos que seja fornecido um nome de caminho completo.

Exemplos:


# Exemplo 1 - Analisar um URL com uma única linha
Start-DynamicScan -target 'https://www.somewebsite.com' -pfcond 'fail-if:risk=mediumup'

# Exemplo 2 - Analisar um URL
$MyWebsite= @{
  target = 'https://www.somewebsite.com';
  pfcond = 'medium';
  output = 'report.pdf'
}
Start-DynamicScan @MyWebsite

Função Iniciar-CodeScan

Linux

No Linux, o Syhunt Code deve ser iniciado através do comando scancode.

Windows

O Syhunt Code deve ser iniciado através da função Start-CodeScan(). Os seguintes parâmetros podem ser fornecidos ao chamar a função Start-CodeScan(), sendo todas eles opcionais:

  • target - o URL de um repositório GIT ou um diretório ou arquivo de código-fonte local a ser verificado. Se o parâmetro target for omitido, o diretório de trabalho atual será verificado.
  • branch - a ramificação do repositório a ser analisada. Se o parâmetro branch for omitido, o branch padrão será analisado.
  • huntmethod - o Método de Varredura a ser usado durante a análise. Se omitido, o método padrão será usado.
  • pfcond - permite que o script falhe com o código de saída adequado se uma determinada condição for atendida. Veja abaixo uma lista das condições de aprovação / reprovação disponíveis.
  • output - permite definir um nome de arquivo de relatório (por exemplo, report.pdf ou report.html).
  • outputex - permite definir um segundo nome de arquivo de saída (por exemplo, export.json).
  • verbmode - $ false por padrão. Se alterado para true, ativa o modo detalhado, permitindo que informações de erro e informações básicas sejam adicionadas ao console.
  • genrep - $ true por padrão. Se alterado para false, o Syhunt não gerará um arquivo de relatório.
  • redirIO - $ true por padrão. Se alterado para false, informações de status em tempo-real do scanner Syhunt não serão redirecionadas para o console.
  • timelimit (opcional) - define o tempo máximo da varredura (padrão: sem limite). Caso o tempo seja atingido, a varredura é cancelada. Exemplos: 1d, 3h, 2h30m, 50m

Ao usar os parâmetros output ou outputex, todos os formatos de saída suportados pelo Syhunt estão disponíveis. O relatório ou exportação será salvo no diretório de trabalho atual, a menos que seja fornecido um nome de caminho completo.

Exemplos:


# Exemplo 1 - Analisando o diretório / repositório atual
Start-CodeScan -pfcond "medium"

# Exemplo 2 - Analisando um projeto GIT remoto
Start-CodeScan -target "https://github.com/someuser/somerepo.git" -huntmethod "normal" -pfcond "medium"

# Exemplo 3 - Analisando um diretório local específico
Start-CodeScan -target "C:\www\" -huntmethod "normal" -pfcond "medium"

Condições de aprovação/reprovação

A seguir estão as condições de aprovação / reprovação atualmente suportadas pelo Syhunt:

  • high ou fail-if:risk=high - Falha se for encontrada uma vulnerabilidade ou ameaça de alto risco
  • medium ou fail-if:risk=mediumup - Falha se for encontrada uma vulnerabilidade ou ameaça de risco Médio ou Alto
  • low ou fail-if:risk=lowup - Falha se for encontrada uma vulnerabilidade ou ameaça de risco Baixo, Médio ou Alto

Integrando com Issues do BitBucket

Embora a integração de CI com o pipeline BitBucket esteja disponível, espera-se que a integração com problemas do BitBucket seja adicionada em uma versão futura do Syhunt.


Para documentação adicional do produto, visite syhunt.com/docs/br

Contato