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 ambienteWASV_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
- 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.
- 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.
- A API verifica o objeto armazenado, confirma que ele é um pacote de aplicativo real e coloca a avaliação na fila.
- 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.
