08/03/2018 Wagner Voltz

OWASP Cornucopia – um agile game para identificar potenciais falhas de segurança em softwares

Você já ouviu falar em codificação segura? Sabe onde encontrar material sobre isto? E sabe onde encontrar cases sobre segurança em software ?

Pois bem, talvez você tenha aberto uma nova aba no navegador e começado  a pesquisar. Garanto que você encontrou poucas referências em português, mesmo a nossa nação sendo um país com muitos incidentes referente a segurança.

Os gráficos abaixo são do CERT.br (Centro de Estudos, Resposta e Tratamento de Incidentes de Segurança no Brasil) e demonstram uma série de incidentes ocorridos na internet brasileira.

Total de Incidentes Reportados ao CERT.br por ano

Fonte: https://www.cert.br/stats/incidentes/ (acessado dia 20/02/2018 às 16h27)

Incidentes reportados ao CERT.br de Janeiro a Dezembro de 2016

 

Fonte: https://www.cert.br/stats/incidentes/2016-jan-dec/tipos-ataque.html (acessado dia 20/02/2018 às 16h28)

 

Mas será que este tema deve ser observado somente por equipes de infraestrutura e redes? Quão importante é um desenvolvedor de aplicações web conhecer possíveis tipos de ataques existentes? E se o desenvolvedor tiver este conhecimento, ele poderia mitigar as vulnerabilidades através da codificação correta e segura de software?

Elmo Vila Sésamo pensativo

Fonte: https://media.giphy.com/media/8acGIeFnqLA7S/giphy.gif

Pensando em facilitar este conhecimento, a OWASP (Open Web Application Security Project) desenvolveu um agile game denominado Cornucopia. O objetivo do jogo é gerar uma lista de bugs potenciais numa aplicação web através de gameficação e participação de diversos interessados no produto (desenvolvedores, analistas, tester, dono de produto ou stakeholders). O game não prevê como serão solucionadas as vulnerabilidades identificadas. Isto deve ser feito em outro momento. O benefício gerado é termos exatamente quais itens de segurança que devem ser tratados pelo time em tempo oportuno.

Cornucopia: Como é o jogo?

Este jogo é composto por um baralho com 6 naipes e 2 curingas. Cada naipe representa uma categoria que deve ser validada no software web. Os naipes disponíveis são:

  • VALIDAÇÃO DE DADOS DE ENTRADA E CODIFICAÇÃO DE DADOS DE SAÍDA
  • AUTENTICAÇÃO E GERENCIAMENTO DE CREDENCIAIS
  • GERENCIAMENTO DE SESSÕES
  • CONTROLE DE ACESSOS
  • PRÁTICAS DE CRIPTOGRAFIA
  • CORNUCOPIA (categoria especial de ataques)

Cada naipe possui uma numeração semelhante ao jogo de cartas normal (de às (A) até 10 seguido por valete (J), dama (K) e rei (K)). A carta às (A) é a mais forte de um naipe. A segunda mais forte é o rei (K) e a mais fraca é o 2.

 

Baralho Cornucopia

Fonte: https://zinatullin.com/tag/web-application-security/

As regras podem ser adaptadas, mas sugere-se jogar da seguinte forma:

  • Ter até 6 pessoas, podendo elas serem codificadoras de software ou não.
  • Ter uma pessoa externa que conduza e facilite o jogo. Esta pessoa também será a responsável por anotar as evidências de vulnerabilidades e a pontuação de cada jogador.
  • Faça um sorteio para descobrir quem irá começar a rodada.
  • Embaralhe as cartas e distribua-as a partir da pessoa que ganhou o sorteio.
    • DICA: nas primeiras aplicações do game, tire as cartas ÀS, tire as cartas curingas e as cartas do naipe CORNUCOPIA.
  • Após a distribuição completa das cartas, o facilitador deve delimitar o escopo a ser analisado no game (ex: a aplicação toda? uma nova funcionalidade? uma alteração na forma de login?).
    • DICA: use gráficos do processo, jornada do usuário, versão do software a ser analisada e o que mais os participantes acharem por bem.
  • Após isto, cada jogador deve analisar quais cartas recebeu. Esta análise deve visar cartas que gerem pontos, através da identificação de possíveis bugs e vulnerabilidades que devem ser analisadas no software.
  • O jogo começa com a pessoa sorteada e irá seguir em sentido horário.
  • O primeiro jogador deve descartar uma carta que ele identificou como vulnerabilidade, pois isto gerará ponto para ele de forma imediata. E caso esta carta seja a de maior numeração ao final da rodada, ele irá ganhar um ponto extra.
    • DICA: Pense em como pontuar validando possíveis vulnerabilidades e pense em como ser estratégico para ganhar ponto extra.

 

Como jogar Cornucopia OWASP

Fonte: https://www.youtube.com/watch?v=i5Y0akWj31k

  • Os demais jogadores devem descartar cartas do mesmo naipe nesta rodada. Caso o jogador não tenha a carta do mesmo naipe, deverá descartar alguma carta de outro naipe. Esta carta de outro naipe deve ser validada se é ou não um bug potencial e o jogador receberá ponto caso seja uma vulnerabilidade identificada, mas este jogador não participará da pontuação extra referente a carta da rodada (ver tópico abaixo).
  • Ao final da rodada, é analisado quem descartou a carta com maior numeração do naipe inicial (descarte do primeiro jogador) e este ganhará ponto extra.
  • Na segunda rodada, quem iniciará a rodada é quem ganhou a última rodada. Isto se repete em cada rodada.

