WASViking Docs
⌘K
Agente Sentinel

wasviking-sentinel mobile

Envie um pacote de aplicativo Android ou iOS a partir de qualquer pipeline para uma avaliação estática com base no OWASP MASVS e no MASTG, com diff de baseline e exit codes determinísticos.

wasviking-sentinel mobile envia um pacote de aplicativo compilado ao WASViking® Mobile Security Assessment, aguarda o veredito, grava SARIF e JSON e faz o build falhar quando há achados acima de um limite que você escolhe. Ele é a contraparte baseada em arquivo do scan de nuvem: não há túnel mTLS nem aplicativo em execução para alcançar, porque o artefato é a entrada.

Para um passo a passo completo com GitHub Actions, veja Mobile Security no CI/CD com GitHub Actions. Esta página é a referência do comando para qualquer pipeline.

Pacotes suportados

Formato Plataforma
.apk Android
.aab Android App Bundle
.xapk, .apks Contêineres Android de pacotes divididos (split packages)
.ipa iOS

O formato é decidido pela leitura do contêiner, não pela extensão do arquivo. Um arquivo que não é um pacote de aplicativo reconhecido é recusado no upload.

Verificação de licença (preflight)

Antes de qualquer trabalho, o mobile chama o endpoint de preflight da WASViking para confirmar que a chave de API da organização está ativa.

  • --api-key (ou a variável de ambiente WASV_API_KEY) é obrigatório.
  • A verificação é POST /api/v1/sentinel/preflight. Qualquer chave de API ativa da organização passa.
  • O resultado fica em cache no disco por um curto período, então execuções repetidas dispensam a rede.
  • Uma indisponibilidade curta da WASViking não quebra o seu pipeline, mas uma chave rejeitada ativamente (401 / 403) bloqueia de imediato.

Escopo

A chave de API precisa do escopo mobile:scan. A mesma chave também baixa o agente pelo install.sh, então um pipeline só de mobile não precisa de nenhum outro escopo.

Como ele executa

  1. O agente pede à API que autorize um upload e recebe uma autorização de curta duração e de finalidade única, válida para um objeto.
  2. O pacote é enviado direto para um armazenamento de objetos seguro. Os bytes não passam pela API nem por uma CDN, então o tamanho do pacote não é limitado por um proxy.
  3. A API verifica o objeto armazenado, confirma que ele é um pacote de aplicativo real e coloca a avaliação na fila.
  4. O agente consulta periodicamente até a avaliação chegar a um estado terminal e então baixa o SARIF.

Uso básico

export WASV_API_KEY="wv_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
wasviking-sentinel mobile --file app-release.apk

Dois arquivos são gravados em --out (padrão .):

  • wasviking-mobile.sarif: SARIF 2.1.0, para o GitHub Code Scanning, o GitLab e qualquer ferramenta compatível com SARIF.
  • wasviking-mobile.json: o resumo da execução, com as contagens por severidade, a pontuação de risco e a procedência do build.

Flags

Flag Obrigatório Descrição
--file Sim Caminho para o pacote de aplicativo.
--api-key Sim Chave de API com mobile:scan. Prefira a variável de ambiente WASV_API_KEY.
--label Não Rótulo armazenado com a avaliação (nome da release, commit).
--fail-on Não critical, high, medium, low ou none. Lógica "ou acima". Padrão: critical.
--baseline Não new (apenas os achados ausentes da avaliação anterior do mesmo aplicativo) ou all. Padrão: all.
--out Não Diretório de saída. Padrão: diretório atual.
--timeout Não Tempo máximo para o upload mais a análise. Padrão: 40m.
--api Não URL base da API. Padrão: https://api.wasviking.com (variável de ambiente WASV_API).

Diff de baseline

A baseline é a avaliação concluída anterior do mesmo aplicativo (mesma plataforma e mesmo identificador de pacote), vinda de um pipeline ou de um upload manual. A comparação é feita pela identidade do achado, então um incremento de versão não a reinicia. Com --baseline new, o build só falha nos achados que a release introduz, o que mantém os pull requests livres do atrito causado pela dívida herdada. O SARIF marca cada resultado como novo, existente ou corrigido.

Exit codes

Código Significado
0 Nada no limite ou acima dele (considerando a baseline).
1 Os achados excedem o limite. Bloqueia o merge.
2 Erro operacional (pacote ausente, argumentos inválidos, falha de autenticação ou de upload).

Procedência do build

O comando lê as variáveis de ambiente padrão de CI e registra o provedor, o repositório, a branch, o commit, a execução e o autor junto com a avaliação, sem flags extras. GitHub Actions, GitLab CI, Bitbucket Pipelines e CircleCI são reconhecidos automaticamente. O portal mostra essas informações ao lado da execução, marcada com um selo CI, e o mesmo contexto segue no SARIF.

Onde os resultados aparecem

As avaliações vindas de pipelines aparecem junto com os uploads manuais em Mobile Security → Assessments. A capacidade em si está documentada em Mobile Security Assessment.