Labels do Jira
O catálogo completo das labels que a WASViking grava nas issues do Jira, as regras que a sincronização segue e um playbook para organizar boards, automação e relatórios por equipe.
Toda issue criada pela integração com o Jira carrega um pequeno conjunto de labels que dizem de onde o achado veio, que tipo de fraqueza ele é e a qual repositório ou aplicação ele pertence. As labels existem para que uma equipe consiga pegar o seu próprio trabalho a partir de um filtro de board, de uma regra de automação ou de um dashboard, sem abrir o card.
Esta página é a referência dessas labels: o catálogo completo, as regras que a sincronização segue e os padrões que as equipes usam para organizar o trabalho de segurança em torno delas.
A gramática
Todas as labels seguem um único formato:
wasviking
wasviking-<facet>-<value>
wasvikingestá em toda issue que a integração cria.<facet>é um entrearea,category,repo,appouplatform.<value>é escrito em minúsculas e com hifens. Nunca contém espaço, porque o Jira recusa uma label que tenha espaço.
O namespace é proposital. As suas próprias labels, como sprint-42,
needs-review ou team-payments, nunca colidem com estas, e uma consulta
JQL consegue distinguir as duas de relance.
Catálogo
A label raiz
| Label | Em quais issues |
|---|---|
wasviking |
Toda issue que a integração cria. labels = wasviking lista todas elas. |
Labels de área
A área é a parte da plataforma que encontrou a fraqueza, que na maioria das organizações também é a equipe que a corrige. São seis.
| Label | O que cai ali | Responsável sugerido |
|---|---|---|
wasviking-area-web |
Achados de scans de aplicações web e APIs em execução: cross-site scripting, SQL injection, outras injeções, autenticação e autorização, GraphQL, arquivos sensíveis, headers de segurança, CVEs conhecidas, e fraquezas de secrets, de controle de acesso ou de segurança de IA observadas em runtime. | A equipe de produto responsável pela aplicação, ou a equipe de plataforma web. |
wasviking-area-mobile |
Achados de avaliações de aplicativos móveis, incluindo componentes vulneráveis empacotados dentro do app. | A equipe mobile. Divida por wasviking-platform-android e wasviking-platform-ios quando duas equipes são responsáveis pelas plataformas. |
wasviking-area-code |
Achados de scans de repositório: code review de falhas de controle de acesso, revisão de segurança de IA e LLM, e secrets embutidos no código. | A equipe responsável pelo repositório. A label wasviking-repo- diz qual é. |
wasviking-area-supply-chain |
Componentes de terceiros vulneráveis ou desatualizados, vindos de envios de SBOM e SCA e da detecção de componentes em runtime. | A equipe responsável pelo repositório, com a engenharia de plataforma para imagens base e frameworks compartilhados. |
wasviking-area-infrastructure |
Fraquezas de SSL e TLS e portas sensíveis expostas. | Infraestrutura, SRE ou operações de rede. |
wasviking-area-exposure |
Credenciais encontradas em dados de vazamentos e domínios de abuso de marca ou typosquatting. | Operações de segurança, com a TI para a redefinição de credenciais e as equipes jurídica ou de marca para a derrubada de domínios de typosquatting. |
Uma issue carrega exatamente uma label de área. Quando um achado poderia
pertencer a duas, a origem dele decide: um componente vulnerável encontrado
dentro de um app móvel é
wasviking-area-mobile, não wasviking-area-supply-chain, e um secret
encontrado em um repositório é wasviking-area-code, enquanto o mesmo secret
observado em uma resposta HTTP é wasviking-area-web.
Labels de categoria
A categoria é a categoria do achado como a WASViking® a reporta no portal, na API e na exportação CSV, escrita com hifens. São dezoito.
| Label | Categoria no portal | Área habitual |
|---|---|---|
wasviking-category-xss |
Cross-site scripting | web |
wasviking-category-sqli |
SQL Injection | web |
wasviking-category-injection |
Injection (SSRF, command injection, path traversal, SSTI, XXE and others) | web |
wasviking-category-auth |
Authentication / Authorization | web |
wasviking-category-graphql |
GraphQL (introspection, IDE exposed, GET mutation, verbose errors, field suggestion) | web |
wasviking-category-sensitive-file |
Sensitive file exposure | web |
wasviking-category-headers |
Security headers | web |
wasviking-category-cve |
Known CVE | web |
wasviking-category-token-exposure |
Secret / token exposure | web em runtime, code em um repositório |
wasviking-category-access-control |
Broken Access Control (IDOR, BOLA, BFLA, clickjacking) | web em runtime, code em um repositório |
wasviking-category-ai-security |
AI / LLM Security (prompt injection, unsafe tool execution, data exposure) | web em runtime, code em um repositório |
wasviking-category-vulnerable-component |
Vulnerable / outdated third-party component | supply-chain, ou mobile dentro de um app |
wasviking-category-mobile |
Mobile application | mobile |
wasviking-category-ssl |
SSL / TLS | infrastructure |
wasviking-category-exposed-port |
Exposed sensitive port | infrastructure |
wasviking-category-credential-exposure |
Credential exposure (breach data) | exposure |
wasviking-category-brand-abuse |
Brand abuse / typosquatting | exposure |
wasviking-category-other |
Other | web |
Uma categoria que o motor venha a ganhar depois aparece como wasviking-category-<value>
por conta própria, de modo que um filtro escrito sobre a label raiz ou sobre as
labels de área continua funcionando.
Label de repositório
| Label | Em quais issues | Exemplo |
|---|---|---|
wasviking-repo-<repository> |
Achados que vieram de um scan de repositório ou de pipeline: code review, revisão de segurança de IA, secrets embutidos no código e envios de SBOM ou SCA. | acme-corp/payments-api vira wasviking-repo-acme-corp-payments-api |
O nome do repositório é o que o pipeline reportou, ou seja, o
--app-name passado à CLI do Sentinel ou o nome da pasta analisada. Ele
é reduzido ao conjunto de caracteres de label: minúsculas, tudo o que não for
letra, dígito, ponto, underscore ou hífen vira um único hífen, os acentos são
removidos, então serviço/api vira wasviking-repo-servico-api. Achados de
scans de aplicações em execução não carregam label de repositório, porque não
têm repositório.
Labels de aplicação e de plataforma
| Label | Em quais issues | Exemplo |
|---|---|---|
wasviking-app-<identifier> |
Achados de uma avaliação mobile. O identificador é o application id do Android ou o bundle id do iOS, com os pontos preservados. | wasviking-app-com.acme.bank |
wasviking-platform-<platform> |
Achados de uma avaliação mobile. | wasviking-platform-android, wasviking-platform-ios |
Os achados mobile carregam essas duas no lugar de uma label de repositório.
Como fica uma issue
| Achado | Labels |
|---|---|
| Cross-site scripting refletido encontrado por um scan de uma aplicação web | wasviking, wasviking-area-web, wasviking-category-xss |
IDOR encontrado por code review em acme-corp/payments-api |
wasviking, wasviking-area-code, wasviking-category-access-control, wasviking-repo-acme-corp-payments-api |
Biblioteca vulnerável no SBOM de acme-corp/payments-api |
wasviking, wasviking-area-supply-chain, wasviking-category-vulnerable-component, wasviking-repo-acme-corp-payments-api |
| Armazenamento inseguro em um app Android | wasviking, wasviking-area-mobile, wasviking-category-mobile, wasviking-app-com.acme.bank, wasviking-platform-android |
| Certificado expirado em um host público | wasviking, wasviking-area-infrastructure, wasviking-category-ssl |
| Credencial de funcionário encontrada em dados de vazamentos | wasviking, wasviking-area-exposure, wasviking-category-credential-exposure |
As regras que a sincronização segue
- As suas labels nunca são tocadas. A sincronização adiciona e atualiza as próprias labels por meio de operações de label, nunca reescrevendo o campo, então toda label que a sua equipe adiciona sobrevive a toda atualização.
- Só a gramática acima é gerenciada. A sincronização remove uma label apenas
quando ela tem o formato
wasviking-<facet>-<value>e deixou de se aplicar, por exemplo a label de repositório antiga depois que um repositório foi renomeado no pipeline. Uma label sua que apenas começa com o nome, comowasviking-reviewed, não está na gramática e é deixada em paz. wasvikingnunca é removida. Se alguém a apagar de um card, ela volta na próxima atualização.- As labels são atualizadas a cada push. Um push acontece quando o achado muda, quando um scan o vê de novo, em um Push to Jira manual e em um backfill com Force resync. As issues criadas antes de as labels existirem recebem as suas no próximo push.
- As labels são um espelho, não um controle. Remover uma label de área no Jira não muda o achado; a label volta. Para direcionar o trabalho de outra forma, adicione a sua própria label ou uma regra de automação em vez de editar estas.
- O campo de labels precisa estar na tela. Se a tela de criação ou de edição do tipo de issue não incluir Labels, a issue é criada sem labels e todo o resto continua sincronizando. Adicione o campo às duas telas e execute um backfill com Force resync.
Organizando o trabalho por equipe
As labels são a matéria-prima. O que vem a seguir é como organizações com várias equipes de engenharia costumam colocá-las para trabalhar.
Comece com uma matriz de responsabilidade
Decida de uma vez quem é responsável por cada área e registre isso onde as
equipes possam ver. Uma matriz mínima tem três colunas: a label de área, a
equipe responsável e o contato de escalonamento para tudo o que for
classificado como Highest. Os repositórios refinam a matriz: uma
label wasviking-repo- aponta para a equipe no seu catálogo de serviços, e as
plataformas mobile apontam para as equipes de Android e de iOS.
Um board por equipe, guiado por um filtro rápido
O board de cada equipe mantém o seu próprio filtro, então a equipe vê o trabalho de segurança ao lado do trabalho de funcionalidades, e não em um board de segurança separado que ninguém visita.
| Equipe | Filtro rápido |
|---|---|
| Mobile, Android | labels = wasviking-area-mobile AND labels = wasviking-platform-android |
| Mobile, iOS | labels = wasviking-area-mobile AND labels = wasviking-platform-ios |
| Squad de pagamentos | labels = wasviking-repo-acme-corp-payments-api |
| Plataforma web | labels = wasviking-area-web |
| Infraestrutura | labels = wasviking-area-infrastructure |
| Operações de segurança | labels = wasviking-area-exposure |
Um board de segurança com uma swimlane por área
Para a equipe de segurança, um único board com swimlanes baseadas em JQL dá a visão completa. Uma swimlane por label de área, ordenada por prioridade, mostra de relance qual equipe está atrasada.
Direcione automaticamente com o Jira Automation
As regras de automação transformam uma label em um responsável no momento em que a issue é criada, então ninguém precisa fazer a triagem manualmente.
| Quando | Condição | Então |
|---|---|---|
| Issue criada | Labels contém wasviking-area-mobile |
Defina Team ou Component como Mobile, atribua ao líder de mobile |
| Issue criada | Labels contém wasviking-repo-acme-corp-payments-api |
Defina Component como payments-api, atribua ao líder do componente |
| Issue criada | Labels contém wasviking-category-credential-exposure |
Defina a prioridade como Highest, adicione o líder de segurança como watcher, publique no canal de segurança |
| Issue criada | Labels contém wasviking-area-supply-chain e a prioridade é Highest |
Crie uma tarefa vinculada para a engenharia de plataforma |
Mantenha a responsabilidade em um campo seu, Team ou Component, e deixe as labels alimentá-lo. Renomear ou apagar uma label da WASViking para mudar o responsável não funciona, porque a sincronização a coloca de volta.
Dashboards e relatórios
Filtros salvos sobre as labels dão à revisão semanal os seus números sem que ninguém precise montar uma planilha.
| Pergunta | JQL |
|---|---|
| Tudo o que está aberto vindo da WASViking | labels = wasviking AND statusCategory != Done |
| Trabalho aberto por equipe | labels = wasviking-area-mobile AND statusCategory != Done, um filtro por área |
| O que chegou nesta semana | labels = wasviking AND created >= -7d |
| Highest e High ainda abertos, por repositório | labels = wasviking AND priority in (Highest, High) AND statusCategory != Done agrupado por label em um gadget de estatísticas bidimensionais |
| Tudo o que foi resolvido por um scan, e não manualmente | labels = wasviking AND statusCategory = Done AND resolved >= -30d |
Um gadget de estatísticas de filtro bidimensionais, com as labels em um eixo e o status no outro, é a visão mais útil de todas: todas as áreas, todos os estados, uma única tabela.
Mantenha os dois namespaces separados
Use as suas próprias labels à vontade para tudo o que a sincronização não
expressa: sprint, responsabilidade, estado de revisão, impacto no cliente.
Deixe as labels wasviking- para a sincronização. Se um valor não se encaixa
na sua convenção de nomes, mapeie-o com uma regra de automação para uma label
ou um campo seu, em vez de editar a label no card.
Referência de JQL
| Objetivo | JQL |
|---|---|
| Todas as issues da WASViking | labels = wasviking |
| Uma área | labels = wasviking-area-code |
| Várias áreas | labels in (wasviking-area-web, wasviking-area-code) |
| Um repositório | labels = wasviking-repo-acme-corp-payments-api |
| Uma categoria em todas as áreas | labels = wasviking-category-access-control |
| Um app mobile | labels = wasviking-app-com.acme.bank |
| Uma plataforma | labels = wasviking-platform-ios |
| Tudo, exceto cadeia de suprimentos | labels = wasviking AND labels != wasviking-area-supply-chain |
| Ainda sem label de uma equipe | labels = wasviking AND component is EMPTY |
As labels são comparadas de forma exata e diferenciam maiúsculas de minúsculas no JQL, então digite-as como aparecem aqui, em minúsculas.