E como são as cartas?

Olhando um pouco para as cartas abaixo, você irá identificar:

  • Na lateral esquerda, o naipe da carta;
  • No canto superior da lateral direita, você encontra a numeração;
  • Em todas as cartas tem um nome. Este é o atacante (hacker) que está fazendo aquela ação contra o seu sistema. Seu objetivo é dizer se isto pode ou não acontecer no seu sistema.

Após a descrição do ataque, você encontra a referência do ataque e como prevenir. Para saber mais entre neste link.

Cartas Cornucopia Gerenciamento de Sessões e Controle de Acessos

 

Cartas Cornucopia Práticas de Criptografia e Cornucópia

E como tem sido o Cornucopia na DB1?

Em janeiro de 2018, tomei conhecimento deste game e investi tempo para entender como ele funciona. A primeira ação foi a tradução das cartas para que os participantes não tivessem problemas com o idioma original (em inglês).

Após a tradução, elenquei quais times poderiam participar de uma rodada inicial. Escolhi um time e apresentei a ideia para o gestor que prontamente aceitou o desafio. Para a primeira experiência com o jogo, definimos atuar com um naipe.

Expliquei o propósito do game e as regras do jogo. Delimitamos o escopo que iríamos validar e cronometramos o tempo para ter uma ideia do tempo gasto ( foram investidos cerca de 40 min).

Como estávamos validando a aplicação, usamos cartas impressas em A4 numa impressora matricial e não envolvemos premiação.

Após o final do jogo, coletamos feedback positivos e feedbacks de melhoria para aprimorar o game.

Num segundo momento, aplicamos dois naipes do baralho com o mesmo time. Neste, aguçamos a competição entre os participantes, com um prêmio que eles poderiam escolher na nossa loja de conveniências (DB1 Snacks). A premiação foi bem aceita entre os participantes. Cronometramos e percebemos que durou cerca de 1h40 (com um pequeno intervalo entre algumas rodadas).

Num terceiro momento, aplicamos os outros dois naipes que estavam faltando e adicionamos o naipe CORNUCOPIA que é uma carta estratégica. Continuamos com a premiação e finalizamos a aplicação do jogo. Novamente cronometramos para fins de estatísticas.

Os resultados colhidos do game estão sendo adicionados aos backlogs do time envolvido para serem desenvolvidos em tempo oportuno.

Ainda não rodamos todo o baralho num único dia. Pelos dados do time anterior, provavelmente investiremos uma manhã completa para completar o jogo.

Além disto, estamos desenvolvendo o nosso próprio baralho para tornar o jogo mais profissional e agradável.

 

Baralho Cornucopia DB1 Global Software

Uma ação interessante que fizemos ao implantar o jogo neste time foi termos dois facilitadores na criação do jogo (pareamento). A medida que testamos se o jogo fazia sentido, outro facilitador já era formado. Hoje temos dois facilitadores que podem disseminar isto para outros times e conseguem trabalhar em paralelo. O objetivo agora é expandir este game para todos os times e formar novos facilitadores, para que este game seja jogado com a frequência que os times definirem e que gere valor para os produtos e clientes da DB1.

 

Dicas de como começar a jogar Cornucopia

 

gif boné

  • Antes de começar a jogar, tenha um tempo para entender o que cada carta diz. Dúvidas durante o jogo surgirão e o facilitador precisa dar as devidas explicações para os jogadores.
  • Comece só com um naipe (sugestão: AUTENTICAÇÃO E GERENCIAMENTO DE CREDENCIAIS )
  • Imprima o baralho em papel A4 e use da forma mais simples possível.
  • Comece com 4 jogadores e um facilitador. É um número interessante.
  • Envolva pessoas técnicas e de negócios. A visão será ampliada do assunto.
  • Ao final do game, peça para os participantes darem feedback e a partir daí tome novas ações (como fazer um baralho mais profissional).
  • Cronometre mas não pressione a velocidade do game. Nas próximas aplicações do game, você já terá uma referência de tempo.
  • Cuide para que as evidências detectadas realmente entrem no backlog do time. Senão de nada adiantará ter executado este game.

Para obter o material em processo de tradução acesse e contribua no GitHub.

Veja aqui maiores referências sobre Cornucopia.

Para saber mais sobre desenvolvimento seguro acesse o site da OWASP.

 

 

OWASP Open Web Application Security Project

 

Comentários

comentários

Sobre o autor

Wagner Voltz Desenvolvo sistemas há mais de 10 anos e nesta caminhada aprendi muito com meus erros (independente de linguagem de programação e modelo de trabalho).A minha insatisfação por errar me fez buscar mais conhecimento. Percebi o quanto programar pode ser uma atividade prazerosa se você trilhar os caminhos corretos e ouvir conselhos dos mais experientes. Aprendi a experimentar coisas novas e entender o que pode ser bom para determinadas situações. E percebi que práticas ágeis me deixavam mais feliz ainda. Não posso ser egoísta e só eu ser feliz, por isto acredito que cada membro do time pode ser melhorado, com o acompanhamento e feedback correto. Ainda estou aprendendo, mas como é bom olhar para trás e não ser o mesmo de 10 anos atrás.