Por que você deve dizer sim aos programas de recompensas por bugs

Por que você deve dizer sim aos programas de recompensas por bugs

Os programas de recompensa por bugs são uma alternativa fantástica para acompanhar sua equipe de controle de qualidade na construção de software melhor e mais seguro.

Imagem em destaque

1º de agosto de 2013. O Knight Capital Group abriu seu negócio comercial. Com mais de 1.400 funcionários, Knight era o maior negociador de ações dos EUA, com participação de mercado de 17,3% na NYSE e 16,9% na NASDAQ. Para qualquer corretor, trabalhar em um lugar como a Knight Capital seria um sonho.

Mas hoje não foi como qualquer outro dia. Às 9h00, quando a bolsa de valores de Nova Iorque abriu ao público, o primeiro investidor de retalho do dia deu uma instrução para interagir com o mercado. Apenas 45 minutos depois, o software da Knight Capital havia executado mais de 4 milhões de transações, perdendo a empresa US$ 460 milhões e deixando-a à beira da falência.

O que aconteceu? Como a maioria das catástrofes, foi uma infeliz cadeia de eventos, que teve a ver com código de computador. No dia anterior, a equipe de desenvolvimento lançou uma atualização em seu ambiente de produção. Superficialmente, nada grave, mas o bug não intencional que foi implantado foi uma bomba-relógio.

Os bugs podem variar de levemente irritantes a totalmente destrutivos. Às vezes, eles são vistos como uma peculiaridade de uma peça de tecnologia, da mesma forma que a comunidade JavaScript aceitou que sua abordagem bastante bizantina aos carros alegóricos faz parte de seu charme.

Outras vezes, os bugs podem ser devastadores, afetando milhões de usuários em todo o mundo. Um caso em questão é o Desastre Log4j que deixou a comunidade tecnológica em pé de guerra por semanas a fio.

Para quem não sabe, Log4j é um dos utilitários de registro baseados em Java mais populares do mercado. Foi encontrada uma exploração que permitia que terceiros executassem código remotamente em um computador alvo, permitindo-lhes roubar dados ou instalar malware.

Quão grande era o problema? Tecnologias Akamai relataram mais de 10 milhões de tentativas de explorar o bug por hora apenas nos EUA, considerando que empresas como Apple, Amazon e Twitter dependem do Log4j, você pode começar a ter uma ideia de quão sensível isso era.

Mas o que é um bug?

Um software erro é um erro ou falha computador software que faz com que ele produza um resultado incorreto ou inesperado ou se comporte de maneira não intencional. Ao contrário da crença popular, um bug não é necessariamente causado pela escrita de código incorreto (embora não possamos discordar de que essa seja uma das principais causas).

Considere por exemplo Orbitador Climático da NASA, o projeto de US$ 125 milhões que caiu e queimou na superfície de Marte. A razão? Uma parte do software calculou a força que os propulsores precisavam exercer em libras de força. Enquanto outro lia os dados presumindo que estavam no sistema métrico.

Isoladamente, cada pedaço de código estava fazendo o que pretendia. O problema foi uma falha de comunicação, os consultores de engenharia da Lockheed Martin Astronautics no Colorado analisaram os números, mas esqueceram de convertê-los para o sistema métrico. A NASA, por outro lado, presumiu que os cálculos eram em newtons por metro quadrado, pois era o padrão.

Outro exemplo, o bug da Knight Capital foi devido a algum código legado que nunca foi removido de seus sistemas, uma das flags que veio com a atualização acionou o código antigo, e fez o software que estava em um ambiente de testes, então tentou processar tantas operações quanto possível.

Em uma análise dos eventos, a investigação descobriu que a Knight Capital não tinha revisões formais de código ou um departamento de controle de qualidade para esse assunto. Em outras palavras, ninguém foi designado para verificar possíveis erros. Eles não tinham salvaguardas suficientes.

Infelizmente, os departamentos de controle de qualidade, a engenharia de DevOps, os testes de software e as revisões de código não são suficientes para evitar bugs. Na melhor das hipóteses, às vezes só conseguimos detectar bugs à medida que ocorrem na produção e tentar corrigi-los o mais rápido possível.

A perspectiva externa

O software é desenvolvido em um ambiente muito específico, entre ter que atender aos requisitos do usuário, trabalhar para cumprir um prazo, alinhar seu fluxo de trabalho com outros desenvolvedores e ter que responder a alterações de última hora, bugs podem passar despercebidos.

Como diz o ditado, a retrospectiva é 20/20, revisar o código após o fato é uma fera muito diferente do que fazê-lo sob pressão. Todo desenvolvedor de software revisou o código que fez no passado e percebeu que poderia ter feito melhor. Isso é fácil de dizer quando não são 4 da manhã e você tem 10 horas antes de ir para a produção.

Os usuários, por outro lado, interagem com nossos produtos em um ambiente diferente. Eles podem usá-lo quando quiserem, em sua própria plataforma. Como tal, não é incomum que os usuários encontrem bugs.

Para um usuário, os bugs podem variar de peculiares a totalmente frustrantes, mas e se houver uma maneira de os bugs beneficiarem os usuários, a comunidade de codificação e a nós mesmos?

Entre em programas de recompensa por bugs

Um programa de recompensas por bugs é um acordo oferecido por muitos sites, organizações e desenvolvedores de software pelo qual os indivíduos podem receber reconhecimento e compensação por relatar bugs, especialmente aqueles relacionados a explorações de segurança.

Bug Bounty é extremamente popular e é usado por algumas das maiores empresas de tecnologia do ramo, incluindo Twitter e Google. Até o governo dos EUA recompensa indivíduos que relatam vulnerabilidades de segurança em seus sites.

Dezenas de sites agregados mantêm uma lista de programas ativos de Bug Bounty e comunidades inteiras cresceram em torno deles. Por que eles são tão populares?

Bem, o desenvolvimento de software é um daqueles campos onde um milhão de mentes pensam melhor do que uma. Há um limite de testes que um desenvolvedor pode fazer por conta própria. Ao pedir ajuda à comunidade, usuários e programadores podem testar casos extremos em busca de possíveis bugs e explorações de segurança.

Ele incentiva as pessoas com conhecimento para ajudá-lo a proteger seu produto, em vez de explorar possíveis pontos fracos. É um esforço democrático para construir software melhor e mais seguro.

Na verdade, alguns jovens desenvolvedores conseguiram encontrar posições em empresas graças a programas de recompensas por bugs. Eles conseguiram mostrar em primeira mão seu talento e provar que entendem de programação, práticas de segurança e cultura de desenvolvimento de software.

Para uma empresa, configurar um programa de recompensas por bugs é relativamente fácil. Mais uma vez, existem dezenas de sites listando programas abertos e é apenas uma questão de publicar seu próprio projeto e também oferecer uma recompensa que se alinhe ao tamanho e escopo do seu negócio.

Basta dizer que os programas de recompensa por bugs não são controle de qualidade ou uma alternativa a algo como DevSecOps, é um programa que existe junto com suas próprias medidas de segurança. Todo o seu potencial só poderá ser explorado se já estivermos fazendo o nosso melhor para criar o melhor software possível.

Conteúdo Relacionado

Retour au blog

Laisser un commentaire

Veuillez noter que les commentaires doivent être approuvés avant d'être publiés.